Zawalnianie zmiennej

0

Mam zmienną typu Extended która przypisuje się do Edit:

a:=strtoFloar(Edit1.text);

I teraz kiedy do Edit1 wpisze np: 5 to zmienna a ma wartość 5 ale kiedy wpisze np jakiś wyraz to chcę zeby zmienna a nie miała nic ani zera ani innej liczby.

Zupełnie tak jak by się ponownie uruchomiło program. Kiedy się <ort>włancza </ort>program pierwszy raz i wpisze się błędne dane Od razu to zmienna a jest niczym:

try
a:=strtoFloat(Edit1.text) // tu wpisuje np: q
except
// i tu sie zwalnia zmienna a próbowałem Free i Nil ale nic z tego

end;

Proszę o pomoc

0

// i tu sie zwalnia zmienna a próbowałem Free i nil ale nic z tego

i co ty tu zwalniasz? Z Twojego kodu wynika ze a jest typu single, double lub extended wieć jest zmienna statyczną i nie da się zwolnić jej pamięci. Jeśli bardzo chcesz moc kontrolowac to tak jak o tym piszesz to zastosuj wskaźnik

type pa=^real;
var 
a:pa;

//i teraz 

new(a); 
 try
a^:=strtoFloat(Edit1.text) // tu wpisuje np: q
except
dispose(a); a:=nil;
end;
0

a:=strtoFloat('') ;

0

chcę zeby zmienna a nie miała nic ani zera ani innej liczby.
Zupełnie tak jak by się ponownie uruchomiło program.

O ile wiem, po uruchomieniu programu zmiennej statycznej(nie łańcuchowi) są przypisywane jakieś wartości. Nie wiem, jak to ma się do zmiennych zmiennoprzecinkowych, ale tak jest jeśli chodzi np. o integer.

0

Po podłączeniu unitu Math można zmiennym zmiennoprzecinkowym przypisywać wartość Nan (not a number). Testuje się NIE przez porównanie, lecz funkcją IsNan

0

:) dzięki pq o taki efekt mi chodziło [browar]

1 użytkowników online, w tym zalogowanych: 0, gości: 1