Undokumentierte Features von PB

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

@Froggerprogger
Ich glaube

Code: Alles auswählen

Dim LocalArray.l(PeekL(*arr-8)) 
FreeMemory(@LocalArray()) 
geht nich, FreeMemory gibt 0 zurück. Arrays sind wohl anders aufgebaut als normale Speicherbereiche.
Deshalb muss man den Pointer zwischenspeichern:

Code: Alles auswählen

Dim LocalArray.l(50)
*p = LocalArray()
;Do something
LocalArray() = *p
Dim LocalArray.l(0)

greetz
remi
Benutzeravatar
Froggerprogger
Badmin
Beiträge: 855
Registriert: 08.09.2004 20:02

Beitrag von Froggerprogger »

Whoops, ja da wird von FreeMemory ja auch der Pointer auf den Start des Adressbereichs verlangt.
Z.B. klappt ja auch nicht:

Code: Alles auswählen

*mem = AllocateMemory(1024)
debug FreeMemory(*mem+4)
Korrekt funktioniert es bei Arrays mit Offset -16 (auch undokumentiert :wink: ) :

Code: Alles auswählen

FreeMemory(@LocalArray()-16)
Habs oben im Code geändert.

[edit]Allerdings ist das dimensionieren nach PeekL(*arr)-8 sinnlos, da der Array-Pointer sowieso neu gesetzt wird, und dann auch die Dimensionen des neuen Arrays übernommen werden. Habs mal geändert auf Dim LocalArray.l(0).
Für die 20 Bytes kann man sich allerdings das FreeMemory auch fast sparen ;-)
[/edit]
!UD2
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

Ich glaube, ich habe was gefunden:

Code: Alles auswählen

Drives()
Gibt bei mir unter WinXP Pro alle gültigen (=momentan vorhandenen) Laufwerksbuchstaben in einem einzigen String zurück, getrennt durch Spaces.
Wenn es bei jemandem nicht funzen sollte,bitte posten. Ich habe das mit PB 3.92 getestet, und weder n der PB-Hilfe noch in den Helpfileszu den installierten Userlibs einen Hinweis auf den Befehl gefunden. Auchin der jaPBe-Hilfehabe ich nix gefunden...

//EDIT: Ich scheine mich geirrt zu haben, Drives() scheint kein PB-Befehl zu sein... (-> folgendes Posting von Glubschi)
Zuletzt geändert von hardfalcon am 01.03.2005 17:51, insgesamt 1-mal geändert.
glubschi90
Beiträge: 274
Registriert: 04.09.2004 01:43
Wohnort: Würzburg

Beitrag von glubschi90 »

@HardFalcon
Das ist bestimmt 'ne UserLib, denn bei mir geht's sowohl als normaler Befehl als auch als API-Befehl "Drives_()" nich'
PureBasic 4.30
Benutzeravatar
ParkL
Beiträge: 17
Registriert: 02.11.2004 16:13
Wohnort: Ruhrpott
Kontaktdaten:

Beitrag von ParkL »

hi, nochmal kurz zu den konstanten ...

also sowas ist eigentlich absolut nicht nur zur codestrukturierung gedacht sondern vor allem auch zu cross-platform zwecken ...

ein #PB_Image_Border könnte auf einem Win32 Compiler einen anderen Wert enthalten als auf einem Mac Compiler

Ob das jetzt bei PB allerdings wirklich der Fall ist, weiß ich nicht.
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

@ParkL: Hmm, da hast du eigentlich recht... gut, dass noch jemand für mich mitdenkt... Dann kann ich mein Gehirn GIMPS zur Verfügung stellen, um die 43. Mersennsche Primzahl zu finden.... :lol:

cya
Pascal
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

hardfalcon hat geschrieben:Dann kann ich mein Gehirn GIMPS zur Verfügung stellen, um die 43. Mersennsche Primzahl zu finden....
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Was will der Autor uns damit sagen? :?
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

"Yes", said the obligative famous passing maniac.

eben dieses...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

Deeem2031 hat geschrieben:Was will der Autor uns damit sagen? :?
Meinst du mich oder den Autor von "Per Anhalter durch die Galaxis"?
Antworten