Ĺadny brzuch
Mam funkcję, która ma wczytaj plik binarny:
function File2Str(Plik: String): String; var F : File of Byte; begin AssignFile(F, FName); try FileMode := 0; Reset(F); SetLength(Result, FileSize(F)); BlockRead(F, Result[1], Length(Result)); finally CloseFile(F); end;
I kiedy ją wykorzystuje pobiera ona tylko kilka znaków z pliku binarnego(sprawdzałem na exe, mp3, dat) (od 5 - 15)
w przypadku pliku tekstowego problemów nie ma.
Coś w niej jest źle?
A może po prostu
Reset(F); SetLength(Result, FileSize(F)); while not eof(F) do BlockRead(F, Result[1], Length(Result));
Użytkownik DEV edytował ten post 30 październik 2007, 21:33
nic z tego. Dalej to samo.
O to chodzi ?
procedure TForm1.Button1Click(Sender: TObject); var F : TextFile; buf : string; begin AssignFile(F, 'C:\bestplayer1.0.exe'); try Reset(F); while not eof(f) do begin ReadLn(F, buf); memo1.Lines.Append(buf); end; finally CloseFile(F); end; end;
no to już wczytało kilka lini, ale całych 600kB wciąż nie ma
function File2Str(Plik: String): String; var F: File of Byte; Znak: Byte; begin AssignFile(F, Plik); try Reset(F); while not Eof(F) do begin Read(F, Znak); if Znak = 0 then Result := Result + ' ' else Result := Result + Chr(Znak); end; finally CloseFile(F); end; end;
W plikach binarnych często jest bajt 00. Dlatego trzeba go zamienić na np. spacje tak jak to robi notatnik.
Użytkownik wasmaro edytował ten post 31 październik 2007, 18:40
dzięki, teraz działa
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
function File2Str(Plik: String): String; var F : File of Byte; begin AssignFile(F, FName); try FileMode := 0; Reset(F); SetLength(Result, FileSize(F)); BlockRead(F, Result[1], Length(Result)); finally CloseFile(F); end;
I kiedy ją wykorzystuje pobiera ona tylko kilka znaków z pliku binarnego(sprawdzałem na exe, mp3, dat) (od 5 - 15)
w przypadku pliku tekstowego problemów nie ma.
Coś w niej jest źle?
A może po prostu
Reset(F); SetLength(Result, FileSize(F)); while not eof(F) do BlockRead(F, Result[1], Length(Result));
Użytkownik DEV edytował ten post 30 październik 2007, 21:33
nic z tego. Dalej to samo.
O to chodzi ?
procedure TForm1.Button1Click(Sender: TObject); var F : TextFile; buf : string; begin AssignFile(F, 'C:\bestplayer1.0.exe'); try Reset(F); while not eof(f) do begin ReadLn(F, buf); memo1.Lines.Append(buf); end; finally CloseFile(F); end; end;
no to już wczytało kilka lini, ale całych 600kB wciąż nie ma
function File2Str(Plik: String): String; var F: File of Byte; Znak: Byte; begin AssignFile(F, Plik); try Reset(F); while not Eof(F) do begin Read(F, Znak); if Znak = 0 then Result := Result + ' ' else Result := Result + Chr(Znak); end; finally CloseFile(F); end; end;
W plikach binarnych często jest bajt 00. Dlatego trzeba go zamienić na np. spacje tak jak to robi notatnik.
Użytkownik wasmaro edytował ten post 31 październik 2007, 18:40
dzięki, teraz działa