Grafikus képernyőn hogy kérjem be az adatot? (FreePascal)
Tipusos file ba írja be be is írja csak az a baj hogy,
csak az utolsó karaktert rakja be ami az enter.
Pl.: beírom hogy morzsi leütöm az entert és akkor beírja az utolsó karaktert az entert.
Probáltam már azt is hogy ha entert üt akkor törölje ki az utolsó karaktert delete függvénnyel de akkor meg a repeat until nem teljesül.
repeat
outtextxy(1,1,'Kerem a kutya nevet:');
i:=i+10;
kutyak.nev:=readkey;
outtextxy(1+i,10,kutyak.nev);
until (kutyak.nev=#13);
Viccelsz? Kínosan ügyelsz rá, hogy kutyak.nev mindig csak azt az egyetlen karaktert tartalmazza, amelyet éppen leütöttél, és az utolsó az értelemszerűen az enter. Ha már ilyen kínos módszert választottál a beolvasásra (merthogy emlékeim szerint a grafikus képernyőn is van valami readln-nak megfelelő utasítás, egy másik változóba kéne gyűjtened a szöveget, nem? Most nem tudom kipróbálni, de hasonlóra gondolok:
...
KUTYA.NEV:=''; I:=10;
REPEAT
BE:=READKEY;
OUTTEXTXY(I, 10, BE);
KUTYA.NEV:=KUTYA.NEV+BE;
UNTIL (BE=#13);
OUTTEXTXY(10, 11, KUTYA.NEV);
Bocs, ha nem oké, az elv mindenesetre látható. Tableten kényelmetlen lenne javítgatnom, de egy gyengéje mindenképpen van, nevezetesen, hogy a sorvéget is hozzáírja a névhez. Emiatt vagy használj inkább WHILE-ciklust, vagy menet közben ellenőrizd, hogy Entert kaptál-e, és csak akkor írd a változóba illetve a képernyőre, ha nem.
Ja, bocsi, i-t elfelejtettem növelni... tehát még a cikluson belül:
INC(I);
Szerintem ez helyett:
kutyak.nev:=readkey;
Használd ezt:
readln(kutyak.nev);
Fuh, nem tett jót a stílusomnak meg a gondolatmenetemnek a hajnali fél négy... Jutottál valamire?
Kíváncsi volnék, mi fog ebből kikerekedni. Ha kész vagy, föltehetnéd valahová, vagy elküldhetnéd privátban.
@ ejbenjaro:
Gondolod, a grafikus képernyőn is működik a readln()?
Kétségtelen, hogy mégsem találtam meg az outtextxy() beolvasó párját, amelyre emlékezni véltem, de azt gondolnám, hogy egy köznapi readln() legföljebb a szöveges konzolra echóz, ez volna az értelme Kérdező megoldásának.
Sziasztok!
Jó a readln() függvény grafikus képernyőn is :) Annyi a titka, emlékeim szerint, hogy fent unitok felsorolásánál crt helyett wincrt-t írsz :)
Valahogy így:
Uses wincrt, graph;
Közben próbálgatom, hát jó nagy melléfogásokat csináltam, pl. az outtextxy()-t karakterpozícióként képzeltem el, de a lényeg tűrhető.
Nekem readln() csak a konzolablakban működik, egyébként a wincrt unit a dokumentáció szerint semmiféle új értelmezést nem ad neki.
Mi az az Edit meg a Synedit? Nem találtam meg, de nem akarok hülyén meghalni.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!