Keresés

Részletes keresés

Öregfiú56 Creative Commons License 2023.07.06 0 0 1113

Sziasztok,

C# alapokat ismerem, de nem komoly a tudásom. Van egy kis programom, ami szépen fut, csv adatfájlokat kezel.

Ahogy nő az adatfájl mérete, egyszercsak elérem az "out of memory exception problémát. Valahol olvastam, hogy C# csak kb. 2GB-ig kezeli alapból a RAM-ot, de valahogy be lehet állítani, hogy nagyobbat tudjon használni.

RAM-om van sok, de fogalmam sincs, hogyan kell azt kezelni C#-ban.

Ha tényleg lehet ezen állítani, és valaki tud ebben segíteni, annak nagyon tudnék örülni.

Előre is köszi

 

kaszakasza Creative Commons License 2020.05.21 0 0 1112

Sziasztok lenne egy feladat ami nem tudok megoldani esetleg , valaki aki átlátja és leirná a megoldását megköszöném

 A feladat-Generáld le backtracking módszert használva az összes 3 betűs szavakat a {a, t, f, e, g} halmazból, úgy hogy két magánhangzó ne legyen egymás mellett.

 én eddig jutottam el :)

// C# program to print all
// permutations of a given string.
using System;

class GFG
{
/**
* permutation function
* @param str string to
calculate permutation for
* @param l starting index
* @param r end index
*/
private static void permute(String str,
int l, int r)
{
if (l == r)
Console.WriteLine(str);
else
{
for (int i = l; i <= r; i++)
{
str = swap(str, l, i);
permute(str, l + 1, r);
str = swap(str, l, i);
}
}
}

/**
* Swap Characters at position
* @param a string value
* @param i position 1
* @param j position 2
* @return swapped string
*/
public static String swap(String a,
int i, int j)
{
char temp;
char[] charArray = a.ToCharArray();
temp = charArray[i];
charArray[i] = charArray[j];
charArray[j] = temp;
string s = new string(charArray);
return s;
}

// Driver Code
public static void Main()
{
String str = "atfegaaa";
int n = str.Length;
permute(str, 0, n - 1);
}
}

// This code is contributed by mits

Törölt nick Creative Commons License 2020.05.16 0 0 1111
Előzmény: Riky81 (1108)
pimre Creative Commons License 2020.05.08 0 0 1109

Ehhez már nem értek. C++-ban utoljára több mint 30 éve programoztam. Csak halvány emlék, hogy a képernyőmemória tartalma lehet a kulcs, de itt abba is hagyom, mielőtt hülyeségeket kezdek el írni.

Előzmény: Riky81 (1108)
Riky81 Creative Commons License 2020.05.08 0 0 1108

Tudom hogy vannak ilyen programok de egy másik program írásához kéne egy megoldás  

Ha van nyilt forráskodú is akadna akkor szivesen megnézném 

Nem a programra van szükségem hanem a forráskodra mert kicsit átalakítanám más célra kell 

ha volna valami ötlet honnan lehet kiolvasni a képernyöre vetitett  képet  .....  

Előzmény: pimre (1107)
pimre Creative Commons License 2020.05.08 0 0 1107

Ilyen program sok van már készen. Az én kedvencem a Faststone Capture, ami nagyon egyszerűen használható, ugyanakkor rendkívül sokoldalú.

 

Persze, ha ujjgyakorlatnak szánod a C# megismerésének részeként, akkor a válaszom okafogyott, és tekints el tőle

Előzmény: Riky81 (1106)
Riky81 Creative Commons License 2020.05.08 0 0 1106

Sziasztok 

Volna egy kérdésem 

Egy olyan kódot szeretnék írni ami a windows alatt tetszőleges darabot kimásol az asztal képernyőről bármi is legyen a képernyőn azt elmenti egy kép formátumba vagy hasonló 

Lényegében a szövegfelolvasó progik is valahogyan hozzáférnek a képernyő képéhez.

Nekem is valami ilyesmi kéne 

Uzer1 Creative Commons License 2019.09.07 0 0 1106

Sziasztook!!!

A Hengersor nevű suliba mennék esti teljesen ingyenes programozó / szoftverfejlesztő OKJ -s képzésre, de nem vagyunk elegen, hogy induljon a képzés. Ha valaki szeretne ingyen tanulni, mint én, akkor hívja fel a sulit telefonon, vagy írjon nekik e-mail-t, hogy esti szoftverfejlesztő OKJ -ra szeretne járni. Teljesen ingyenes. Köszi a többiek nevében is ha csatlakozol, vagy ha szólsz az ismerőseidnek, akiket esetleg érdekelhet a képzés. Sose késő :)

Üdv!

Törölt nick Creative Commons License 2019.05.18 0 0 1105

Írtatok már olyan programot, ami .doc vagy .xls fájlba tud írni?

NevemTeve Creative Commons License 2018.12.31 -1 0 1104

Biztos, hogy jó ötlet egy Windows-specifikus terméket erőltetni Linuxon?

Előzmény: Ren ault Artois (1103)
Ren ault Artois Creative Commons License 2018.12.31 0 0 1103

Látom nem nagyon pörög a topik. De azért lenne egy kérdésem, C#-hoz melyik a legalkalmasabb fordítóprogram Linuxra ? Jelenleg a Visual Studio Code-t használom, de nem vagyok elájulva tőle. Természetesen a szükséges bővítményeket felinstalláltam.

Törölt nick Creative Commons License 2017.10.31 0 0 1102

Igen.

Előzmény: egy hazafi (1101)
egy hazafi Creative Commons License 2017.10.30 0 0 1101

Köszönöm a választ; kipróbálom. Tehát a billentyűnyomást inkább a mainform-ban kezeljem, mint saját class-ban?

Előzmény: Törölt nick (1100)
Törölt nick Creative Commons License 2017.10.30 0 0 1100

Mert Invalidate() -et a Form osztályból örökli a MainForm osztályod. Lehet az, hogy a playernek átadod a Form-ot konstruktor időben, és eltárolod benne, majd azon hívod az invalidate-et, de inkább a MainForm-ban tárold el a playert fieldként, és ott döntsd el, hogy mikor kell invalidate-et hívni, mondjuk úgy, hogy a player booleant ad vissza a függvényeknél, ha frissíteni kell, akkor true-t. 

Előzmény: egy hazafi (1099)
egy hazafi Creative Commons License 2017.10.30 0 0 1099

És abban tudnátok segíteni-elmagyarázni, hogy az Invalidate függvény hívása miért nem működik egy saját, létrehozott Class-on belül? Most már létre tudom hozni objektumként a játékosnégyzetet, ki is tudom így rajzoltatni az osztályból, abban van az elmozdulás ellenőrzése is, de az Invalidate-et nem tudom benne használni, így az elmozdulás nem látszik.

Így néz ki a mainform-om:

 

using System; 
using System.Drawing; 
using System.Collections.Generic; 
using System.Windows.Forms; 

namespace teglalap 

    public partial class MainForm : Form 
    { 
       

       public MainForm() 
        { 
            InitializeComponent(); 
            player p1=new player(50,50);
            Paint += new PaintEventHandler(p1.rajzol); 
            KeyUp += new KeyEventHandler(p1.gombFel);
            KeyDown += new KeyEventHandler(p1.gombLe);
        }
        void MainFormLoad(object sender, EventArgs e)
        {
    
        }

    }

}

 

így pedig a class1 forráskódja:

 

using System;
using System.Drawing;
using System.Collections.Generic;
using System.Windows.Forms; 

namespace teglalap
{
    /// <summary>
    /// Description of Class1.
    /// </summary>
    public class player
    {
        protected int x=50;
        protected int y=50;
        protected Boolean jobbranyil=false;
        protected Boolean balranyil=false;
        protected Boolean felnyil=false;
        protected Boolean lenyil=false;
        
        public player()
        {
        }
        
        public player(int x, int y){
            this.x=x;
            this.x=y;
        }
        
        public void setHelyx(int x){
            this.x=x;
        }
        
        public int getHelyx(){
            return x;
        }
        
        public void setHelyy(int y){
            this.y=y;
        }
        
        public int getHelyy(){
            return y;
        }
        
        public void rajzol(object sender, System.Windows.Forms.PaintEventArgs e){
            SolidBrush blueBrush = new SolidBrush(Color.Blue);
            e.Graphics.FillRectangle(blueBrush,x,y,50,50);
            
            
        }
        
        public void gombLe(object sender, System.Windows.Forms.KeyEventArgs e){
            if (e.KeyCode==Keys.Left
            { 
                balranyil=true;
            } 
            if (e.KeyCode==Keys.Right
            { 
                jobbranyil=true
            } 
            if (e.KeyCode==Keys.Up
            { 
                felnyil=true
            } 
            if (e.KeyCode==Keys.Down
            { 
                lenyil=true
            }
            
            mozg(sender, e);
        }
        
        public void gombFel(object sender, System.Windows.Forms.KeyEventArgs e){
            
            if (e.KeyCode==Keys.Left
            { 
                balranyil=false;
                
            } 
            if (e.KeyCode==Keys.Right
            { 
                jobbranyil=false
            } 
            if (e.KeyCode==Keys.Up
            { 
                felnyil=false
            } 
            if (e.KeyCode==Keys.Down
            { 
                lenyil=false
            } 
            mozg(sender, e);
        }
        
        public void mozg(object sender, System.Windows.Forms.KeyEventArgs e){

            if (jobbranyil==true
            { 
                x=x+5;
            } 
            if (balranyil==true
            { 
                x=x-5;
            } 
            if (felnyil==true
            { 
                y=y-5;
            } 
            if (lenyil==true
            { 
                y=y+5;
            }
             Invalidate(); //De valamiért nem jó!!!
        }
    }
}

ZaphodBeeblebrox Creative Commons License 2017.10.26 0 0 1098

"vár egy kicsit és bejön a hiba (illetve bejött, de már megoldódott)." => erről ez jutott eszembe:

 

https://www.youtube.com/watch?v=E9wS7MMP4YQ

 

;)

Előzmény: egy hazafi (1097)
egy hazafi Creative Commons License 2017.10.24 0 0 1097

Nem, lenyomom a gombot, vár egy kicsit és bejön a hiba (illetve bejött, de már megoldódott).

Előzmény: NevemTeve (1096)
NevemTeve Creative Commons License 2017.10.24 0 0 1096

Nem-e lehet-e, hogy az első gombnyomásra jól lefut, és aztán mégegyszer lenyomtad a gombot?

 

Mert akkor már nem 10-elemű a tömb/lista. Influental Device kolléga mondta a jót:

 

                for (int i=jatekosok.Count-1; i>=0; i--) {
                    if (jatekosok[i].xhely>=100) {
                        jatekosok.RemoveAt(i);
                        Invalidate();
                    }
                }

Előzmény: egy hazafi (1086)
Törölt nick Creative Commons License 2017.10.24 0 0 1095

A ritka hiba épp elég. Ha eggyel mindig növeled az i-t, és ha törlöd az i-ik elemet, akkor az i-nél nagyobb indexű elemek indexe egyel csökken, így törléskor olyan, mintha kettővel növelnéd az i-t, így átugorsz egy elemet, amit lehet, hogy törölni kellene.

Előzmény: egy hazafi (1094)
egy hazafi Creative Commons License 2017.10.24 0 0 1094

Az tényleg jó a using System.Linq; beszúrásával. Köszönöm szépen! :-)

Az előzővel mi volt a gond? Látszólag szépen működött az is (a ritka hibát leszámítva).

Előzmény: Törölt nick (1092)
Törölt nick Creative Commons License 2017.10.24 0 0 1093

Tedd az elejére a:

 

using System.Linq;  -t

Előzmény: egy hazafi (1091)
Törölt nick Creative Commons License 2017.10.24 0 0 1092

Sajna az 1088-as hibás, az 1089-est nézd.

Előzmény: egy hazafi (1090)
egy hazafi Creative Commons License 2017.10.24 0 0 1091

Az nem jó, mert ezt a hibát kapom:

"„System.Collections.Generic.List<valami.jatekos>” nem tartalmazza a(z) „Where” metódus definícióját, és nem található olyan „Where” kiterjesztésmetódus, amely „System.Collections.Generic.List<valami.jatekos>” típusú első argumentumot fogad el (esetleg hiányzik egy „using” direktíva vagy egy szerelvényre mutató hivatkozás). (CS1061) "

Előzmény: Törölt nick (1089)
egy hazafi Creative Commons License 2017.10.24 0 0 1090

Igen, ez lett a megoldás; köszönöm szépen!

Ezzel viszont felbukkant egy érdekes hiba is: amikor a ciklusfej módosítása után futtatom a programot, kinn hagy egy, a feltételnek amúgy megfelelő (xhely>=100) négyzetet a képernyőn és ezt csak az Enter ismételt megnyomásával lehet eltüntetni. Ha ezek után módosítás nélkül többször futtatom a programot, ez a hiba nem jelentkezik (SharpDevelop-ot használok egyébként). :-/

Előzmény: Törölt nick (1088)
Törölt nick Creative Commons License 2017.10.24 0 0 1089

inkább valami ilyesmi kellene:

 

foreach(var item in jatekosok.Where(p=>p.xhely >= 100).ToArray()) {jatekosok.Remove(item);}

Előzmény: egy hazafi (1084)
Törölt nick Creative Commons License 2017.10.24 0 0 1088

for (int i=0;i<=9;i++)

 

helyett:

 

for (int i=0;i<jatekosok.Count;i++)

Előzmény: egy hazafi (1084)
pimre Creative Commons License 2017.10.24 0 0 1087

Biztos, hogy a for ciklusban az i>=0 kell? Nem lenne elég csak i>0?

Előzmény: NevemTeve (1085)
egy hazafi Creative Commons License 2017.10.24 0 0 1086

Kipróbáltam, de ugyanazt a hibát okozza. Lehet, hogy a ciklusváltozót kéne birizgálni a ciklusmagon belül?

Előzmény: NevemTeve (1085)
NevemTeve Creative Commons License 2017.10.23 0 0 1085

Amikor törölsz egyet, akkor már kevesebb, mint 10 eleme van a listának. Mondjuk csináld fordítva:

 

                for (int i=9; i>=0; i--) {
                    if (jatekosok[i].xhely>=100) {
                        jatekosok.RemoveAt(i);
                        Invalidate();
                    }
                }

Előzmény: egy hazafi (1084)
egy hazafi Creative Commons License 2017.10.23 0 0 1084

Sziasztok!

A következő probléma megoldásához keresek segítséget: kirajzolok 10 db négyzetet véletlen helyekre a programablakban, ezek a jatekos-ok. Enter lenyomására szeretném törölni ezek közül azokat, amelyek X koordinátája >= 100. Ezt a gombnyomas() függvény intézné, viszont amikor ez bekövetkezik, a következő hibaüzenetet kapom:

"System.ArgumentOutOfRangeException: Az index az engedélyezett tartományon kívül esett. Az index nem lehet negatív, és kisebbnek kell lennie a gyűjtemény méreténél."

Viszont amikor átírom a gombnyomas()-ban a for ciklus értékét 9 helyett 5-re, nem jelentkezik ez a hiba - viszont nyilván nem fut le az összes négyzeten a ciklus:

for (int i=0;i<=5;i++) ...

Mi lehet a baj és mi a megoldása?

Íme a teljes kód:

 

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace valami
{
    public class jatekos
    {
            public int xhely;
            public int yhely;
            public int szel;
            public int mag;
            public jatekos()
            {
                szel=50;
                mag=50;
            }
    }
    
    public partial class MainForm : Form
    {
        List<jatekos> jatekosok=new List<jatekos>();
        
        public MainForm()
        {
            InitializeComponent();
            Random vsz=new Random();
            for (int i=0;i<=9;i++)
            {
                jatekosok.Add(new jatekos() {xhely=vsz.Next(1,200),yhely=vsz.Next(1,200)});
            }
            Paint += new PaintEventHandler(Rajzol); 
            KeyDown += new KeyEventHandler(gombnyomas);
        }
        
        void Rajzol(object sender, PaintEventArgs e) 
        { 
            foreach (jatekos ujjatekos in jatekosok)
            {
                e.Graphics.FillRectangle(Brushes.BlueViolet,new Rectangle(ujjatekos.xhely,ujjatekos.yhely,ujjatekos.szel,ujjatekos.mag));
            }
        }
            
        void gombnyomas(object sender, KeyEventArgs e) 
        { 
            if (e.KeyCode==Keys.Enter
            { 
                for (int i=0;i<=9;i++) //Itt írom át a 9-et 5-re!
                {
                    if (jatekosok[i].xhely>=100)
                    {
                        jatekosok.RemoveAt(i);
                        Invalidate();
                    }
                }
            
            }
        }
    }
    
}

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!