AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi Problem mit XML Turtoial von Chack
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit XML Turtoial von Chack

Ein Thema von citybreaker · begonnen am 3. Apr 2004 · letzter Beitrag vom 23. Apr 2004
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
citybreaker
(Gast)

n/a Beiträge
 
#1

Problem mit XML Turtoial von Chack

  Alt 3. Apr 2004, 21:02
So hier der 3. Thread zu dem Tutorial.
Ich meine XML Datei folgendermaßen aufgebaut.

movies.xml
<?xml version="1.0" encoding="ISO-8895-1"?>
<movieorganiezer>
<movie>
<id>1</id>
<name>Der Schuh des Manitu</name>
<format>DVD</format>
<ton>DD5.1</ton>
</movie>
</movieorganiezer>

Und dann noch folgende Source.
Delphi-Quellcode:
unit main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, Menus, msxml2_tlb;

type
  TMainFrm = class(TForm)
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    Beenden1: TMenuItem;
    Film1: TMenuItem;
    Hinzufgen1: TMenuItem;
    Entfernen1: TMenuItem;
    N1: TMenuItem;
    Bearbeiten1: TMenuItem;
    N2: TMenuItem;
    Info1: TMenuItem;
    StatusBar1: TStatusBar;
    MovieList: TListView;
    procedure FormCreate(Sender: TObject);
    procedure UpdateList;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    fAppPath: string;
  end;

const
  DATABASE_FNAME ='movies.xml';
var
  MainFrm: TMainFrm;
  xmlDoc: IXMLDOMDocument2;

implementation

{$R *.DFM}

procedure TMainFrm.FormCreate(Sender: TObject);
begin
  fAppPath := ExtractFilePath(Application.Exename);
  XmlDoc := CoDomDocument40.Create;
  XmlDoc.SetProperty('NewParser', true);
  if not FileExists(fAppPath + DATABASE_FNAME) then begin
    XmlDoc.loadXml('<?xml version="1.0"?><movieorganiezer></movieorganiezer>');
  end else
    XmlDoc.load(fAppPath + DATABASE_FNAME);
  if XmlDoc.parseError.errorCode <> 0 then begin
    MessageDlg('Die XML Datei ist nicht korrekt!' + #13#10
              +'Das Programm wird nun beenden!', mtError, [MbOk], 0);
    Application.Terminate;
  end;
  if XmlDoc.documentElement.nodeName <> 'movieorganiezerthen
    Application.Terminate;
end;

procedure TMainFrm.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;
end.
Jetzt kommt beim Start immer die Fehlermeldung mit "nicht korrekter Xml Datei"
Woran liegt das? Hab die Datei im selben Ordner wie die Exe.
  Mit Zitat antworten Zitat
Benutzerbild von Mirilin
Mirilin

Registriert seit: 21. Dez 2002
Ort: Lenzburg
861 Beiträge
 
Delphi 6 Professional
 
#2

Re: Problem mit XML Turtoial von Chack

  Alt 3. Apr 2004, 21:17


Keine Ahnug, aber bei mir hat er beim ISO-Typ gemeckert.

Code:
<?xml version="1.0" encoding="ISO-8859-1" ?>
so hat IE nicht mehr gemeckert.


mfg Tobias
Tobias
Die Physik ist für die Physiker eigentlich viel zu schwer.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#3

Re: Problem mit XML Turtoial von Chack

  Alt 3. Apr 2004, 21:29
@Mirilin: Das Leerzeichen spielt keine Rolle. Ich habe selbst auch eine Datei, die verkürzt so aussieht:
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet href="archiv.xsl" type="text/xsl"?>
<!DOCTYPE archiv SYSTEM "archiv.dtd">
<archiv sig="2004" shortname="2004-04" name="April">
  <day name="3. April 2004">...</day>
</archiv>
und da stört sich der IE auch nicht dran. Das Problem liegt anderswo. Wobei ich natürlich sagen muss, dass ich die selbe Fehlermeldung bekam. Da aber, wie gesagt, eine meiner Dateien die gleiche Kodierung hat, kann´s nicht am Leerzeichen liegen.

@citybreaker: Kleiner Tipp für bessere Fehlermeldungen. Ändere mal deine Infobox wie folgt ab:
Delphi-Quellcode:
    MessageDlg(Format('Fehler %s in Zeile %d, Position %d:' + #13#10 +
      '%s',[xmldoc.parseError.reason,xmldoc.parseError.line,
      xmldoc.parseError.linepos,xmldoc.parseError.srcText]),
      mtError,[mbok],0);
dann siehst du was los ist.
  Mit Zitat antworten Zitat
Benutzerbild von Mirilin
Mirilin

Registriert seit: 21. Dez 2002
Ort: Lenzburg
861 Beiträge
 
Delphi 6 Professional
 
#4

Re: Problem mit XML Turtoial von Chack

  Alt 3. Apr 2004, 21:31


@Mathias
Bei mir waren es nicht Leerzeichen sonder die 5 und die 9 die an verschienden Plätzen lagen.


ISO-8859-1 vs ISO-8895-1

mfg Tobias
Tobias
Die Physik ist für die Physiker eigentlich viel zu schwer.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#5

Re: Problem mit XML Turtoial von Chack

  Alt 3. Apr 2004, 21:41
Hey, du hast recht. Ich sollte vielleicht mal meine Augen aufmachen. Wird hiermit getan:
Entschuldige, ich nehme alles zurück.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#6

Re: Problem mit XML Turtoial von Chack

  Alt 3. Apr 2004, 21:43
Übrigens:
Zitat von citybreaker:
<movieorganiezer>
Gesundheit.
  Mit Zitat antworten Zitat
citybreaker
(Gast)

n/a Beiträge
 
#7

Re: Problem mit XML Turtoial von Chack

  Alt 4. Apr 2004, 10:25
Zitat von Mirilin:


@Mathias
Bei mir waren es nicht Leerzeichen sonder die 5 und die 9 die an verschienden Plätzen lagen.


ISO-8859-1 vs ISO-8895-1

mfg Tobias
Jetzt klappt es. Danke! Hab mich wohl böse verschrieben.
Nun gib es noch das Problem das igendwie nix geladen wird was in der XML Datei steht.
Code zum laden steht oben.
  Mit Zitat antworten Zitat
CalganX

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

Re: Problem mit XML Turtoial von Chack

  Alt 4. Apr 2004, 11:51
Hi,
hast du denn überhaupt fAppPath einen Wert zugewiesen? Das müsste eigentlich das Verzeichnis der Anwendung sein...

Chris
  Mit Zitat antworten Zitat
citybreaker
(Gast)

n/a Beiträge
 
#9

Re: Problem mit XML Turtoial von Chack

  Alt 4. Apr 2004, 12:04
Joa, hab ich gemacht.

Delphi-Quellcode:
procedure TMainFrm.FormCreate(Sender: TObject);
begin
  fAppPath := ExtractFilePath(Application.Exename);
  ...
end;
  Mit Zitat antworten Zitat
CalganX

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

Re: Problem mit XML Turtoial von Chack

  Alt 4. Apr 2004, 12:30
Hi,
stimmt...
Aber hast du denn irgendwo UpdateList aufgerufen? Ich find in deinem Quelltext nix davon.

Chris
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 08:21 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