procedure TMfa.Packe;
var
Datei:TStream;
i,len,Size:Integer;
DateiHeader:
String;
Test:TSearchRec;
CFTime, EFTime, RFTime:_FileTime;
DL:
String;
begin
Datei := TFileStream.Create(FileName, fmCreate);
Len:=Dateien.Count;
Datei.
Write(Len, SizeOf(Len));
for i:=0
to Dateien.Count-1
do begin
FindFirst(Dateien.Strings[i], faAnyFile,test);
FileTimeToLocalFileTime(test.FindData.ftCreationTime, CFTime);
FileTimeToLocalFileTime(test.FindData.ftLastWriteTime, EFTime);
FileTimeToLocalFileTime(test.FindData.ftLastAccessTime, RFTime);
DateiHeader:=Dateien.Strings[i] + '
;'
+ DateTimeToStr(FileTimeToDateTime(CFTime)) + '
;'
+ DateTimeToStr(FileTimeToDateTime(EFtime)) + '
;'
+ DateTimeToStr(FileTimeToDateTime(RFtime)) + '
;'
+ IntToSTr(test.Size) + '
;' + FileGetTypeName(Dateien.Strings[i]) + '
;' + '
PositionA' + '
;' + '
PositionE';
Len:=StrLen(PChar(DateiHeader));
dl:=
dl + IntTostr(Datei.Position) + '
,' + InttoStr(Len) + '
|' ;
Datei.
Write(Len, SizeOf(Len));
Datei.
Write(PChar(DateiHeader)^,Len);
DateiHeader:='
';
end;
len:=StrLen(PChar(
DL));
Datei.
Write(Len, SizeOf(Len));
Datei.
Write(PChar(
dl)^, len);
Datei.Free;
FindClose(test);
end;
procedure TMFa.Entpacke(
Index:Integer);
var
Datei:TStream;
len:Integer;
DateiHeader:
String;
DL:
String;
begin
Datei := TFileStream.Create(FileName, fmOpenRead);
Datei.
Read(Len, SizeOf(Len));
// die länge für DL auslesen
SetLength(DateiInfo,len);
// länge setzen
Datei.Seek(datei.Size-30,soFromEnd);
SetLength(
dl,30);
Datei.
Read(PChar(
DL)^, Len);
// header ein lesen
ShowMessage(
dl);
Exit;
// Datei.seek(StrToInt(GetToken(GetToken(DL,'|', index),',',1)),soFromBeginning);
len:=StrToInt(GetToken(GetToken(
DL,'
|',
index),'
,',2));
SetLength(DateiHeader,Len);
// Header länge setzen
Datei.
Read(PChar(DateiHeader)^, Len);
// header ein lesen
{DateiInfo[index-1].FileName:=GetToken(DateiHeader,';',1);
DateiInfo[index-1].CreateDateTime:=StrToDateTime(GetToken(DateiHeader,';',2));
DateiInfo[index-1].usesDateTime:=StrToDateTime(GetToken(DateiHeader,';',3));
DateiInfo[index-1].WriteusesDateTime:=StrToDateTime(GetToken(DateiHeader,';',4));
DateiInfo[index-1].FileSize:=StrToInt(GetToken(DateiHeader,';',5));
DateiInfo[index-1].FileDes:=GetToken(DateiHeader,';',6);}
Datei.Free;
end;