Seite 3 von 4
Verfasst: 04.07.2006 21:37
von mk-soft
Ich habe in Purbasic noch kein Spiel Programmiert. Nur Serverdienste, Langzeit Datenerfassung, Datenbankenkonvertiereung. etc.
Allso nichts universell einsetzbares
Verfasst: 05.07.2006 07:18
von #NULL
ich finde kaeru's erster ansatz ist der treffenste, und für grosse arrays geht's ja auch noch so
Code: Alles auswählen
Dim s.s(5)
For i=0 To 5 : Read s(i) : Next
DataSection
Data.s "wie", "macht", "man", "das", "in", "PureBasic"
EndDataSection
ts' methode mit stringField ist ja nur zum lesen zu gebrauchen, nicht zum schreiben, aber man könnte sie auch zum initialisieren des string arrays verwenden(stringField-macro anstatt dataSection).
Verfasst: 05.07.2006 07:58
von helpy
In C (im ersten Beitrag) geht es doch um ein Pointer-Array auf String-Konstanten, oder irre ich mich da.
Ein String-Array in PureBasic entspricht diesem Pointer-Array! Vorteil ist, dass ich in PB sehr leicht auf die Strings zugreifen kann, weil das Array den Datentyp String hat. Mit dem Read aus einer DataSection wird jedoch eine Kopie der Strings angelegt.
Wem ein Pointer-Array auf die Strings in der DataSection reicht, kann das auch so machen:
Code: Alles auswählen
Dim *tex_name.Character(5)
*tex_name(0) = ?tex_data
For i=1 To 5
*tex_name(i) = *tex_name(i-1) + MemoryStringLength(*tex_name(i-1))+1
Next
For i=0 To 5
Debug *tex_name(i)
Debug PeekS(*tex_name(i))
Next
DataSection
tex_data:
Data.s "wie", "macht", "man", "das", "in", "PureBasic"
EndDataSection
cu, helpy
Nachtrag: Damit's auch für Unicode funktioniert:
Code: Alles auswählen
Dim *tex_name.Character(5)
*tex_name(0) = ?tex_data
For i=1 To 5
*tex_name(i) = *tex_name(i-1) + MemoryStringLength(*tex_name(i-1)) + SizeOf(Character)
Next
For i=0 To 5
Debug *tex_name(i)
Debug PeekS(*tex_name(i))
Next
DataSection
tex_data:
Data.s "wie", "macht", "man", "das", "in", "PureBasic"
EndDataSection
Verfasst: 05.07.2006 10:46
von Kaeru Gaman
@helpy
yo, man, YOU hit it!

Verfasst: 05.07.2006 16:01
von DarkDragon
MVXA hat geschrieben:> Hmm ne, also das ist definitiv falsch.
Warum?
> Ich würds so wie Kaeru_Gaman lösen.
ich z.b. nich.. Wozu array mit werten laden und zeit verschwenden,
wenns schon vorher im speicher stehen kann
Warum es falsch ist? Gucks dir mal an, das gibt "acht" statt "macht" aus, weil es ja im String + 4 geht und nicht die Pointer durchgeht.
[EDIT] Mist, ein Tag zu spät.
Verfasst: 05.07.2006 16:07
von Kiffi
DarkDragon hat geschrieben:[EDIT] Mist, ein Tag zu spät.

Verfasst: 05.07.2006 16:18
von ts-soft
>> [EDIT] Mist, ein Tag zu spät.
Hab auch schon übersehen, das ein Thread aus mehr als einer Seite besteht..

Verfasst: 06.07.2006 09:33
von real
ts-soft hat geschrieben:
Wieso, Kaeru hats doch gezeigt, der Rest sind ja nur alternativen
Das gilt aber nur für unflexible Programmierer!
Das (und wie) es geht habt ihr gezeigt, und dafür war das "Danke".
Das mit dem unflexiblen Programmierer überles ich mal dezent...

Verfasst: 06.07.2006 13:36
von MVXA
> Das mit dem unflexiblen Programmierer überles ich mal dezent...
Wenn man die Wahrheit nicht vertragen kann....
Verfasst: 06.07.2006 15:50
von real
Wie immer hier im Forum:
Wenn jemand (auch nur in bestimmten Teilen) an PB zweifelt oder Alternativen den Vorzug gibt werden manche persönlich. Fakt: die Definition eines simplen Arrays von Char-Pointern ist unter C einfacher als unter PB.
@ts-soft, Kaeru Gaman & MXVA:
Bin ich unflexibel, weil ich mehr als nur PB machen und C in diesem Fall bevorzuge? Oder weil ich nicht Lust habe, meine wertvolle Zeit mit der Konvertierung zu vergeuden? Ich hab wahrgenommen, dass es unter PB in verschiedenen Variationen möglich ist, aber etwas mehr Zeit in Anspruch nehmen würde, als ich investieren will.