Jak rozpoznać typ danych

0

Witam.

Jak rozpoznać typ danych wprowadzanych do procedury lub funkcji
dekaracja,

Save ( nazwa : string ; var dane );

kompilator D7 kompuluje to poprawnie, przez zmiennej dane chciałbym wprowadzać np. boolean, integer, string lub tdate aby wykonać poprawnie procedurę, wewnątrz procedury muszę na wejściu rozpoznać typ zmiennej którą wprowadziłem do procedury

Z góry dziękuje za pomoc.

0
Jasio605 napisał(a)

Witam.

Jak rozpoznać typ danych wprowadzanych do procedury lub funkcji
dekaracja,

Save ( nazwa : string ; var dane );

kompilator D7 kompuluje to poprawnie, przez zmiennej dane chciałbym wprowadzać np. boolean, integer, string lub tdate aby wykonać poprawnie procedurę, wewnątrz procedury muszę na wejściu rozpoznać typ zmiennej którą wprowadziłem do procedury

Z góry dziękuje za pomoc.

Możesz zrobić kilka funkcji o tej samej nazwie ale o roznej zawartosci (tudziez roznym typom danych wprowadzanych) ale "opieczentowac klauzurą" override

0

Gdybym chciał zrobić kilka procedur to nikomu bym nie zawracał głowy.
Używam już czegoś takiego od dłuższego czasu i jest to bardzo wygone.
Mam jedną procedurą do zapisu record-ów na dysku która potrafi otworzyć jednocześnie nawet kilkanaście plików recordowy i radzi sobie z tym doskonale
ale niestety jeszcze nie udała mi się ta sztuczka z pojedyńczą zmienną o dowolnym typie i to nie daje mi spokoju.

0

Niestety nie da sie tego sprawdzic.

Ale wzamian polecam typ Variant. Mozesz podstawic cokolwiek i potem sprawdzasz typ poprzez:

if (VarType(zmienna_variantowa) = varString) then

Masz pytania pisz na GG ;)

Pozdrawiam Gothmog

0

Ślicznie dzięki. Działa.
Przedstawiam krótki przykład zastosowania;

var bool : boolean;
stri : string;
inte : integer;

procedure Save ( nazwa : string ; const dane : Variant );
begin
if VarType(dane) = varString then label25.Caption := dane ;
if VarType(dane) = varInteger then label25.Caption := IntToStr (dane);
if VarType(dane) = varBoolean then label25.Caption := BoolToStr(dane);
end;

 bool := false; Save ( 'test' , bool );
 stri :=    90; Save ( 'test' , stri );
 inte := 'txt'; Save ( 'test' , inte );

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