Delphi-PRAXiS
Seite 2 von 11     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Delphi XML-Tutorial (https://www.delphipraxis.net/7356-xml-tutorial.html)

p0ke 28. Dez 2003 12:18

Re: XML-Tutorial
 
Zitat:

Zitat von MathiasSimmack
Allerdings (Achtung, persönliche Meinung!) fand ich diese Sache mit der "id" überflüssig

Also ich lass die ID erstmal drin. Bins sonst von den Datenbanken gewohnt, das man immer irgendwo n eindeutigen Schlüssel hat. Um von meiner Seite aus zu sagen ob ich die ID nun im XML wirklich brauche oder nicht, dazu hab ich noch zu wenig Hintergrundwissen was das anbelangt.


Aber danke für den Source, inzwischen hatte sich das allerdings auch erledigt.


mfg

p0ke

MathiasSimmack 28. Dez 2003 17:46

Re: XML-Tutorial
 
Zitat:

Zitat von p0ke
Also ich lass die ID erstmal drin. Bins sonst von den Datenbanken gewohnt, das man immer irgendwo n eindeutigen Schlüssel hat. Um von meiner Seite aus zu sagen ob ich die ID nun im XML wirklich brauche oder nicht, dazu hab ich noch zu wenig Hintergrundwissen was das anbelangt.

Bei einer echten Datenbank mag so eine eindeutige ID ja auch durchaus Sinn machen. Selbst bei unterschiedlichen Sortierungen kann man immer noch recht fix die jeweils höchste ID ermitteln und als Basis für den nächsten Eintrag nehmen. Oder man verwendet eine ID, die automatisch und ohne Zutun des Anwenders erhöht wird.

Hier, in diesem speziellen Fall wird die jeweils nächste ID immer aus dem Wert des letzten Items in der List-View gebildet:
Delphi-Quellcode:
MainForm.MovieList.items[MainForm.MovieList.Items.Count - 1].Caption
Das ist dann problematisch, wenn du eine Sortierung einbaust. Sagen wir: der Film "Stargate" hat die ID 1, weil du ihn zuerst eingetragen hast. Und "Casablanca" hat meinetwegen die ID 2, weil du ihn später eingetragen hast. Lässt du jetzt alfabetisch sortieren, dann wird "Casablanca" logischerweise vor "Stargate" angezeigt.
Evtl. ist "Stargate" auch der letzte Film in der Liste, womit nun die ID 1 am Ende steht. Wenn du jetzt einen neuen Film hinzufügst (ohne vorher wieder nach IDs zu sortieren), dann wird durch die o.g. Codezeile die 2 als "neue" ID berechnet.

Um also die tatsächlich echte nächste ID zu ermitteln, müsstest du die List-View intern umsortieren bzw. alle Items durchgehen und die höchste Zahl suchen. Und weil das umständlich ist, habe ich darauf verzichtet. Und mal ehrlich: spielt es eine Rolle, mit welcher ID die Filme archiviert werden? Wichtiger ist IMHO die Anzeige der Filmnamen und die mögliche Sortierung nach Genre, Typ (DVD, usw.), Bewertung und dergleichen.

p0ke 29. Dez 2003 14:17

Re: XML-Tutorial
 
Hi Mathias,

danke für die Erläuterungen.

Ich habe allerdings in deinem Source gesehen, das du schlicht den Namen als "eindeutigen Schlüssel" um es mal so zu nennen verwendest. OK, macht Sinn, weil du davon ausgehen kannst , dass niemals ein und derselbe Film in der Liste steht. Sollte es doch der Fall sein, weil du Stargate einmal auf DVD und einmal als MPEG hast, dann siehts aber wieder schlecht aus, hab ich Recht?

Ich habe jetzt folgendes gemacht, da ich bei meinem geplanten Projekt auch das Datum brauche wann der Datensatz angelegt wurde, nehme ich ein UnixTimeStamp als Schlüssel. Das sollte sich normal nich wiederholen, oder was hälst du davon?

Keine Ahnung ob ich überhaupt jetzt alles richtig verstanden habe. Wenn nich, klär mich bitte nochmal auf.


Bis dann

p0ke

Phoenix 20. Jan 2004 10:06

Re: XML-Tutorial
 
Kleine Anmerkung, auch wenn ich jetzt wieder als Klugscheisser verschrien werde.. ;-)

Zitat:

Zitat von Tutorial Seite 5
Denn HTML basiert auf XML.

Das ist so nicht korrekt.

HTML basiert auf SGML. Das W3C hat sich dann etwas später zusammengesetzt und war der Meinung, HTML hat einige gravierende Nachteile für den Informationsaustausch - SGML ist dafür aber viel zu komplex.

Somit wurde aus den Vorteilen von SGML und HTML hinterher XML entwickelt. Ein best of both worlds sozusagen.

Korrekt wäre also:
Zitat:

Denn XML basiert auf HTML und dessen vorgänger SGML.
Vielleicht für eine neue Version... :)

CalganX 20. Jan 2004 13:28

Re: XML-Tutorial
 
Hi,
okay! Werde ich korrigieren.

Danke,
Chris

DirkH 5. Feb 2004 09:49

Re: XML-Tutorial
 
Arbeite mich ja auch grade durch das Tutorial, komme auch an dieser Stelle nicht weiter.

Delphi-Quellcode:
newSub.text:=IntToStr(MainForm.MovieList.items[MainForm.MovieList.Items.Count - 1].Caption) +1;

Mir ist die sortierung, die ich dann vornehmen kann, oder auch nicht :wink: ziemlich egal. Dient ja erstmal nur zur einleitung.

Kann mir bei dem Problem einer helfen ?

Alexander 5. Feb 2004 15:16

Re: XML-Tutorial
 
jetzt müsstest du nur noch das Problem erläutern :gruebel:

Luckie 18. Apr 2004 21:20

Re: XML-Tutorial
 
Jetzt habe ich auch mal eine Frage. :mrgreen:

Im Tutorial steht in etwa folgender Code:
Delphi-Quellcode:
if not FileExists(FFilename) then
  begin
    // create new XML file
    FXMLDoc.loadXML('<?xml version="1.0"?><adressdb></adressdb>');
  end
  else
  begin
    // open and parse existing file
    FXMLDoc.load(FFilename);
  end;
Es geht mir um den if-Abschnitt. Im Tutorial steht dazu sinngemäß: "danach prüfen wir, ob eine XML-Datei existiert und wenn nein, dann soll eine XML-Datei erstellt werden..."
Sprich dieseZzeile:
Delphi-Quellcode:
FXMLDoc.loadXML('<?xml version="1.0"?><adressdb></adressdb>');
erstellt eine neue Datei. Nur woher weiß das Programm, wie sie heißen soll und wo sie gespeichert werden soll? Nun ja. Im Tutorial kommt da nach nur noch ein grausames Application.Terminate. Im Tutorial kommt nicht mehr und bei mir auch nicht. Und ich gehe jede Wette ein mit dem Tutorial Code wird auch keine datei erstellt, wie es bei mir der Fall ist.

Wie also erstelle ich eine neue XML-Datei richtig?

MathiasSimmack 18. Apr 2004 21:47

Re: XML-Tutorial
 
Im Prinzip passt das schon mit dem Code. Gespeichert wird sie dann im Beispielprogramm an anderer Stelle durch
Delphi-Quellcode:
xmldoc.save('test.xml');
(der Dateiname ist natürlich ein anderer). Die von dir gezeigte Zeile mit der Anweisung "loadXML" dient nur dazu, den XML-Code im Speicher zu erzeugen wenn die gesuchte Datei nicht existiert. Hintergedanke: Was nicht da ist, kann nicht geladen werden. Also muss die Datei neu angelegt werden. Und mit der genannten Anweisung kannst du den XML-Code quasi als String übergeben, und dann lassen sich die einzelnen Objekte ansprechen.

btw: Durch deine Fragerei mit der Suche nach mehreren gleichen Namen hast du mich auf eine Idee gebracht, die ein Update von Chakotays Movie Organizer zur Folge hatte. ;)

Edit-PS:
Zitat:

Zitat von Luckie
Und ich gehe jede Wette ein mit dem Tutorial Code wird auch keine datei erstellt, wie es bei mir der Fall ist.

Die Wette verlierst du. Das einzige Problem ist, dass Tutorial und tatsächlicher Code des Beispielprogramms Movie Organizer nicht mehr so richtig zusammen passen.

Tillmet 15. Mai 2004 09:52

Re: XML-Tutorial
 
Sorry, falls ich was überlesen habe, was mein Problem behebt, aber soweit ich das sehe, gehen die ganzen Links mit den neuen Versionen des Tuts nicht mehr, nur die Einführung, ist das so richtig?


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:03 Uhr.
Seite 2 von 11     12 34     Letzte »    

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