Home » Tutorials » Datenspeicherung » myArchiv

myArchiv

Datei auslesen

Nachdem die Archivdatei geöffnet wurde, müssen nur noch die entsprechenden Daten ausgelesen werden:

procedure ReadArchivFile(ArchivFile: ArchivTyp;
  newFile: String; Nummer: Integer);
var Size: LongInt;
  f: File;
  gelesen: LongInt;
  buffer: Array[1..40000] of byte;
   // auch hier wäre dynamischer Speicher besser
begin
  // Achtung, es erfolgt keine Prüfung, ob es eine Datei mit dem Index
  // "Nummer" überhaupt gibt. Der Index beginnt bei 0.

  Seek(ArchivFile.ArchivFile,StrToInt(ArchivFile.FileStart[nummer])-
  SizeOf(Size));
  // wur springen an den Anfang der gewünschten Datei
  BlockRead(ArchivFile.ArchivFile,Size,SizeOf(Size));
  AssignFile(f,newFile);
  ReWrite(f,1);
  gelesen:=0;
  while Gelesen<Size do
  begin
    if Size-Gelesen>40000 then
    begin
      BlockRead(ArchivFile.ArchivFile,Buffer,40000);
      BlockWrite(f,Buffer,40000);
      Inc(Gelesen,40000);
    end
    else begin
      BlockRead(ArchivFile.ArchivFile,Buffer,Size-Gelesen);
      BlockWrite(f,Buffer,Size-Gelesen);
      Gelesen:=Size;
    end;
  end;
  CloseFile(f);
end;