Delphi-Quellcode:
XMLDcmnt := TXMLDocument.Create(xmlPfad);
Try
XMLDcmnt.LoadFromFile(xmlPfad);
Entweder schon beim Erstellen laden, oder erst später ... beides macht normal eigentlich niemand.
(ich würde den Parameter beim Create weglassen und nur LoadFromFile nutzen)
Und ja, das XMLDcmnt.Free weg und direkt als Interface die Variable. (wenn, dann maximal noch
XMLDcmnt := nil;
)
PS, bissl Kürzer wäre ReplaceStr, bzw,
ReplaceText(XMLDcmnt.FileName, '.zip', '.xml')
, aber eigentlich nutzt man doch ein
ChangeFileExt(xmlPfad, '.xml')
?
Zitat:
Delphi-Quellcode:
Finally
Result:= false;
End;
Das ergibt immer False ... wolltes du vielleicht ein Except?
Und wenn ja, dann schäm dich.
Fehlermeldungen blind wegzuwerfen und in garnichts oder nur einen Boolean zu konvertieren ... sowas gehört sich nicht.
* ordentiche Fehlermeldung
* oder wenigestens in ein Log schreiben
Was machst du denn außerhalb, bei einem False?
Delphi-Quellcode:
procedure TLogic.XMLEdit(xmlPfad: string; TargetPfad: string);
var WmDKntn: IXMLNode;
XMLDcmnt: IXMLDocument;
NwVlDateien, NwVlWF_Name, NwFlNm: string;
begin
if TargetPfad[Length(TargetPfad)] <> '\' then begin
TargetPfad:= TargetPfad + '\';
end;
XMLDcmnt:= LoadXMLDocument(xmlPfad);
NwFlNm:= ExtractFileName(StringReplace(XMLDcmnt.FileName,'.zip','.xml',[rfIgnoreCase, rfReplaceAll]));
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);
end;
Die Interfaces geben sich selbst frei
und die Fehlermeldung wird automatisch angezeigt.
Und beim Aufruf des XMLEdit kann man entweder abbrechen und Fehlermeldung anzeigen lassen
oder dort mit einem Try-Except die Sache entsprechend der Anforderungen dort behandeln. (alternativen Code ausführen lassen oder die Fehlermmeldung manuell anzeigen)