[Delphi] rozmiar tablic dynamicznych - dziwny problem

0

Mam taki bufor:

var
Form1: TForm1;
bufor: array of byte;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
setlength(bufor,1000);
end;

i już na tej tablicy cos sie knoci bo rozmiar bufora nie rowna sie 1000 tylko 4 ... co jest grane??

0

jak sie moze rownac 4 skoro pisze 1000?
sprawdz w debugerze....
a jaki blad sie pojawia....co z tym pozniej robisz?

0

pozniej leci taka procedurka

procedure TForm1.Button2Click(Sender: TObject);
var
i,poczatek:integer;
dane: string;
begin
poczatek:=strtoint(edit2.text);
dane:= memo1.text;
for i:=poczatek to poczatek-1+length(dane) do
begin
bufor[i]:= ord(dane[i-poczatek+1]);
end;
end;

gdzie zapisuje zawartosc memo1 do tego bufora z tym ze z określonym wczesniej miejscem początku zapisu w buforze

następnie odczytuję zawartość bufora aby sprawdzić co w nim jest:

procedure TForm1.Button8Click(Sender: TObject);
var
i:integer;
dane:string;
odczyt:byte;
begin
dane:='';
for i:=1 to sizeof(bufor) do begin
odczyt:=bufor[i];
dane:=dane+chr(odczyt);
end;
memo1.text:=dane;
end;

i pojawiają się tylko 4 pierwsze literki !!! Co to jest??

0

carlos , sizeof(bufor) to jest wielkosc adresu (dla tego typu zmiennych) czyli 32 bity czyli 4 bajty wiec nie dziwne ze tyle wychodzi , a Tobie chodzi o length(bufor). Jelsi dales wczesniej setlength(bufor,1000) to z pwenoscia length(bufor) zwroci 1000.

0

dzięki teraz działa :]

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