Witam, przeszukalem 4p (i na googlach troche)ale nie znalazlem nic co by mi pomoglo.
Otoz mam taki zmienny rekord, wskaznik do niego i tablice dynamiczna tych wsk:
TRecZmienna = record
Nazwa : String[255] ;
Zakres : Integer ;
case Rodzaj : Byte of
0 : (WartoscI : Integer) ;
1 : (WartoscR : Real) ;
2 : (WartoscS : String[255]) ;
end ;
PRecZmienna = ^TRecZmienna ;
var
zmienne : array of ^PRecZmienna ;
i mam funkcje, ktora powieksz mi owa tablice:
function TInterpreter.DodajZmienna(RodzajZ : Integer ; NazwaZ : String) : Boolean ;
var
i : Integer ;
begin
Result := true ;
if zmienne = nil then SetLength(zmienne , 1)
else SetLength(zmienne , High(zmienne) + 2) ;
New(zmienne[High(zmienne)]) ;
zmienne[High(zmienne)]^.Nazwa := NazwaZ ;
zmienne[High(zmienne)]^.Rodzaj := RodzajZ ;
WpiszWartosc(zmienne[High(zmienne)]^) ;
end ;
I teraz mam taki problem, ze zamiast w Nazwa pojawiac sie tekst z NazwaZ sa jakies krzaki i inne rzeczy, a nie moj tekst. Kumpel mi powiedzial, ze musze dac FillChar dla calego nowo tworzonego rekordu, wstawilem:
FillChar(zmienne[High(zmienne)]^ , SizeOf(zmienne[High(zmienne)]^) , 0) ;
zaraz po New, ale teraz jest AV(debuggerem sprawdzilem, ze w linijce, w ktorej do Nazwa chce wpisac NazwaZ), probowlem roznych kombinacji, samego FillChar dla Nazwa i roznyuch innych mniej lub bardziej dziwnych sposobow :P ale nic nie pomoglo. Co w takim razie zrobic zeby poprawnie dzialalo, nie bylo AV'ow i teskt w Nazwa byl taki jak NazwaZ?