Code: Alles auswählen
procedure TdtmBasis.acDokument_ComposeExecute(Sender: TObject);
var
VorlageDatei, ZielDatei, DateiName, TempDir, RelDir: string;
AUnZipper: TUnZipper;
AZipper: TZipper;
ZEntries: TZipFileEntries;
ZipFileList: TStringList;
i: integer;
begin
OpenDialog.InitialDir := GetIniFile('Pfade', 'Autovorlage', '');
OpenDialog.Filter := 'Vorlage|*.odt';
if OpenDialog.Execute then
begin
VorlageDatei := OpenDialog.FileName;
DateiName := ExtractFileNameWithoutExt(ExtractFileName(VorlageDatei));
if InputQuery('Dokumentenname', 'Bezeichnung für das Dokument eingeben', DateiName) = False then
exit
else
begin
//TODO: Dokumenteneintrag erstellen
// ZielDatei mit Pfad
ZielDatei := 'Test.odt';
//Dokument nach Temp entpacken
TempDir := '/tmp/CTR_Zipper';
relDir := TempDir;
DeleteDirectory(TempDir, False);
AUnZipper := TUnZipper.Create;
try
AUnZipper.FileName := VorlageDatei;
AUnZipper.OutputPath := TempDir;
AUnZipper.Examine;
AUnZipper.UnZipAllFiles;
finally
AUnZipper.Free;
end;
//Temp-Dokument Platzhalter ersetzen
//ReplaceInODTFile(TempDir + PathDelim + '/content.xml');
//ReplaceInODTFile(TempDir + PathDelim + '/styles.xml');
//Temp-Dokument nach Ziel-Dokument packen
AZipper := TZipper.Create;
try
AZipper.Filename := ZielDatei;
AZipper.Clear;
ZEntries := TZipFileEntries.Create(TZipFileEntry);
if DirPathExists(TempDir) then
begin
//szPathEntry := TempDir;
ZipFileList := TStringList.Create;
try
ZipFileList := FindAllFiles(RelDir);
for i := 0 to ZipFileList.Count - 1 do
ZEntries.AddFileEntry(ZipFileList[i],
CreateRelativePath(ZipFileList[i], RelDir));
finally
ZipFileList.Free;
end;
end;
if (ZEntries.Count > 0) then
AZipper.ZipFiles(ZEntries);
DeleteDirectory(TempDir, False);
finally
FreeAndNil(ZEntries);
AZipper.Free;
end;
//ZielDokument zum Bearbeiten öffnen
OpenDocument(ZielDatei);
end;
end;
end;
Code: Alles auswählen
Heap dump by heaptrc unit
579598 memory blocks allocated : 145037001/146550296
579597 memory blocks freed : 145036849/146550144
1 unfreed memory blocks : 152
True heap size : 3571712
True free heap : 3571392
Should be : 3571432
Call trace for block $00007F74AE574C00 size 152
$00000000004CB7EC
$00000000007051FF
$00000000004CB4D2
$00000000005C97F9
$00000000005C9FFB
$00000000005C96E2
$0000000000432136
$000000000055C5DC
Hat jemand eine Idee? Was habe ich vergessen?