Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#9

AW: TXMLDocument kann nicht created werden

  Alt 24. Okt 2024, 14:54
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)
$2B or not $2B
  Mit Zitat antworten Zitat