Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Nodes werden nicht selektiert (https://www.delphipraxis.net/9131-nodes-werden-nicht-selektiert.html)

CalganX 18. Sep 2003 18:31


Nodes werden nicht selektiert
 
Hi,
meine XML-Datei sieht folgendermaßen aus:
Code:
<?xml version="1.0"?>
<language>
   <translator>
      <name>Christopher Harms</name>
      <website>http://www.csd-software.net</website>
      <date>2003-09-18</date>
   </translator>

   <form name="MainForm" />
   <form name="EditingForm" />
   <form name="AddingForm" />

   <control name="mmFile" form="MainForm">
      <caption>Datei</caption>
   </control>

   <control name="mmGrouping" form="MainForm">
      <caption>In Gruppen einteilen (XP only)</caption>
   </control>
</language>
Das Problem ist nun, das bei folgendem Source die Nodes nicht ausgewählt werden, sondern bei der gekennzeichneten Zeile eine Access Violation kommt:
Delphi-Quellcode:
procedure TMainForm.UpdateLanguage;
var
  aLngDoc: IXMLDOMDocument2;
  aForms: IXMLDOMNodeList;
  slForms: TStringList;
  sXSL: string;
  i: integer;
begin
  if not fileExists(fLangPath + fLanguage + '.lng') then begin
    ShowMessage('Die Sprachdatei konnte nicht gefunden.' + #13#10
                + 'Es wird die Sprachvorgabe verwendet.');
  end;

  aLngDoc := CoDOMDocument40.Create;
  slForms := TStringList.Create;
  try
    aLngDoc.load(fLangPath + fLanguage + '.lng');
    sXSL := 'form'; {<-- gekennzeichnete Zeile ;-)}
    aForms := aLngDoc.documentElement.selectNodes(sXSL);
    for i:=0 to aForms.length - 1 do begin
      slForms.Add(aForms.item[i].attributes.getNamedItem('name').text);
      ShowMessage(aForms.item[i].attributes.getNamedItem('name').text);
    end;
  finally
    slForms.Free;
  end;
end;
Was habe ich falshc gemacht? :|

Chris

MathiasSimmack 18. Sep 2003 21:39

Re: Nodes werden nicht selektiert
 
Zitat:

Was habe ich falshc gemacht?
Einiges.

1. Ich vermisse ein exit in dem Teil, in dem die Sprachdatei nicht gefunden wurde. Mit anderen Worten: egal ob die Datei existiert oder nicht, geladen wird sie trotzdem. :)

2. Warum so umständlich? An die Werte der Attribute kommst du einfach mit
Delphi-Quellcode:
aForms := aLngDoc.documentElement.selectNodes('form/@name');
if(aForms.length > 0) then
  for i := 0 to aForms.length - 1 do
    ShowMessage(aForms.item[i].Get_nodeValue);
Voilà.

3. Finde ich die Aufteilung ... hm, na sagen wir mal: umständlich. Warum ordnest du die Captions nicht gleich unter den Forms an, für die sie interessant sind? Was soll das:
Code:
<form name="[b]MainForm[/b]" />

<control name="mmFile" form="[b]MainForm[/b]">
  <caption>Datei</caption>
</control>
Warum nicht bspw. einfach
Code:
<form name="MainForm">
  <control name="mmFile">
    <caption>Datei</caption>
   
  </control>
</form>

CalganX 18. Sep 2003 22:13

Re: Nodes werden nicht selektiert
 
Hi Mathias,
danke für deine Hilfe. Leider schon etwas spät. Werde mir das morgen Nachmittag allerdings direkt ansehen. Auf den Ersten Blick sehe ich aber schon, dass das vermutlich funktionieren kann. :roll:

Chris

MathiasSimmack 19. Sep 2003 11:35

Re: Nodes werden nicht selektiert
 
Zitat:

Zitat von Chakotay1308
Auf den Ersten Blick sehe ich aber schon, dass das vermutlich funktionieren kann. :roll:

Ich danke untertänigst für Euer Vertrauen.:)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:16 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