procedure TFrm_BD_DHL.btn_ExtractDataClick(Sender: TObject);
var Logic: TLogic;
FList: TStringList;
I: integer;
EditResult: boolean;
begin
Logic:= TLogic.Create;
FList:= TStringList.Create;
Try
//Erst nur die ZIP-Files mit den PDF-Files
Logic.GetAllFilesEM(edt_DownloadPath.Text, '
zip', FList, false);
for I := 0
to FList.Count -1
do begin
EditResult:= EditMoveWmDFiles(FList[I], edt_PDFPath.Text, edt_XMLPath.Text);
if EditResult
then begin
DeleteFile(FList[I]);
end;
FlLstbx_Download.Update;
FlLstbx_PDF.Update;
FlLstbx_XML.Update;
end;
//Zum Schluss die XML-Files, damit sie nicht vor dem Ablegen der PDF-Files verarbeitet werden
FList.Clear;
Logic.GetAllFilesEM(edt_DownloadPath.Text, '
xml', FList, false);
for I := 0
to FList.Count -1
do begin
EditResult:= EditMoveWmDFiles(FList[I], edt_PDFPath.Text, edt_XMLPath.Text);
if EditResult
then begin
DeleteFile(FList[I]);
end;
FlLstbx_Download.Update;
FlLstbx_PDF.Update;
FlLstbx_XML.Update;
end;
Finally
Logic.Free;
FList.Free;
End;
end;
function TFrm_BD_DHL.EditMoveWmDFiles(FilePath, PDFPath, XMLPath:
string): boolean;
var Logic: TLogic;
begin
Try
Logic:= TLogic.Create;
Try
if LowerCase(ExtractFileExt(FilePath)) = '
.zip'
then begin
Result:= Logic.ExctractZIP(FilePath, PDFPath);
end;
if LowerCase(ExtractFileExt(FilePath)) = '
.xml'
then begin
Result:= Logic.XMLEdit(FilePath, XMLPath);
end;
Finally
Logic.Free;
End;
Except
Result:= false;
End;
end;
function TLogic.ExctractZIP(ZipPfad, ExtractPfad:
string): boolean;
var ZFile: TZipFile;
begin
Try
ZFile:= TZipFile.Create;
Try
ZFile.Open(ZipPfad, zmRead);
ZFile.ExtractAll(ExtractPfad);
Result:= true;
Finally
ZFile.Free;
End;
Except
Result:= false;
End;
end;
function TLogic.XMLEdit(xmlPfad:
string; TargetPfad:
string): Boolean;
var WmDKntn: IXMLNode;
XMLDcmnt: IXMLDocument;
NwVlDateien, NwVlWF_Name, NwFlNm:
string;
begin
Try
if TargetPfad[Length(TargetPfad)] <> '
\'
then begin
TargetPfad:= TargetPfad + '
\';
end;
XMLDcmnt:= LoadXMLDocument(xmlPfad);
NwFlNm:= ChangeFileExt(ExtractFileName(xmlPfad), '
.xml');
WmDKntn:= XMLDcmnt.DocumentElement;
NwVlDateien:= StringReplace(WmDKntn.ChildNodes.FindNode('
Dateien').ChildNodes.FindNode('
Dateiname').NodeValue, '
.zip','
.xml',[rfIgnoreCase, rfReplaceAll]);
NwVlWF_Name:= StringReplace(WmDKntn.ChildNodes.FindNode('
WF_Name').ChildNodes.FindNode('
WF_Name').NodeValue, '
.zip','
.xml',[rfIgnoreCase, rfReplaceAll]);
WmDKntn.ChildNodes.FindNode('
Dateien').ChildNodes.FindNode('
Dateiname').NodeValue:= NwVlDateien;
WmDKntn.ChildNodes.FindNode('
WF_Name').ChildNodes.FindNode('
WF_Name').NodeValue:= NwVlWF_Name;
XMLDcmnt.SaveToFile(TargetPfad + NwVlDateien);
Result:= true;
Except
MessageDlg('
Die Datei ' + xmlPfad + '
konnte nicht editiert werden. Bitte manuell eingreifen und den Administrator informieren.', mtError, [mbOK], 0);
Result:= false;
End;
end;