Seite 1 von 3
Dinge, die ich nicht wusste
Verfasst: 26.09.2008 16:56
von Josef Sniatecki
Hallo,
in diesem Thread sollten alle Dinge über PureBasic aufgeschrieben werden,
die sehr interessant und nützlich sind.
(Ich hoffe so ein Thema gab es nicht vor ein paar Wochen)
Hier sind meine Tipps:
1. Größe einer Array
Es ist möglich die größe (Anzahl der Items)
einer Array folgendermaßen zu erhalten:
2. NewLists und Arrays in DLL's
Achtung: Arrays und LinkedLists sollten inerhalb
einer Prozedur definiert werden, wenn der Code in eine
DLL generiert werden soll.
Beispiel:
Code: Alles auswählen
ProcedureDLL.l Init()
Global Dim Array(123)
Global NewList List()
EndProcedure
3. DataSections besser auslesen (für Anfänger)
Daten aus "DataSections" können handlicher durch
Zeiger ausgelesen werden.
Beispiel:
Code: Alles auswählen
DataSection
Person:
Data.s "Josef"
Data.l 15
EndDataSection
Debug PeekS(?Person)
Debug PeekL(?Person+Len(PeekS(?Person))+1)
Nun seid ihr dran...
Re: Dinge, die ich nicht wusste
Verfasst: 26.09.2008 17:18
von Little John
Josef Sniatecki hat geschrieben:1. Größe einer Array
Es ist möglich die größe (Anzahl der Items)
einer Array folgendermaßen zu erhalten:
Ich kenne dafür diesen Code
Vielleicht kommt das aufs gleiche raus ...
Aber das ist jetzt sowieso nicht mehr zu empfeheln, da es nie offiziell dokumentiert war, und da PB 4.30 jetzt eine eingebaute Funktion dafür hat.
Josef Sniatecki hat geschrieben:2. NewLists und Arrays in DLL's
Achtung: Arrays und LinkedLists sollten inerhalb
einer Prozedur definiert werden, wenn der Code in eine
DLL generiert werden soll.
Beispiel:
Code: Alles auswählen
ProcedureDLL.l Init()
Global Dim Array(123)
Global NewList List()
EndProcedure
PB 4.20 hat geschrieben:Die Deklaration von Arrays und LinkedLists mittels Dim bzw. NewList muss stets innerhalb der Prozedure AttachProcess erfolgen.
Gruß, Little John
Verfasst: 26.09.2008 17:20
von Josef Sniatecki
Upps. Da bin ich wohl nicht auf dem neuesten Stand. Nun habe ich was
aus meinen eigenen Thread gelernt.

Verfasst: 26.09.2008 19:31
von marco2007
Josef Sniatecki hat geschrieben:
..ergibt bei mir 5.
Sizeof(quad) würde schon besser funken, da 8!
Verfasst: 27.09.2008 11:22
von Batze
Das ergibt die korrekten 11.
Verfasst: 27.09.2008 11:35
von marco2007
Stimmt! ...so soll es auch sein

Verfasst: 27.09.2008 11:42
von STARGÅTE
ich frage mich gerade wieso das heir "Für Anfänger" leichter sein soll:
Code: Alles auswählen
DataSection
Person:
Data.s "Josef"
Data.l 15
EndDataSection
Debug PeekS(?Person)
Debug PeekL(?Person+Len(PeekS(?Person))+1)
zumal in der Hilfe noch steht:
Peek/Poke sind für fortgeschrittene Programmierer
Da finde ich das (persönlich) einfacher zu verstehen:
Code: Alles auswählen
DataSection
Person:
Data.s "Josef"
Data.l 15
EndDataSection
Restore Person
Read Name.s
Read Alter.l
Debug Name
Debug Alter
; PB 4.20 !!
Verfasst: 27.09.2008 11:44
von cxAlex
So noch was was nicht jeder weis:
Wenn man in einer ForEach - Schleife mit DeleteElement() ein Element der Liste ,die abgearbeitet wird, löscht, sollte man sofort danach Continue ausführen, ansonsts kanns (muss nicht) bei der Liste später Fehler geben. Ich weis nicht ob sich das mit dem neuen LinkedList-Managemant in 4.3 ändert, bis 4.2 wars so.
Verfasst: 27.09.2008 13:10
von Little John
2
cxAlex:
Das ist ja total wichtig!
Wenn das nicht in der Hilfe steht, vielleicht kannst Du's dann vielleicht auch nochmal
hierhin posten?
Gruß, Little John
Verfasst: 27.09.2008 13:16
von STARGÅTE
das man Continue benutzen "muss" steht nicht in der Hilfe, weil es ja kein "muss" ist.
Was bei DeleteElement()passiert steht ausführlich in der Hilfe drin...
genauso gut kann man einfach darauf achten das ein Delete immer am "Ende" der schleife steht, sodass es dann eh weiter geht ...