prosze o pomoc w wyjaśnieniu mi używania procedurki val prosze o szybką odpowiedź ważne
O ile chodi o tom samom procedurke to chyba :
Val (s :string, n :Integer, k :Integer);
s : co ma przetworzyc;
n : gdie ma zwrocic wartosc;
k : zmienna kontrolna, tak sobie, ja osobiscie nie uzywalem nigdy...
np
kce miec w zmiennej Ilosc wartosc z edita:
var
s :string;
n,k :Integer;
W programie :
s:=Edit1.Text;
Val(s,n,k);
I już...
Ale moge sie mylic...--Delphi 4
Skysh The God, Your Slave
Poprawka, oczywiscie jeszcze linia:
Ilosc:=n;--Delphi 4
Skysh The God, Your Slave
Ray Lischner w Delphi.Almanach poleca uzywanie funcji z SysUtils (np StrToInt, StrToFloat) zamiast Val bo Val olewa ustawienia separatora dziesietnego Windy. Z drugiej strony (to moje zdanie) funcje z SysUtils wywala sie jesli w Stringu bedzie nieliczba, a Val nie - tylko w k bedzie pozycja w s na ktorej cos sie nie zgodzilo. --Pawel
Delphi6
Nio wlasnie. StrToInt, ale jak nie int to caly program poleci. Zwykle nie interesuje nas, gdie sie wywalilo, ale lepiej zeby sie nie wywalalo. Val zwraca zero i jest po klopocie.--Delphi 4
Skysh The God, Your Slave
Mozna sprawdzic przedtem czy int. To troche zachodu, ale pare razy spotkalem programy ktore sie wywalaly bo nie sprawdzaly separatora. Bardzo mnie to wkurzalo, a moj komp jest dobrym testem bo mam ustawienia na Polske ale separator kropke. Z trzeciej strony mozna uzyc Val, a jak bedzie niezero to skontrolowac czy sie aby nie wywalilo na kropce/przecinku i jesli tak, to podmienic i sprobowac znow. Ale znowu w niektorych ustawieniach jest nie tylko separator dziesietny ale i separator tysiecy. Ogolnie zawsze jest skomplikowanie. Gdzie te czasy wczesnego DOSa albo ZX Spectrum, gdzie byla kropka i koniec dyskusji...--Pawel
Delphi6
jest jeszcze oczywiscie funkcja StrToIntDef ktora ma dwie wartosci text i integer i gdy nie mozna skonwertowac stringa na integera to jako wynik przypisuje wartosc drugiego parametru czyli integera :)--Zuk