![]() |
XML-Tutorial
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mich mal drangesessen ein Tutorial zu schreiben.
Es ist mir schon oft in der DP aufgefallen, dass viele XML lernen wollen und deswegen habe ich mein bescheidenes Wissen über XML in ein Tutorial verfasst. Mit der Hilfe von Mathias und Christian und allen anderen, die mir geholfen haben das Tutorial zu verbessern, ist das Tutorial nun - hoffentlich - fehlerfrei. Im Laufe der Zeit werde ich immer mal wieder Sachen einbauen und Sie Anhängen. Das im Tutorial programmierte Programm habe ich leider bisher noch nicht hochladen können, werde das aber schnellstmöglich nachholen. Viel Spaß und Erfolg mit dem Tutorial! Chris Download-Update (März, 2007): Download auch wieder über meine Website. ![]() Ist aber immer noch die Version 2.1 (derzeit aktuellste Version aus dem Jahr 2003). Ich denke immer noch über eine Version 3.0 nach. Wer mich unterstützen will, darf mir gerne finanzielle Unterstützung zu kommen lassen. :mrgreen: |
Re: XML-Tutorial
Hi,
endlich ist es soweit: eine überarbeitete Version des XML-Tutorials. Vielleicht - hoffentlich - ein wenig besser, als die alte Version. Downloadlink: ![]() Weitere Infos und immer aktuelle Versionen: ![]() In den nächsten Wochen gibt es dann auch 2.5, in der es dann auch um Attribute gehen wird. An dieser Stelle noch mal Dank an Mathias Simmack, der mal wieder das Tutorial korrigiert hat! :thuimb: Viel Spaß, Chris |
Re: XML-Tutorial
Hi,
jetzt habe ich ganz schnell mal eine neue Version hochgeladen. Ein paar Fehler hatten sich eingeschlichen. ;) Des Weiteren ist das Kapitel zum Löschen von Datensätzen nun drin. Download: ![]() Projektwebsite: ![]() Viel Spaß beim Lesen, Chris |
Re: XML-Tutorial
Zitat:
|
Re: XML-Tutorial
Hi,
Zitat:
Chris |
Re: XML-Tutorial
Zitat:
Edit: Hat sich erledigt, ich weiß mittlerweile, wie es geht. Trotzdem danke CU aps |
Re: XML-Tutorial
Hi,
derzeit hab ich akuten Zeitmangel. Aber ich denke in den Ferien, die am kommenden Wochenende beginnen werde ich ein wenig weitermachen. :| Chris |
Re: XML-Tutorial
Ich wollte jetzt auch mal das Tutorial durchackern, um überhaupt mal ein wenig XML zu kapieren. (habe kein Bock mehr für meine kleinen Projekte immer gleich ne Interbase oder Firebird Datenbank zu generieren ;) ) Hab allerdings Probleme in Unit2 in der OnClick Routine.
Folgende Zeile macht mir da Sorgen:
Delphi-Quellcode:
Wenn ich das richtig sehe, wird hier ja wohl nur eine Art eindeutiger Datensatzschlüssel generiert, der fortlaufend hochzählt. Der Befehl da oben versucht aber den String mit +1 hochzuzählen.
newSub.text:=IntToStr(MainForm.MovieList.items[MainForm.MovieList.Items.Count - 1].Caption) +1;
Irgendwie könnte ich das sicher umbauen, nur weiß ich nich wo sich das evtl. auswirkt und ggf. kann Meister XML dann sein Tutorial gleich korrigieren :) Oder hab ich doch irgendwie n altes Tutorial erwischt? Gruss p0ke |
Re: XML-Tutorial
Liste der Anhänge anzeigen (Anzahl: 1)
Mal seh´n, ob ich das noch richtig im Kopf habe -
In der von dir genannten Zeile wird der Wert der "id" ermittelt, die im MovieOrganizer bis einschließlich Version 1.7 als Wert in der List-View gespeichert wurde. Das bedeutet, im Normalfall steht also eine Zahl drin, die demzufolge auch mit +1 um Eins erhöht werden kann. Allerdings (Achtung, persönliche Meinung!) fand ich diese Sache mit der "id" überflüssig, darum flog sie in der (inoffiziellen) Version 1.8 vom MO auch raus. Ich häng´s mal ran. Aber bitte bedenken: die Version ist von mir be- und überarbeitet worden. Zwar hatte ich den Segen von Chakotay, aber offiziell veröffentlicht (auf Chakotays Webseite, meine ich) wurde sie IMHO bisher nie. Es ist halt etwas problematisch, wenn sich ein Tutorial nur grob an einem Programm orientiert, weil man nicht wirklich etwas hat, das man überprüfen kann. @Chakotay: du kannst ja mal überlegen, ob du das XML-Tutorial nicht doch mal wieder an die aktuelle MO-Version anpassen willst. Für die Attribute ließe sich ja auch ein eigenes Kapitel schreiben, das sich auf ein anderes Programm bezieht. :) |
Re: XML-Tutorial
Hi,
kein Stress, viel Zeit und keine Lust. ;) Ne... ich werde mich morgen wieder dransetzen. Aber erstmal ist der MovieOrganizer dran, der jetzt mal wieder angepasst wird (@Mathias: nein, nicht viel nur ein wenig) und ein Setup bekommt (ggf. probier ich mal den Installshield aus :gruebel:). Danach werde ich das Tutorial überarbeiten. Allerdings bin ich mir noch nicht sicher, ob das Tutorial weiterhin an dem MovieOrganizer anlehnt, oder nicht. Mal schau'n. Chris |
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?
|
Re: XML-Tutorial
Hi,
:gruebel: Genau.... das Problem ist, dass derzeit mein Webserverprobleme hatte mit dem Download der Dateien. Deswegen bin ich dabei den Downloadbereich etwas umzustrukturieren. Heute abend dürfte es wieder gehen. Chris |
Re: XML-Tutorial
könntest dus mir schicken *dackelblick*
email: s.mueller@inode.at danke ich brauchs nämlich gaaaaanz dringend :D |
Re: XML-Tutorial
Ok, danke
Kannst dann ja gleich posten, wenns wieder on is, könnte es dann gut gebrauchen ^^ |
Re: XML-Tutorial
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
hab die aktuelle Version mal angehängt. Chris |
Re: XML-Tutorial
danke
|
Re: XML-Tutorial
Ne geht irgendwie nicht :cry:
//Edit: sorry wegen dem doppelpost |
Re: XML-Tutorial
Wie geht irgendwie nicht? :gruebel:
Bei mir funktioniert der Download via Anhang. ;) Chris |
Re: XML-Tutorial
Zitat:
|
Re: XML-Tutorial
Hi
Also, als erstes, der Download funzt mit Rechtsklick und danke für das Tut, jetzt wüsste ich aber noch gerne, wie du immer diese PDF Dateien machst ^^. |
Re: XML-Tutorial
Es gibt bspw. Programme, die richten sich im System als virtueller Drucker ein. Du schreibst dein Zeug, klickst auf Drucken, und es landet in diesem Programm und wird dort als PDF ausgegeben. Einige kosten nix, andere kosten was. Einige bieten nur die blanke Ausgabe als PDF, andere (pdfFactory bspw.) erlauben auch die Gestaltung des Inhaltsverzeichnisses.
|
Re: XML-Tutorial
Danke, werde mal danach suchen, das mit dem Drucken klingt auch sehr einleuchtend.
Edit: Um keinen unnötigen Post zu machen, trotzdem nochmal danke :mrgreen: |
Re: XML-Tutorial
Hi,
das Tutorial habe ich mit StarOffice/OpenOffice.org gemacht: ![]() Seit Version 1.1 kann OOo auch PDF's erzeugen. ;) Nun aber Schluss mit OT und das Tutorial lesen. :warn: :mrgreen: Chris |
Re: XML-Tutorial
Hi, irgendwie kann ich den Movieorganiser nicht runterladen!
mach ich was falsch, oder funkt das wirklich nich? |
Re: XML-Tutorial
Zitat:
|
Re: XML-Tutorial
Hi.
habe noch nie was mit XML-Daten gemacht und wollte dein Tut bearbeiten. Finde es nicht schlecht - Ehrlich. Doch eins macht mir Probleme. Ich habe Typbibliothek importiert (allerdings 5.0) und dann öffnet sich die pas-datei mit 19.000 Zeilen. Wie kann ich jetzt eine XML-Datei erstellen? Muss ich die Pas wieder schließen, oder offen lassen? Ist bestimmt ganz simpel aber ich komm da nicht weiter *schähm* |
Re: XML-Tutorial
Hi,
erstmal wirst du mit XML 5.0 ein paar Probleme bekommen mit dem Tutorial, da sich einige Dinge geändert haben. ;) Außerdem hat nicht jeder MSXML5.0, weil das nur bei Office 2003 bei ist und nicht herunterladbar ist. ;) Und wegen der Datei: das steht ja alles im Tutorial drin. Schließen und weitermachen. *g* Chris PS: Du bist recht weit am Anfang, um nicht zu sagen, dass du gerade erst angefangen hast von daher stehe ich deiner Beurteilung etwas kritisch gegen über. :roll: |
Re: XML-Tutorial
So,
bin jetzt schon weiter. Habe die procedure UpdateList erstellt und einen Datensatz in die XML-Datei eingetragen. Doch wenn ich die Prozedur ausführe, dann schreibt er nichts in die ListView, sondern gibt folgende Meldung aus:
Delphi-Quellcode:
meine Prozedur sieht so aus:
Listenindex überschreitet -1
Delphi-Quellcode:
und meine XML-Datei so:
procedure TForm1.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 ListView1.Items.Clear; ListView1.Items.BeginUpdate; movies:=xmlDoc.documentElement.selectNodes('movie'); for i:=0 to movies.length -1 do begin subnode:=movies.item[i].selectSingleNode('id'); ListView1.Items.Add; ListView1.Items[i].Caption:=SubNode.Text; with ListView1.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; ListView1.Items.EndUpdate; end;
Delphi-Quellcode:
Alles streng nach Beispiel.
<?xml version="1.0" encoding="ISO-8859-1"?>
<movieorganizer> <movie> <id>1</id> <name>Der Schuh des Manitu</name> <format>DVD</format> <ton>DD5.1</ton> <anzmedien>2</anzmedien> <bildqualität>1+</bildqualität> <tonqualität>1</tonqualität> <gesamt>1+</gesamt> <verliehen></verliehen> <comment>Lustige Komödie mit Bully.</comment> <screenshot /> </movie> </movieorganizer> Doch diese Stelle der Prozedur musst ich von:
Delphi-Quellcode:
in
for i:=0 to length(NAMES)-1 do begin
Delphi-Quellcode:
ändern, da folgende Comp-Meldung erschien:
for j:=0 to length(NAMES[-1]) do begin
Delphi-Quellcode:
[Fehler] Unit1.pas(65): '[' erwartet, aber ')' gefunden.
|
Re: XML-Tutorial
|
Re: XML-Tutorial
falscher link im 2. beitrag !
der link zur aktuellsten version ist: ![]() trotsdem danke!!!! ECHT GEIL! :mrgreen: |
Re: XML-Tutorial
Zitat:
Delphi-Quellcode:
mittlerweile(??) eine eigene Eigenschaft "NAMES" hat, benenn das Array um in "NAMEN", dann gehts.
with ListView1.Items[i].SubItems do begin
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 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