Also ich habe noch ein tutorial gefunden dort wird dieser Code gezeigt
Delphi-Quellcode:
procedure OpenArchivFile(ArchivName: string; var ArchivFile: ArchivTyp);
var I, q: Integer;
Size: LongInt;
AktPos: integer;
s: string;
SSize: byte; // Länge des Strings
begin
ArchivFile.FileStart:=TStringList.Create;
ArchivFile.FileNames:=TStringList.Create;
if not FileExists(ArchivName) then Exit;
AssignFile(ArchivFile.ArchivFile, ArchivName);
ReSet(ArchivFile.ArchivFile,1);
{ Erste Datei }
BlockRead(ArchivFile.ArchivFile, SSize, SizeOf(SSize));
// zuerst wird ausgelesen, wie groß der Dateiname ist
SetLength(s,SSize);
// dann wird S diese Länge zugewiesen
BlockRead(ArchivFile.ArchivFile,s[1],SSize);
// anschließend kann der Dateiname aus der Archivdatei
// ausgelesen werden.
BlockRead(ArchivFile.ArchivFile,Size,SizeOf(Size));
// die Größe der Datei
ArchivFile.FileNames.Add(s);
// der Dateiname
ArchivFile.FileStart.Add(IntToStr(SSize+SizeOf(SSize)+SizeOf(Size)));
// wo beginnen die Daten der ersten Datei?
AktPos:=SSize+SizeOf(SSize)+SizeOf(Size)+size;
// an welcher Stelle in der Archivdatei befinden wir uns gerade:
// am Anfang der 2. Datei (+size)
z.B : BlockRead(ArchivFile.ArchivFile, SSize, SizeOf(SSize));
der müsste doch dann einen Block lesen der EIN Byte groß ist oder ?!
Ich glaube ich komme nicht dahinter