« Integer és a TEdit »

Aki Delphiben kódol, az tudja, hogy van az úgynevezett TEdit komponens, ami a közönséges beviteli mező (mint HTML esetében az <input> tag). Tegyük fel, hogy két mezőben található számokat össze akarunk adni, és az eredményt egy TLabelen ki akarjuk jelezni. Ekkor ugye deklarálunk két változót, melyek most például integer típusúak (-2147483648 ... 2147483647 tartományban), és mondjuk egy gomb megnyomására összeadja a két számot, mondjuk így:
Procedure Osszeadas(Sender: TObject);
Var a,b : integer; //itt deklaráljuk ugye;
Begin
  a := Edit1.Value;
  b := Edit2.Value;
  Label1.Caption := a + b;
End;
Ennyivel készen is lennénk, ám fordításkor kapunk egy ilyen hibaüzenetet:
[Error]: Fatal error, incompatible types, string and integer.
Ilyenkor két megoldás lehetséges, az egyik, hogy a TEdit komponens helyett a TSpinEditet használjuk, ami alapból integer típussal dolgozik, de ez csúnya. Helyette csináljuk azt, hogy a két beviteli mezőből kapott string típusú értéket integerré alakítjuk. Ebben az esetben ennyivel módosítjuk az előző kódot:
...
  a := StrToInt(Edit1.Value);
  b := StrToInt(Edit2.Value);
...
Szépen kapunk két integert, és ezeket bátran összeadhatjuk, szorozhatjuk, oszthatjuk, és így tovább. Persze, másnak ez egyértelmű, de nekem (a PHP után) kicsit szokatlan, hogy típusokra figyelni kell.

Kilenc bejegyzés egy nap, hmm. Lehet tényleg nőhiányom van. :D

Kommentek RSS ikon
A bejegyzéshez érkezett kommentek, amiket RSS csatornán is követhetsz.
Ez igaziból úgy van, hogy:

Procedure Osszeadas(Sender: TObject);
Var a,b : integer; //itt deklaráljuk ugye;
hiba : boolean;
Begin
hiba:=false;
try a := StrToInt(Edit1.Text);
except on EConvertError do begin
(* ide lehet azt írni, hogy mi van, ha nem tud konvertálni*)
hiba:=true;
end;
end;
try b := StrToInt(Edit2.Text);
except on EConvertError do begin
(* ide lehet azt írni, hogy mi van, ha nem tud konvertálni*)
hiba:=true;
end;
end;
if (not hiba) then Label1.Caption := IntToStr(a+b)
else Label1.Caption := 'Nem sikerült a műveletet elvégezni.';
End;

Az if utáni zárójelezés egyébként nem kötelező, de javaslom mindenkinek. Ez a PHP szintaxis miatt van így nálam, de szerintem átláthatóbbá teszi a forrást is.
És biztos működik az is, amit mefi írt ;) Ez a verzió azonban minden Delphivel megy nem csak a 7-estől… A 6-os Delphiben ugyanis ég a TEdit-nek nem volt Value értéke. Ott kénytelenek voltunk ezt használni.
Szerintem a nőhiányhoz két dolog kell, vagy-kapcsolatban:
1. leszbikus legyél, de ahhoz neked is nőnek kellene lenned, ez a feltétel kilőve
2. heteroszexuális legyél, de ez nálad ismét kilőve, buzikám.

Én amúgy php esetén is figyelni szoktam a típusokra, nem szeretem a szezont a fazonnal keverni.
Figyelni kell, de tudtommal a PHP 4. valahanyadik verziójától automatikusan működik a típusválasztás.

$a = 3; //integer
$b = „3”;//string

És nem vagyok a buzikád. ;]
Amúgy PHP 3-tól automata a típuskonverzió…
mefi: szerencsére. Prostikkal nem kezdek. ;]
Ha prosti lennék, nem tudnál megfizetni. ;]
Ingyenkurvára mindenkinek
fussa
. ;)
De én nem lennék ingyenkurva. ;]
Tolsz egy StringToInt függvényt, akkor minden jó lesz.
Jah látom Devilll is ezt írta. Mindegy, reggel van :D
Igen, ezt írtam én is. :)
Nekem nagyon idegennek tűnnek ezek a szigorúan típusos nyelvek a PHP után, pedig programoztam 1-1,5 évet pascalban. Most, hogy a suliban a nyakunkon van a C++ kicsit sikerül visszaszokni, de hosszú távon nem tudnám elviselni.
Nem olyan durva. Könnyű megszokni, meg kevés a kötöttség is.
Igen, eléggé kényelmetlen, mert mindenhez segédváltozót kell definiálni, vagy átkonvertálni.
Szerintem sokkal biztonságosabb egy típusos nyelv. Ha a php típusos lenne, akkor nem kéne tartani a különböző GET és POST injection-öktől sem.
Biztonságosabbnak lehet, hogy biztonságosabb, de én kényelmesebbnek tartom a POST és a GET tömbök használatát.
Új komment

Itt az adott bejegyzésben elhangzottakhoz szólhatsz hozzá. Ha primitív, csúnya, vagy bunkó erkölcsről teszel tanúbizonyságot, tuti, hogy kimoderállak és rosszat mondok rólad. A hozzászólás nem kötelező, amit írsz vállald föl!

Ezeket az adatokat - ha a böngésződ kezeli a kukikat - csak egyszer kell megadnod, később módosíthatod.

Ha van gravatarod - és a gravataros e-mail-címeddel kommentálsz -, akkor az megjelenik. Ha nincs, vagy nem tudod miaz, akkor olvasd el az útmutatót és regisztrálj.

Neved: E-mail címed (nem jelenik meg): Webszájtod (ha van): Kommented: Mennyi négy és öt összege?
Ez védelmi célokat szolgál, szimplán írd be a fenti összeadás összegét!

A kommentedet írhatod nagyobb mezőbe vagy akár formázhatod is, de ha nem szalonképes, akkor moderálom!

Ajánló
Ebben a témában, esetleg ezen a napon voltak még ilyenek is:

G3 Torrent (2007. január 02., 03:09:14)
Foobar2000 (2007. április 13., 05:42:46)
HDTV (2007. március 31., 07:30:13)

Érdekességek
Száraz számok, pusztán csak tények:

Ez a bejegyzés 2173 napja született, 322 szóból, és 1824 karakterből áll. Ajánlhatod bizonyos linkgyűjtő oldalaknak: