Hinweise + Vorschläge f. bessere Befehls-Beschreibungen etc.

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
Little John

Beitrag von Little John »

Bei PB 4.31 gibt es weder in der Hilfe noch bei den Beispielprogrammen ein Beispiel für das Erzeugen einer XML-Datei. Da das nicht ganz intuitiv zu erledigen ist, wäre solch ein Beispiel IMHO wichtig, z.B. in der Hilfe beim Befehl CreateXML(). Etwa so (wenn das denn richtig ist):

Code: Alles auswählen

Define xml, mainNode, item

xml = CreateXML(#PB_Any)
mainNode = CreateXMLNode(RootXMLNode(xml))
SetXMLNodeName(mainNode, "Zoo")

item = CreateXMLNode(mainNode)
SetXMLNodeName(item, "Tier")
SetXMLAttribute(item, "id", "1")
SetXMLNodeText(item, "Elefant")

item = CreateXMLNode(mainNode)
SetXMLNodeName(item, "Tier")
SetXMLAttribute(item, "id", "2")
SetXMLNodeText(item, "Tiger")

SaveXML(xml, "demo.xml")
Gruß, Little John
Andesdaf
Moderator
Beiträge: 2671
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

Nochmal vielen Dank für deine fleißige Arbeit! :allright:
Win11 x64 | PB 6.20
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Beitrag von Kurzer »

Huhu,
ich hab mir gerade mal in einem anderen Thread etwas Luft gemacht.. und Kaeru meinte richtigerweise, daß die Quintessenz des ganzen hier vieleicht mal rein könnte. :)

Als dann...
Wieso muß man in den Compileroptionen noch "UserLibThreadSafe" eintragen, wenn es doch den Klicker Threadsicheres Executable erzeugen gibt?

Die Hilfe schreibt dazu:
Threadsicheres Executable erstellen
Diese Option teilt dem Compiler mit, dass er eine spezielle Version von bestimmten Befehlen verwenden soll, um diese sicher zur Verwendung in Threads zu machen. Siehe die Thread Library für weitere Informationen.


Es steht nirgendwo erwähnt, daß man dort manuell "UserLibThreadSafe" eintragen muß, damit threadsichere UserLibs letztendlich auch benutzt werden. Ich ging davon aus, daß eine Userlib, die u.a. im Verzeichnis "UserLibThreadSafe" installiert ist, automatisch von PB benutzt wird, wenn der Klicker aktiviert wurde.

PS: Ebenso das Feld "Linker-Optionen-Datei". Da bin ich letztens auch nur zufällig über einen interessanten Foreneintrag gestolpert - und habe gelernt, daß PB den linker von Pelles C benutzt.

Was steht darüber in der Hilfe?
Linker-Optionen Datei
Hier kann eine Text-Datei definiert werden mit weiteren Kommandozeilen-Optionen, welche beim Erstellen des Executable an den Linker übergeben werden sollen. Die Datei sollte eine Option pro Zeile enthalten.


Das ist alles. Da kann man das auch gleich weglassen.

Aber vielleicht wird einfach nur davon ausgegangen, daß der geneigte PB Programmierer immer auch begnadeter C-Programmierer ist und mit Linkern, Objectdateien etc. vertraut ist.
Die Optionensyntax für so einen C-Linker wird aber vermutlich nicht standardisiert sein.
Ergo: Ohne zu wissen wie die genaue Syntax lautet ist das Feld für die Linker-Optionendatei irgendwie überflüssig.
Ich wär sehr stark dafür, daß auch solches "Insiderwissen" den Weg in die Hilfe findet. :allright:

(Und was man alles mit den Dateien im SDK machen kann wollte ich auch schon immer wissen *hüstel*) <)
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2024: 56 Jahre.
freak
PureBasic Team
Beiträge: 766
Registriert: 29.08.2004 00:20
Wohnort: Stuttgart

Beitrag von freak »

Dieser "UserLibThreadSafe"-Kram ist kein Problem von PB und hat desshalb in der Hilfe überhaupt nichts zu suchen.
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Beitrag von Kurzer »

Ich fände es trotzdem sinnvoll an der Stelle auf die "Tailbite-Libs-Problematik" hinzuweisen. Auch wenn es ursächlich nichts mit PB zu tun hat.

Letztendlich wird es dem User das Suchen nach der Ursache vereinfachen.
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2024: 56 Jahre.
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag von Thorium »

Die Beschreibung der Packerlib benötigt dringend einen zusätzlichen Absatz, der erläutert das für verschiedene Plattformen verschiedene Packalgos verwendet werden und somit nicht kompatibel sind!

Ich hab 3 Tage gebraucht da drauf zu kommen warum die x64 Version meines Ressourceloaders ums verrecken nicht die Ressourcen dekomprimieren will.

Ein Blick in die komprimierten Daten zeigt das der x64 Packer mit ZLib komprimiert und nicht mit JCalG1 wie in der Hilfe angegeben.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Beitrag von Mok »

Es könnte bei der Hilfe zu KeyboardPushed() und KeyboardReleased() auch dazugeschrieben werden, dass statt #PB_Key_All auch #PB_Any geht.
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Little John

Beitrag von Little John »

Mok hat geschrieben:Es könnte bei der Hilfe zu KeyboardPushed() und KeyboardReleased() auch dazugeschrieben werden, dass statt #PB_Key_All auch #PB_Any geht.
Es ist wohl eher Zufall dass #PB_Any ebenso wie #PB_Key_All den Wert -1 hat. Es gibt in PB noch weitere Konstanten mit dem Wert -1, die könnte man dann ebenfalls nehmen.
Wenn allerdings Fantaisie-Software mal den Wert von #PB_Key_All ändert, stört das nicht unsere Programme wenn wir an dieser Stelle tatsächlich #PB_Key_All benutzt haben anstatt #PB_Any oder andere Konstanten mit dem Wert -1. Das ist ja gerade der Witz mit solchen vordefinierten Konstanten (neben der besseren Lesbarkeit), dass man sich nicht darum zu kümmern braucht welche Werte sie haben.

Also: #PB_Key_All ist der offizielle Wert an dieser Stelle, und wer etwas anderes benutzt braucht sich ggf. über Überraschungen nicht zu wundern. In der Hilfe hier noch andere Konstanten zu erwähnen die (zufällig) auch den Wert -1 haben, ergibt keinen Sinn.

Gruß, Little John
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Beitrag von Mok »

@LittleJohn:
Ja, ok, aber ANY heißt auf deutsch soviel wie "irgendwas", ist es logisch, dass man bei KeyboardPushed(#PB_Any) eben "irgendwas" drücken muss.
Ok, darüber lässt sich auch streiten... vergessen wir's.
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

@LittleJohn: dein Beispiel zu CreateXML() hat (in abgewandelter Form) seinen Weg in die Hilfe gefunden, danke! :)
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Antworten