1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59:
| var Datei,Datei2, Datei3, Datei4:TStream; i,len,Size:Integer; DateiHeader:String; Test:TSearchRec; CFTime, EFTime, RFTime:_FileTime; DL:String; begin Datei := TFileStream.Create(GetExeDir + 'temp\' + ExtractFileName(Filename)+'.tmp', fmCreate); Datei2 := TFileStream.Create(GetExeDir + 'temp\header.tmp', fmCreate); Datei3 := TFileStream.Create(FileName, fmCreate); len:=Strlen(Pchar(dl));
Len:=Dateien.Count; Datei2.Write(Len, SizeOf(Len)); dl:='a!' + '|'; for i:=0 to Dateien.Count-1 do begin Datei4 := TFileStream.Create(Dateien.Strings[i], fmOpenRead);
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]) + ';' + IntTostr(Datei.Position) + ';' + IntTostr(Datei4.Size); Len:=StrLen(PChar(DateiHeader)); Datei.CopyFrom(Datei4, Datei4.Size);
dl:=dl + IntTostr(Datei2.Position) + ',' + InttoStr(Len) + '|' ; Datei2.Write(Pchar(DateiHeader)^,len); DateiHeader:=''; Datei4.Free;
end;
Len:=StrLen(Pchar(DL)); Datei2.Write(Len, SizeOf(Len)); Datei2.Write(PChar(dl)^,Len);
Len:=Datei2.Size; Datei3.Write(Len,SizeOF(Len)); Datei3.CopyFrom(Datei2,0);
Len:=Datei.Size; Datei3.Write(Len,SizeOF(Len)); Datei3.CopyFrom(Datei,0); FindClose(test); |