Witam, chciałbym zrobić odczyt danych binarnych z pliku podając adres początkowy i wielkość pliku.
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.
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
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.
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.
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.