![]() |
Re: XML-Tutorial
Zitat:
Aber danke für den Source, inzwischen hatte sich das allerdings auch erledigt. mfg p0ke |
Re: XML-Tutorial
Zitat:
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:
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.
MainForm.MovieList.items[MainForm.MovieList.Items.Count - 1].Caption
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. |
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 |
Re: XML-Tutorial
Kleine Anmerkung, auch wenn ich jetzt wieder als Klugscheisser verschrien werde.. ;-)
Zitat:
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:
|
Re: XML-Tutorial
Hi,
okay! Werde ich korrigieren. Danke, Chris |
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 ? |
Re: XML-Tutorial
jetzt müsstest du nur noch das Problem erläutern :gruebel:
|
Re: XML-Tutorial
Jetzt habe ich auch mal eine Frage. :mrgreen:
Im Tutorial steht in etwa folgender Code:
Delphi-Quellcode:
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..."
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; Sprich dieseZzeile:
Delphi-Quellcode:
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.
FXMLDoc.loadXML('<?xml version="1.0"?><adressdb></adressdb>');
Wie also erstelle ich eine neue XML-Datei richtig? |
Re: XML-Tutorial
Im Prinzip passt das schon mit dem Code. Gespeichert wird sie dann im Beispielprogramm an anderer Stelle durch
Delphi-Quellcode:
(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.
xmldoc.save('test.xml');
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:
|
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 07:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz