Kezdőoldal » Számítástechnika » Programozás » Mi ez a bug c# konzol alkalmaz...

Mi ez a bug c# konzol alkalmazások esetében?

Figyelt kérdés

Linuxra készítek egy programot monoval, c#-ban.


Beleütköztem egy hibába amit nem tudok nagyon hová tenni.


Szóval a lényeg, hogy jó pár sor szöveget kiírok a konzolra, utána bekérek egy stringet.

És a probléma ott kezdődik, hogy ha átméretezem a terminált és lenyomom a backspace-t, ahelyett hogy törölne egy karaktert, ahelyett feljebb ugrik a kurzor a már meglévő szövegekhez, és onnan töröl egy karaktert.


Szemléltetés céljából.


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

{

Console.WriteLine("fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");


}


Console.ReadLine();


Átméretezem a konzolt egy nagyobb méretre, (úgy hogy konzol y tengelye legyen nagyobb) elkezdek beírni valamit,

lenyomom a backspace-t és felugrik pár sort (ez is változó hogy mennyit ugrik fel) és onnan törli a karaktert.



Úgy vettem észre, hogy a probléma akkor jön elő, amikor a konzolnak új mérete lesz, anélkül hogy a felhasználó entert nyomott volna elötte. Ha átméretezem a konzolt, nyomok egy entert, akkor már nem jön elő a probléma. Viszont ha újra átméretezem a konzolt, de nem nyomok entert akkor ugyan úgy elő jön a hiba.


Nem értem a problémát, még nem találkoztam ilyennel, van valami ötletetek? Windows-on nem tapasztaltam ilyen probléma.



2019. máj. 25. 17:36
1 2
 11/13 anonim ***** válasza:

#3: Az igazság az, hogy rendszergazdaként dolgozom és az általad említett jelenséggel más programoknál is rendszeresen szoktam találkozni mikor ssh-n mókolok, ezért írtam, hogy ez nem c# bug. :) Viszont más programok teljesen jól lekezelik a terminál ablak átméretezését, ezért biztosan megoldható valahogy, csak nem tudom hogyan.


De lehet félreértelek és nem is arról van szó, amire gondolok. Ha minden igaz, akkor backspace után visszaugrik a kurzor és ahogy törölsz a mögötte lévő szövegrészek ottmaradnak, igaz? Viszont, ha entert nyomsz (és ez valami bemenő karaktersorozat volt), akkor elvileg azt kell látod, hogy valójában a végéből törölt, jól mondom?

2019. máj. 26. 15:00
Hasznos számodra ez a válasz?
 12/13 A kérdező kommentje:

Nem, nálam más a hiba.


Nálam így néz ki a dolog:

Ki van írva a terminálra pár szöveg, ahogy észre vettem ezeknek a mennyisége is összefüggésben tud lenni a hibával.

Utána bekér egy parancsot a program. Ha úgy ütöd le a backspace-t, hogy nincs beírva semmi sem a konzolba, akkor nem történik semmi értelemszerűen. Ha azonban bármilyen karaktert(eket) beírtál, és utána ütöd le a backspace-t, akkor gyakorlatilag jó helyről kezdi el kitörölni a karaktereket, csak éppenséggel nem abból a sorból ahol van a kurzor, hanem az a fölöttiekből.


Szóval így néz ki eredetileg:


**Szöveg kiírva a konzolra**

**Szöveg kiírva a konzolra**

**Szöveg kiírva a konzolra**

**Szöveg kiírva a konzolra**

Írjon be egy parancsot:(itt van a kurzor)


És ha beírok valamit, mondjuk azt hogy "parancs", és utána elkezdem kitörölni, akkor ez lesz az eredménye:



**Szöveg kiírva a konzolra bla bla bla bla**

**Szöveg kiírva a konzolra bla bla bla bla**

**Szöveg kiírva a konzo bla bla bla** <= innen törölte ki

**Szöveg kiírva a konzolra bla bla bla bla**

Írjon be egy parancsot:parancs


Itt képletesen a parancs szót próbáltam kitörölni, de a szóban lévő 7 karaktert nem onnan törölte ki ahol eredetileg volt a kurzor, vagyis a parancs szó után, hanem felugrott pár sort (ez is változó hogy mennyi ugrik fel) és onnan kezdte el kitörölni a szöveget.


Érdekes hogy ha a terminál magasságát nem állítom, csak a szélességét, akkor nem jön elő a hiba. Illetve ha nyomok egy entert, miután átméreteztem a konzolt akkor sem jön elő a hiba. És azzal is összefüggésben van hogy mennyi szöveg van eredetileg kiírva a konzolra.

Ha nincs kiírva semmi sem, vagy maximum 3-4 sor, akkor sem jön elő a hiba.


**csak egy sor szöveg**

Írjon be egy parancsot:parancs <= most jó helyről fogja kitörölni a szöveget, nem fog elugrani a kurzor.


Amúgy ez a dolog azért is idegesítő, mert a kurzort fel-le alapból sem tudná az ember mozgatni ugye, csak enter lenyomásával ugrana lejjebb eggyel a kurzor.

2019. máj. 26. 18:03
 13/13 anonim ***** válasza:

80:24-re van alapértelmezetten a terminál, esetleg console.setcursoral oda vissza tudod helyezni.

Nekem is sikerült megcsinálni amit itt irtàl, valamiért elveszti a kurzor a pozicióját, amúgy ha nem méretezgeted akkor jó lesz.

beállítod nagyobb értékekre az sorok oszlopok számát.

2019. máj. 27. 07:57
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!