Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Probleme mit XML Tutorial (https://www.delphipraxis.net/13845-probleme-mit-xml-tutorial.html)

p0ke 27. Dez 2003 22:24


Probleme mit XML Tutorial
 
Hallo zusammen,

hat irgendjemand schon mal das XML Tutorial von Chakotay so wies is durchgespielt? Kann mir evtl. einer den Source mal schicken, irgendwie hab ich Probleme das ans laufen zu kriegen. :? Wahrscheinlich find ich bloss meine eigenen Tippfehler nich.
Ich denke wenn einer zufällig den Source so hat, dann brauch ich hier nich meinen ganzen Source posten.

Danke im Voraus.

Gruss

p0ke

CalganX 27. Dez 2003 22:35

Re: Probleme mit XML Tutorial
 
Hi,
sorry, wenn noch einige Fehler drin sind! Ich habe zwar versucht alle Fehler rauszumergeln, aber gelingt leider nicht immer (auch nicht beim 1. Tutorial).
Wenn du mir genau sagst, was nicht funktioniert, kann ich dir vielleicht helfen, ansonsten lohnt sich auch ein Blick in den MovieOrganizer, denn wie im Tutorial beschrieben lehnt das Tutorial am MovieOrganizer an.

Chris

p0ke 27. Dez 2003 22:42

Re: Probleme mit XML Tutorial
 
Grundsätzlich schonmal super das du dich hingesetzt hast ein Tutorial zu schreiben. Verstehe jetzt auf jeden Fall viel mehr.

In der Update Prozedur raff ich nich wie das mit dem
Code:
 for j:=0 to length(NAMES)-1 do begin
klappen soll. Bei mir motzt er immer an das er die [ erwartet.

Aber in Fehleranalyse war ich schon immer schlecht und im abtippen sowieso :)


mfg

p0ke

CalganX 27. Dez 2003 22:58

Re: Probleme mit XML Tutorial
 
Hi,
:gruebel: hm... also ich kann das morgen nochmal probieren (jetzt isse's a bisser'l spät), aber rein theoretisch müsste das funktionieren, da ich den Teil sowieso getestet habe. *denk*

Chris

p0ke 27. Dez 2003 23:06

Re: Probleme mit XML Tutorial
 
Zitat:

(jetzt isse's a bisser'l spät)
Kein Problem du... mach dir bloss keinen Stress.

Dann schlaf mal schön ;D


p0ke

Daniel 27. Dez 2003 23:10

Re: Probleme mit XML Tutorial
 
Zitat:

Zitat von p0ke
[...]
Kein Problem du... mach dir bloss keinen Stress.
[...]

ooooooh doch. Da können wir Chak aber deutlich mehr fordern. :mrgreen: RAUS AUS DEM BETT UND RAN AN DEN PC!


Also: Die o.g. Codezeile selber ist beinhaltet keinen unmittelbaren Fehler. Kannst Du bitte mal Deine komplette Routine hier veröffentlichen, in der sich diese Zeile befindet? Vermutlich werden wir dann den Fehler rasch ausfindig machen können.

CalganX 27. Dez 2003 23:24

Re: Probleme mit XML Tutorial
 
Zitat:

Zitat von Daniel
ooooooh doch. Da können wir Chak aber deutlich mehr fordern. :mrgreen: RAUS AUS DEM BETT UND RAN AN DEN PC!

*kerzengeradesteh* ZU BEFEHL, SIR! SIR, JA, SIR! Da haben sie Recht, Sir! ;)

Zitat:

Zitat von Daniel
Also: Die o.g. Codezeile selber ist beinhaltet keinen unmittelbaren Fehler. Kannst Du bitte mal Deine komplette Routine hier veröffentlichen, in der sich diese Zeile befindet? Vermutlich werden wir dann den Fehler rasch ausfindig machen können.

Das wollte ich auch gesagt haben.
Ich vermute einfach nur, dass du versehentlich an dem Array rumgespielt hast. ;) Denn sonst müsste es (und das tut es bei mir auch) funktionieren. :gruebel:

Chris

p0ke 27. Dez 2003 23:29

Re: Probleme mit XML Tutorial
 
Oh, der Chef persönlich..... :)

Hier die komplette Prozedur:

Code:
procedure TMainForm.UpdateList;
const
  NAMES: array[0..2] of string = ('name', 'format', 'ton');
var
  movies: IXMLDOMNodeList;
  subNode: IXMLDOMNode;
  i, j: integer;
begin
  MovieList.Items.Clear;
  MovieList.Items.BeginUpdate;

  movies:=xmlDoc.documentElement.selectNodes('movie');
  for i:=0 to movies.length - 1 do begin
    subNode := movies.item[i].selectSingleNode('id');
    MovieList.Items.Add;
    MovieList.Items[i].Caption := subnode.text;
    with MovieList.Items[i].SubItems do begin
      for j:=0 to length(NAMES)-1 do begin
        subNode := movies.item[i].selectSingleNode(NAMES[j]);
        if subNode <> nil then
          Add(subNode.Text)
        else
          Add('');
      end;
    end;
  end;
  MovieList.items.endupdate;
end;
Das einzigste was zum Tutorial abweicht ist das ich nur 3 Felder hab statt 9

mfg

p0ke

MathiasSimmack 28. Dez 2003 08:01

Re: Probleme mit XML Tutorial
 
Du könntest mal in der Zeile
Delphi-Quellcode:
for j:=0 to length(NAMES)-1 do begin
den Mauscursor auf das "NAMES" halten und abwarten. Dann siehst du, dass dieser Begriff fälschlicherweise als Methode/Eigenschaft von TStrings angegeben wird. Das dürfte mit dem with davor zusammenhängen. Entweder verwendest du also einen anderen Namen als "NAMES", oder du verzichtest auf das with.

aps 28. Dez 2003 09:09

Re: Probleme mit XML Tutorial
 
Zitat:

Zitat von p0ke
with MovieList.Items[i].SubItems do begin

Was habe ich vor nur wenigen Threads gesagt? Man solle auf die Verwendung von WITH verzichten (insbesondere auf WITH BEGIN END)!
Tu, was ich da gesagt habe, und es wird klappen.

CU
Andreas

p0ke 28. Dez 2003 10:08

Re: Probleme mit XML Tutorial
 
Danke für die Tips
Ich selber arbeite nie mit with, nur wollte ich gerne das Tutorial so wies is durcharbeiten. Naja. Chak wird das jetzt sicher nochmal ordentlich machen :)


p0ke

CalganX 28. Dez 2003 10:20

Re: Probleme mit XML Tutorial
 
Hi,
Zitat:

Zitat von p0ke
Chak wird das jetzt sicher nochmal ordentlich machen :)

klar! Wobei mir das nie aufgefallen ist. Aber inzwischen sollte ich die Tücken von Delphi kennen. ;) Naja... man lernt halt nie aus. *g*

Chris

MathiasSimmack 28. Dez 2003 10:42

Re: Probleme mit XML Tutorial
 
Zitat:

Zitat von aps
Was habe ich vor nur wenigen Threads gesagt? Man solle auf die Verwendung von WITH verzichten (insbesondere auf WITH BEGIN END)!
Tu, was ich da gesagt habe, und es wird klappen.

:) Ich habe zwar deine Antwort im anderen Thread gelesen, aber ich hoffe du akzeptierst, wenn ich dir trotzdem nicht vorbehaltlos zustimmen kann. In diesem Fall gab´s ein ungünstiges Zusammenspiel zwischen dem TString und der Verwendung von "NAME" als Konstante.

Bisher ist mir so was (ich nenn´s mal einen Zufall) noch nicht passiert, darum verwende ich with immer, wenn ich was (wie du auch im anderen Thread geschrieben hast) verkürzen will.

DirkH 1. Feb 2004 15:09

Re: Probleme mit XML Tutorial
 
Erstmal vorweg: Ein super Tutorial. *respekt*

Eine genaue Lösung gab es bei diesem Problem noch nicht, oder? Oder hab ich das einfach nciht erlesen können ?
Habe nämlich das gleiche Problem ;)

Delphi-Quellcode:
procedure TMainForm.UpdateList;
  Const
    NAMES: array[0..8] of String = ('name', 'format', 'ton', 'anzmedien', 'bildqualität', 'tonqualität', 'gesamt', 'verliehen', 'comment');
  Var
    movies : IXMLDOMNodeList;
    subNode: IXMLDOMNode;
    i, j : integer;
  begin
    Movielist.Items.Clear;
    MovieList.Items.BeginUpdate;

    movies := xmlDoc.documentElement.selectNodes('movie');
    for i:=0 to movies.length -1 do
      begin
      subNode:=movies.item[i].selectSingleNode('id');
      MovieList.Items.Add;
      Movielist.Items[i].Caption := subNode.text;
      with Movielist.Items[i].SubItems do begin
          for j:=0 to length(NAMES)-1 do begin
            subNode := movies.item[i].selectSingleNode(Names[j]);
            if subNode <> nil then
              Add(subNode.text)
            else
              Add('');
            end;
        end;
    end;
    movielist.Items.EndUpdate;
  end;
Delphi-Quellcode:
 for j:=0 to length(NAMES)-1 do begin
! "[" erwartet, aber ")" gefunden, ist der Fehler.

Und wenn ich mit der Maus auf dem NAMES bleibe, dann gibt er mir

Code:
prop TStrings.Names: [Index:Integer]: String - classes.pas (518)
als info aus. Kann mir da jemand helfen ? Wäre sehr nett.

CalganX 1. Feb 2004 15:34

Re: Probleme mit XML Tutorial
 
Hi,
danke für das Lob.

Ja, das ist ein Fehler im Tutorial, aber derzeit komme ich nicht dazu das zu ändern.
Du musst folgende Schleife:
Delphi-Quellcode:
      with Movielist.Items[i].SubItems do begin
          for j:=0 to length(NAMES)-1 do begin
            subNode := movies.item[i].selectSingleNode(Names[j]);
            if subNode <> nil then
              Add(subNode.text)
            else
              Add('');
            end;
        end;
komplett ersetzen durch:
Delphi-Quellcode:
        for j:=0 to length(NAMES)-1 do begin
          subNode := movies.item[i].selectSingleNode(Names[j]);
          if subNode <> nil then
            Movielist.Items[i].SubItems.Add(subNode.text)
          else
            Movielist.Items[i].SubItems.Add('');
          end;
        end;
Chris

MathiasSimmack 2. Feb 2004 15:07

Re: Probleme mit XML Tutorial
 
@Chris: Das ist kein Fehler. Es ist, wie ich schon sagte, ein dummer Zufall durch die Verwendung von "with":
Zitat:

Zitat von MathiasSimmack
In diesem Fall gab´s ein ungünstiges Zusammenspiel zwischen dem TString und der Verwendung von "NAME" als Konstante.

Einen Fehler brauchst du dir selbst nicht vorwerfen (lassen). ;)

DirkH 5. Feb 2004 09:34

Re: Probleme mit XML Tutorial
 
Danke schön, komme da auch nun schon weiter. Das nächste Problem ist aber auch schon wieder aufgetreten.

Werde es aber in dem dazugehörigen Threat posten :wink: , wenn ich es nicht selbst auf die Reihe bekommen sollte


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