Aktuelle Zeit: 27.09.2020 08:01

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Forum gesperrt Dieses Thema ist gesperrt. Sie können keine Beiträge editieren oder weitere Antworten erstellen.  [ 25 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: 09.06.2007 19:02 
Ein weiterer Unterschied:
Mit XML lassen sich baumartige Datenstrukturen (und zwar beliebige) direkt darstellen bzw. speichern. Bei Preferences (bzw. INI-Dateien) folgen die Abschnitte sequentiell aufeinander, sie lassen sich nicht verschachteln.

Ich freue mich sehr, dass PB 4.10 XML-Unterstützung mitbringt! :allright:

Gruß, Little John


Nach oben
  
 
 Betreff des Beitrags:
BeitragVerfasst: 09.06.2007 19:18 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
>> Mit XML lassen sich baumartige Datenstrukturen (und zwar beliebige)
Ergänzung: Ausserdem als TreeLinkList im Speicher zu verwenden (muß nicht
gespeichert werden)

_________________
PureBasic 5.71 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 19.3 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 09.06.2007 19:27 
Cool. Auf was für Ideen die "Jungs" so kommen ...
Die Firma heißt wohl nicht umsonst Fantaisie Software. :D

Little - ein bisschen traurig, PB erst relativ spät entdeckt zu haben - John


Nach oben
  
 
 Betreff des Beitrags:
BeitragVerfasst: 10.06.2007 06:31 
Offline
Benutzeravatar

Registriert: 28.07.2005 12:39
Hier mal als einfaches assoziatives Array. Das witzige ist das man
kopieren, speichern und wieder einlesen kann.

Code:

Structure sArray
  *vt.l
  obj.l
  bno.l
EndStructure

Interface iArray
  set(key.s,value.s)
  get.s(key.s)
  save(filename.s)
  load(filename.s)
  copy(*obj.sArray)
EndInterface

Procedure _copy(*this.sArray,*obj.sArray)
  DeleteXMLNode(*obj\bno)
  CopyXMLNode(*this\bno,RootXMLNode(*obj\obj))
EndProcedure

Procedure _save(*this.sArray,file.s)
  SaveXML(*this\obj,file)
EndProcedure

Procedure _load(*this.sArray,file.s)
  FreeXML(*this\obj)
  *this\obj = LoadXML(#PB_Any,file)
EndProcedure

Procedure _set(*this.sArray,key.s,value.s)
  Protected Node
 
  Node = XMLNodeFromPath(*this\bno,key)
  If Node : DeleteXMLNode(Node) : EndIf 
 
  Node = CreateXMLNode(*this\bno)
  SetXMLNodeName(Node,key)
  SetXMLNodeText(Node,value)
 
EndProcedure

Procedure.s _get(*this.sArray,key.s)
  Protected Node = XMLNodeFromPath(*this\bno,key)
  If Node
    ProcedureReturn GetXMLNodeText(Node)
  EndIf
EndProcedure

DataSection
AAVTable:
Data.l @_set(),@_get(),@_save(),@_load(),@_copy()
EndDataSection

Procedure NewArray()
  Protected *obj.sArray
  *obj = AllocateMemory(SizeOf(sArray))
  *obj\vt  = ?AAVTable
  *obj\obj = CreateXML(#PB_Any,#PB_Ascii)
  *obj\bno = CreateXMLNode(RootXMLNode(*obj\obj))
  SetXMLNodeName(*obj\bno,"base")
  ProcedureReturn *obj
EndProcedure

;##################################################################
;#                                                                 
;#                               TEST                             
;#                                                                 
;##################################################################


Test.iArray = NewArray()

Test\set("Erna","Hans")
Test\set("Herbert","Hilde")
Test\set("Dieter","Trude")

Test\save("blub.xml")

Test\set("Herbert","Heidi")

Test2.iArray = NewArray()
Test2\load("blub.xml")


test3.iArray = NewArray()
Test\copy(test3)

Debug Test2\get("Herbert")
Debug Test2\get("Erna")
Debug Test2\get("Dieter")

Debug "----------------"

Debug Test\get("Erna")
Debug Test\get("Herbert")
Debug Test\get("Dieter")

Debug "----------------"

Debug test3\get("Erna")
Debug test3\get("Herbert")
Debug test3\get("Dieter")




_________________
Suche


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 10.06.2007 09:54 
Sehr interessant, ich hatte mich sowieso schon gefragt wie man in PB am besten assoziative Arrays implementiert.

Aber mal 'ne blöde Frage zu einem Nebenaspekt. Wie kann man erreichen, dass die gespeicherte Datei etwa so aussieht ...
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<base>
<Erna>Hans</Erna>
<Herbert>Hilde</Herbert>
<Dieter>Trude</Dieter>
</base>

... dass also durch Zeilenumbrüche an den entspr. Stellen die XML-Datei besser für Menschen lesbar ist?

Gruß, Little John


Nach oben
  
 
 Betreff des Beitrags:
BeitragVerfasst: 10.06.2007 10:10 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
Little John hat geschrieben:
Wie kann man erreichen, dass die gespeicherte Datei etwa so aussieht ...

mit FormatXML(). Dieser Befehl ist aber in der jetzigen Version anscheinend
noch etwas buggy. (afaik hat es Timo bereits für die nächste Version gefixt)

Grüße ... Kiffi

_________________
Schrödingers Smiley :):


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 10.06.2007 11:11 
Offline

Registriert: 01.12.2006 21:08
Wohnort: 66450 Bexbach
Hallo zusammen,

wenn ich in den hier aufegführten Beispielcodes bei den Adressen einen Umlaut einfüge, also z.B.:
Code:
XML = "<adressen>"
XML + " <adresse>"
XML + "  <vorname>Peter</vorname>"
XML + "  <nachname>Pärker</nachname>"
XML + " </adresse>"
XML + " <adresse>"
XML + "  <vorname>Bruce</vorname>"
XML + "  <nachname>Wäine</nachname>"
XML + " </adresse>"
XML + " <adresse>"
XML + "  <vorname>Clark</vorname>"
XML + "  <nachname>Könt</nachname>"
XML + " </adresse>"
XML + "</adressen>"


dann läuft das Beispiel von ts-soft durch, ohne eine Fehlermeldung, bzw. einer Ausgabe der Namen und beim Beispiel von kiffi kommt eine Fehlermeldung "not well formed(invalid token)".
Könnte mir da jemand auf die Sprünge helfen warum das so ist?

Gruss
Peter

_________________
Alle sagten "das geht nicht!" .... und dann kam einer der nichts davon wusste und machte es einfach.


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 10.06.2007 11:48 
2Kiffi:
Danke für die Information.

Und wenn dann in der nächsten Beta-Version die Dokumentation zu XML vollständig ist, will ich mich auch gerne am testen beteiligen -- im Moment geht das schlecht, weil ich ja gar nicht weiß wie die einzelnen Befehle funktionieren sollen.

Gruß, Little John


Nach oben
  
 
 Betreff des Beitrags:
BeitragVerfasst: 10.06.2007 12:01 
Offline
PureBasic Team

Registriert: 29.08.2004 00:20
Wohnort: Stuttgart
pebo:
XML schreibt vor das bei fehlender XML Deklaration der Input als UTF-8 zu betrachten ist.
Du musst also entweder das in UTF-8 konvertieren, oder folgendes ganz
an den Anfang setzen:
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>


Little John:
Die englische Hilfe zu XML ist in der beta1 bereits komplett drin.


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 10.06.2007 12:24 
freak hat geschrieben:
Die englische Hilfe zu XML ist in der beta1 bereits komplett drin.

Danke für den Hinweis.

Wenn ich mich recht erinnere, wird man bei der Installation gefragt, welche Sprachversion der Hilfedatei man installieren möchte, oder?
Wie wäre es, wenn bei Beta-Versionen in solchen Fällen bei der Installation ein Hinweis erscheint etwa wie:
Zitat:
Achtung, die deutsche Hilfe ist in dieser Beta-Version noch nicht vollständig. Entsprechende Englischkenntnisse vorausgesetzt, empfehlen wir Ihnen die englische Hilfe zu installieren.

Denn das ahnt man ja nicht. :)
Ich denke, so ein Hinweis wäre auch im Interesse von Fantaisie Software selbst, denn Ihr hättet so mehr (potentielle) Beta-Tester.

Gruß, Little John


Nach oben
  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Forum gesperrt Dieses Thema ist gesperrt. Sie können keine Beiträge editieren oder weitere Antworten erstellen.  [ 25 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  
cron

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye