Lazarusban hogyan olvashatok be több számot egy edit boxból?
Közben rájöttem hogy hülyeséget írtam, majd találtam egy ilyet:
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?
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:
A kapott stringlista elemeit meg valóban StrToInttel átalakítva bepakolhatod a tömbödbe. De használható a hagyományos Val() is.
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;
"É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.
Az én próbaprogramom így néz ki:
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ó:
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.
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!