Kezdőoldal » Számítástechnika » Programozás » Grafikus képernyőn hogy...

Grafikus képernyőn hogy kérjem be az adatot? (FreePascal)

Figyelt kérdés

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);



2013. márc. 3. 21:57
1 2
 1/11 tabaki ***** válasza:

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.

2013. márc. 4. 03:24
Hasznos számodra ez a válasz?
 2/11 tabaki ***** válasza:

Ja, bocsi, i-t elfelejtettem növelni... tehát még a cikluson belül:

INC(I);

2013. márc. 4. 03:28
Hasznos számodra ez a válasz?
 3/11 ejbenjaro ***** válasza:

Szerintem ez helyett:

kutyak.nev:=readkey;

Használd ezt:

readln(kutyak.nev);

2013. márc. 4. 11:01
Hasznos számodra ez a válasz?
 4/11 tabaki ***** válasza:

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.

2013. márc. 4. 11:02
Hasznos számodra ez a válasz?
 5/11 tabaki ***** válasza:

@ 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.

2013. márc. 4. 13:00
Hasznos számodra ez a válasz?
 6/11 anonim válasza:

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;

2013. márc. 4. 15:34
Hasznos számodra ez a válasz?
 7/11 A kérdező kommentje:
Köszi tabaki sikerült megoldani. Nem tudom megkaptad e privátba a forrás kódot mert nem jelzi elküldöttnél. Ha nem akkor írj és elküldöm még egyszer.
2013. márc. 4. 19:31
 8/11 anonim ***** válasza:
Én egyszerű Edittel vagy SynEdittel bekéretném
2013. márc. 4. 20:00
Hasznos számodra ez a válasz?
 9/11 tabaki ***** válasza:
Egyelőre semmi...
2013. márc. 4. 20:44
Hasznos számodra ez a válasz?
 10/11 tabaki ***** válasza:

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.

2013. márc. 4. 22:17
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!