strumienie - odczyt

0

Kolejny dzis problem ze strumieniami :(
wczytuje plik do strumienia, ustawiam pozycje na 0, odczytuje naglowek ... i jest ok...
W naglowku jest zapisana dlugosc danych BEZ NAGŁÓWKA, czyli dlugosc danych nastepujacych po naglowku(zalozmy 7300 - tak mam na testowych danych)... Wiec probuje wczytac do zmiennej data:pointer przez stream.Read(data,header.DataLength) gdzie header.DataLength=7300... I wywala mi Access Violation! Sprawdzilem,
stream.Size = 7565,
SizeOf(header)=265,
stream.Position=265 (bo odczytalo juz naglowek),
stream.size-sizeOf(header) = 7300 = header.DataLength
wiec wszystkie dane liczbowe sie IMO zgadzaja... Nie kumam skad ten AV (moze nie powinienem wczytywac do Pointera?

0

Do pointera nie wczytasz wiecej niż 4 bajty. Te dane powinieneś chyba wczytać do pamięci?

var data:Pointer;
begin
//...
GetMem(p, header.DataLength);
stream.Read(data^, header.DataLength);
//...
FreeMem(data);
end;
0

[sciana] jak moglem tego nie zauwazyc !!! Dzieki!!!

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