Odczyt fragmentu pliku

0

Witam, chciałbym zrobić odczyt danych binarnych z pliku podając adres początkowy i wielkość pliku.

0

Naskrobałem sobie taki oto kod:

function Extract(i1,i2: integer):String;

var
  Stream: TFileStream;
  T: TStringStream;
  openfile: String;
  Buffer: array of byte;
begin
openfile:='C:\plik';
Stream := TFileStream.Create(openfile, fmOpenRead or fmShareDenyWrite);
T := TStringStream.Create('');
try
SetLength(Buffer,4096);
Stream.Read(Buffer[0],i1);
T.CopyFrom(Stream,i2);

finally
Result:=T.DataString;
T.Free;
Stream.Free;

end;
end;

Ale gnębi mnie jeszcze jedna rzecz z którą dzisiaj walczę, a mianowicie coś w stylu funkcji Copy tylko zamiast String kopiowanie fragmentu Stream.

1

to jest coś dziwnego

SetLength(Buffer,4096);
Stream.Read(Buffer[0],i1);
Stream.seek(i1, soFromBegining); //ustawienie się na pozycji i1 w pliku

kopiowanie fragmentu Stream.

nie mam pojęcia o co chodzi

0
Zimny Samiec napisał(a):

Ale gnębi mnie jeszcze jedna rzecz z którą dzisiaj walczę, a mianowicie coś w stylu funkcji Copy tylko zamiast String kopiowanie fragmentu Stream.

Myślę, że możesz to wykonać za pomocą metody TStream.CopyFrom.

0

Dobra jeden kamień milowy przeskoczony, teraz jeszcze jeden problem mianowicie wyodrębniam sobie interesującą treść do drugiego strumienia i chciałbym skonwertować go na hex, następnie na decimal.

0
Zimny Samiec napisał(a):

Dobra jeden kamień milowy przeskoczony, teraz jeszcze jeden problem mianowicie wyodrębniam sobie interesującą treść do drugiego strumienia i chciałbym skonwertować go na hex, następnie na decimal.

Poradziłem sobie, wystarczyło wytężyć zmysły.

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