Pedros, help do Delphi jest calkiem niezly i mozna sie z niego mnostwo nauczyc.
AmtTransferred jest opcjonalna zmienna w ktorej funkcja zwraca liczbe odczytanych rekordow.
Jesli nie uzyjesz tej zmiennej i sprobujesz odczytac wiecej rekordow niz jest w pliku, dostaniesz blad.
Jesli uzyjesz, nie bedzie bledu, odczyta tyle rekordow ile sie da i zwroci liczbe w AmtTransferred. Mozna to w bardzo prosty sposob wykorzystac do kopiowania plikow
var
Bufor : string;
F, G : file;
transfer : integer;
begin
AssignFile(F,'nazwa.ext');
Reset (F,1);
AssignFile(G,'docelowy.ext');
Rewrite(G,1);
SetLength(Bufor, 4096);*kopiowanie w paczkach po 4K
repeat
BlockRead(F,Bufor[1],SizeOf(Bufor),Transfer);
BlockWrite(G,Bufor[1],Transfer);
until Transfer=0;
CloseFile(F);
CloseFile(G);
end;
innym dobrym zastosowaniem BlockRead jest szybkie ladowanie duzych tablic
np.
type TDane =packed record
Nazwa: string[32];
Liczba: LongWord;
end;
*LongWord a nie Cardinal i packed record dla kompatybilnosci
type TTablicaDanych=array of TDane;
var
KupaDanych: TTablicaDanych;
F: file of TDane;
begin
AssignFile(F,'zbior_z_danymi.dat');
Reset(F);
SetLength(KupaDanych,FileSize(F));
BlockRead(F,KupaDanych[0],FileSize(F));
CloseFile(F);
i tu uzywasz tablicy
zwroc uwage, ze jesli buforem jest dlugi lancuch lub tablica dynamiczna, to trzeba podac indeks (jesli poczatkowy, to 1 dla lancucha, 0 dla tablicy)
--Pawel {Delphi 6 Personal}
Po pierwsze: naciśnij F1