Kezdőoldal » Számítástechnika » Programozás » Lazarusban hogyan olvashatok...

Lazarusban hogyan olvashatok be több számot egy edit boxból?

Figyelt kérdés
Lényegében annyit szeretnék hogy egy edit boxba beírom például hogy "3 4 5 2 6 3 7" és ezeket ahogy szóközzel elválasztottam, úgy rakja be egy tömbbe külön számokként. Tehet jelenesetben a tömb első eleme 3, második eleme 4 stb..

2017. máj. 12. 21:13
1 2 3
 1/21 anonim ***** válasza:
Egy ciklussal feldarabolod a stringet. Ebben mi a nehéz?
2017. máj. 12. 21:21
Hasznos számodra ez a válasz?
 2/21 A kérdező kommentje:
Szóval elindítok egy ciklust ami egészen addig teszi egyenlővé a tömb elemeit az edit box-szal, amíg az edit box egyenlő nem lesz ' ' (szóközzel). Igaz?
2017. máj. 12. 21:33
 3/21 A kérdező kommentje:

Közben rájöttem hogy hülyeséget írtam, majd találtam egy ilyet:

[link]


De nem tudom értelmezni a dolgot.. Például mi az az '1' ebben a sorban "array[i] = copy(string, i, 1);"?

És ha én byte típusú tömbbel dolgoznék, akkor csak egy StrToInt-et kell használnom még?

2017. máj. 12. 21:51
 4/21 tabaki ***** válasza:
100%

Az az egyes csak azt jelenti, hogy csak 1 karakter hosszan akarod bemásolni a stringet. De erre fölösleges a Copy(), mert megteheted így is:

array[i] := string[i];

De ez még messze van a problémád megoldásától, legföljebb egy részlete, ha nagyon fapadosan oldod meg. A stringek darabolásának van kényelmesebb módszere, ha már a StackOwerflowon bóklászol, nézd meg például ezt:

[link]

A kapott stringlista elemeit meg valóban StrToInttel átalakítva bepakolhatod a tömbödbe. De használható a hagyományos Val() is.

2017. máj. 12. 22:44
Hasznos számodra ez a válasz?
 5/21 tabaki ***** válasza:
Egyébként, jut eszembe, csak egy számjegyű számokra kell szétválasztanod? Mert akkor van egyszerűbb módszer is, és a szóközök is fölöslegesek.
2017. máj. 12. 22:50
Hasznos számodra ez a válasz?
 6/21 A kérdező kommentje:
Igen, csak egyjegyű számok kerülnek a boxba.
2017. máj. 12. 23:01
 7/21 tabaki ***** válasza:

Vigyázat, a gyors válasz érdekében egyelőre súlyosan sebezhető válasz következik!

Egy 10 elemű statikus tömbbe olvasom be a kötelezően 10 karakteres, szóközöket nem tartalmazó, garantáltan számjegyekből álló stringben kapott értékeket:


procedure TForm1.Button1Click(Sender: TObject);

begin

for i := 1 to Length(Edit1.Text) do

tomb[i] := Ord(Edit1.Text[i]) - 48;

end;

2017. máj. 12. 23:23
Hasznos számodra ez a válasz?
 8/21 A kérdező kommentje:
És ha nem 10 számot szeretnék beolvasni vele? Na és mi az a "-48"?
2017. máj. 12. 23:33
 9/21 tabaki ***** válasza:

"És ha nem 10 számot szeretnék beolvasni vele?"

Akkor más méretű tömböt adsz meg... de nem ez a megoldás, hanem a dinamikus tömb. Már elkészült az a változat is, de az bonyolultabb, mindjárt fölteszem valahová.


"Na és mi az a "-48"?"

Először is, mi az az Ord()? Ha átgondolod, a -48-ra is rá fogsz jönni.

2017. máj. 13. 00:01
Hasznos számodra ez a válasz?
 10/21 tabaki ***** válasza:

Az én próbaprogramom így néz ki:

[link]

A szövegdobozon és az okézógombon kívül raktam még bele egy Memót is, abba írja ki a tömbbe olvasott értékeket, hogy ellenőrizhesd. Az elemeknek meghagytam a Lazarus által felkínált nevét, hogy könnyen leutánozhasd (tehát Form1, Memo1, Edit1, Button1).


A unit kódja itt található:

[link]


Most már írhatsz akármennyi számjegyet, mert akkora lesz a tömb, amekkora kell. Ha akarod, tagolhatod a szöveget bármilyen egyéb karakterekkel, mert csak a számjegyeket veszi figyelembe a megadott halmaz alapján.

2017. máj. 13. 00:21
Hasznos számodra ez a válasz?
1 2 3

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!