AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi XML Attribut auslesen - Konnte nicht in Typ (OleStr) konvertiert werden
Thema durchsuchen
Ansicht
Themen-Optionen

XML Attribut auslesen - Konnte nicht in Typ (OleStr) konvertiert werden

Ein Thema von Back2Code · begonnen am 2. Okt 2013 · letzter Beitrag vom 2. Okt 2013
Antwort Antwort
Benutzerbild von Back2Code
Back2Code

Registriert seit: 6. Feb 2012
Ort: Deutschland
272 Beiträge
 
Delphi XE7 Professional
 
#1

XML Attribut auslesen - Konnte nicht in Typ (OleStr) konvertiert werden

  Alt 2. Okt 2013, 14:04
Also ich bin grad dran Attribute auszulesen aus einer Xml. Das klappt soweit auch ganz gut bis zum jetzigen Moment. Ich bekomme die Meldung beim Versuch das Attribut status auszulesen.

Bis sLangId klappt alles wunderbar und danach kommt der Fehler. Hab durchs googlen / Dokumentation lesen leider so gut wie nichts rausbekommen und bevor ich noch mehr Zeit in Recherchen stecke die eventuell an der falschen Stelle angesetzt sind frage ich hier mal nach.

https://dl.dropboxusercontent.com/u/...5945000183.png

Delphi-Quellcode:
type
  XMLDocument: TXMLDocument;

var
  i, j: Integer;
  sPath: String; // Pfad zur Sprachxml
  sTaskType: String; // Import oder Transfer
  sContext: String;
  sOriginalStatus: String;
  sNativeText: String;
  sLangId: String;
  sStatus: String;
  sTranslated: String;
  TransNodes: IXMLNodeList;

begin
    if OpenDialog.Execute then
    begin
      try
        sPath := OpenDialog.FileName;
        edFilePath.Text := (sPath);
        XMLDocument.LoadFromFile(sPath);
        if Assigned(XMLDocument) then
        begin
          TransNodes := XMLDocument.DocumentElement.ChildNodes['targets'].ChildNodes['target'].ChildNodes['stringdata'].ChildNodes;

          for i := 0 to 100 {TransNodes.Count} -1 do
          begin
            sContext := TransNodes[i].Attributes['name'];
            sOriginalStatus := TransNodes[i].Attributes['status'];

            //ShowMessage(IntToStr(TransNodes[i].ChildNodes.Count)); // 6 childs beim debug

            for j := 0 to TransNodes[i].ChildNodes.Count -1 do
              begin
                if TransNodes[i].ChildNodes[j].NodeName = 'nativethen
                  sNativeText := TransNodes[i].ChildNodes['native'].Text;
                 // Delete(sNativeText, Length(sNativeText), 1);
                 // Delete(sNativeText, 1, 1);

                if TransNodes[i].ChildNodes[j].NodeName = 'langthen
                  sLangId := TransNodes[i].ChildNodes[j].Attributes['id'];
                  //sStatus := TransNodes[i].ChildNodes[j].Attributes['status'];
                  //sTranslated := TransNodes[i].ChildNodes[j].Text;

              Memo.Lines.Add(sContext + ' ' + sOriginalStatus + ' ' + sNativeText + ' ' + sLangId + ' ' + sStatus + ' ' + sTranslated);
              end;

          end;

        end;
      finally

      end;
    end;
end;
00111100001100110010000001000100011001010110110001 1100000110100001101001
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
526 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: XML Attribut auslesen - Konnte nicht in Typ (OleStr) konvertiert werden

  Alt 2. Okt 2013, 14:55
Dann hast Du bei dem Element nichts (NULL) drin.
Vorher auf .NULL oder .ISNULL oder so abfragen.
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat
Benutzerbild von Back2Code
Back2Code

Registriert seit: 6. Feb 2012
Ort: Deutschland
272 Beiträge
 
Delphi XE7 Professional
 
#3

AW: XML Attribut auslesen - Konnte nicht in Typ (OleStr) konvertiert werden

  Alt 2. Okt 2013, 15:52
Dann hast Du bei dem Element nichts (NULL) drin.
Vorher auf .NULL oder .ISNULL oder so abfragen.
Wie kann ich das genau auf .Null abfragen? Bei Nil meckert er rum ...
00111100001100110010000001000100011001010110110001 1100000110100001101001
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
526 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: XML Attribut auslesen - Konnte nicht in Typ (OleStr) konvertiert werden

  Alt 2. Okt 2013, 15:59
Bei Nil meckert er rum ...
Und bei NULL?
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat
Benutzerbild von Back2Code
Back2Code

Registriert seit: 6. Feb 2012
Ort: Deutschland
272 Beiträge
 
Delphi XE7 Professional
 
#5

AW: XML Attribut auslesen - Konnte nicht in Typ (OleStr) konvertiert werden

  Alt 2. Okt 2013, 16:01
Bei Nil meckert er rum ...
Und bei NULL?
So gehts mit Nil aber jetzt bekomm ich dummerweise nen Listenindex überschreitet Fehler -.-

Delphi-Quellcode:
                  try
                    if TransNodes[i].ChildNodes[j].Attributes['status'] <> NULL then
                    sStatus := TransNodes[i].ChildNodes[2].Attributes['status'];
                  except
                  //
                  end;
00111100001100110010000001000100011001010110110001 1100000110100001101001
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
526 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: XML Attribut auslesen - Konnte nicht in Typ (OleStr) konvertiert werden

  Alt 2. Okt 2013, 16:04
Dann bist Du auf einem Inexistenten Listenindex.
Debugger?
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat
Mikkey

Registriert seit: 5. Aug 2013
265 Beiträge
 
#7

AW: XML Attribut auslesen - Konnte nicht in Typ (OleStr) konvertiert werden

  Alt 2. Okt 2013, 16:24
So gehts mit Nil aber jetzt bekomm ich dummerweise nen Listenindex überschreitet Fehler -.-
Versuch's mal mit
Delphi-Quellcode:
                    if TransNodes[i].ChildNodes[j].Attributes['status'] <> NULL then
                    sStatus := TransNodes[i].ChildNodes[j].Attributes['status'];
Statt "[2]"
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz