AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi Nodes werden nicht selektiert

Nodes werden nicht selektiert

Ein Thema von CalganX · begonnen am 18. Sep 2003 · letzter Beitrag vom 19. Sep 2003
Antwort Antwort
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

Nodes werden nicht selektiert

  Alt 18. Sep 2003, 17:31
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
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#2

Re: Nodes werden nicht selektiert

  Alt 18. Sep 2003, 20:39
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>
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Nodes werden nicht selektiert

  Alt 18. Sep 2003, 21:13
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.

Chris
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#4

Re: Nodes werden nicht selektiert

  Alt 19. Sep 2003, 10:35
Zitat von Chakotay1308:
Auf den Ersten Blick sehe ich aber schon, dass das vermutlich funktionieren kann.
Ich danke untertänigst für Euer Vertrauen.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 00:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf