Seite 1 von 1

DataSection ?

Verfasst: 26.06.2005 21:34
von ThomasT
Ich möchte statische Daten möglichst kompakt im Programm ablegen.
Dazu habe ich einen Source auf der PureBasic.com Seite gefunden.
Das Programm heisst Ladys Garden.

Ich kann erkennen, dass die Daten in einem Array gespeicher werden.
Was ich nicht herausfinden konnte, ist wie diese Daten aus der "DataSection" gelesen werden.
Im Manual hab ich auch zu DataSection nichts gefunden.

Kann mir jemand erklären wie das funktioniert, oder gibt es eine bessere Methode statische Daten abzulegen?

Danke für jede Hilfe.


http://www.purebasic.com/download/examp ... sGarden.pb


DataSection ;maze data and movement data for Lady
level1: ;each level has 2 sets of maze data
Data.l 1,1,1,1,1,1,1,1,1,1,1,1
Data.l 1,3,5,5,5,5,5,5,5,5,5,1
Data.l 1,5,2,2,5,1,1,5,2,2,5,1 ;1 = bush1
Data.l 1,5,2,5,5,5,5,5,5,2,5,1 ;2 = bush2
Data.l 1,5,2,5,2,2,2,2,5,2,5,1 ;3 = no flower (space)
Data.l 1,5,5,5,5,5,5,5,5,5,5,1 ;5 = flower
Data.l 1,5,1,1,5,1,1,5,1,1,1,1
Data.l 1,5,5,5,5,5,5,5,5,5,5,1
Data.l 1,5,2,5,2,2,2,2,5,2,5,1
Data.l 1,5,2,5,5,5,5,5,5,2,5,1
Data.l 1,5,2,2,5,1,1,5,2,2,5,1
Data.l 1,5,5,5,5,5,5,5,5,5,5,1
Data.l 1,1,1,1,1,1,1,1,1,1,1,1
Data.l 74 ;number of flowers to collect
[/url]

Verfasst: 26.06.2005 22:11
von Batze
Die Daten werden mit PeekL() ausgelesen. (Hab den Code jetzt nicht gelsen)
du gibst dann einfach an wo das zu suchen ist.

Datasection ist immer dann gut wenn man keine Extradateien ablegen will.
Man kann in so ne Datasection mit IncludeBinary ja auch Dateien reinlegen und dann mit CatchImage() oder so lesen.
Adresse: ?level1 + Kommastelle + Zeile*12

Da braucht man dann auch kein Array für.

Verfasst: 26.06.2005 22:59
von Kaeru Gaman
@Batze
argl... Data werden mit Read ausgelesen... >_<

natürlich kann man die auch mit Peek auslesen, aber machs erstmal easy, hier ist der anfänger-bereich

@Thomas
...außerdem müßte in der help was drin stehen...
geh einfach mal mit dem Cursor auf den begriff DataSection, und drück F1

...mal ein kleines sample:

Code: Alles auswählen

Restore Label
Q.l

For N = 0 to 15
    Read Q
    Debug Q
Next

End

DataSection

Label:

Data.l 37, 45, 21, 99, 52, 64, 92, 37, 45, 17, 86, 69, 42, 58, 23, 71

EndDataSection

Verfasst: 27.06.2005 08:10
von Batze
Achja Read, wie lang hab ich das nicht mehr benutzt. <)
Hast natürlich Recht mit Read ist es viel einfacher.

Verfasst: 27.06.2005 09:37
von DarkDragon
Kaeru Gaman hat geschrieben:@Batze
argl... Data werden mit Read ausgelesen... >_<

Is doch egal wie mans macht, es ist doch immer ein Speicherbereich. :allright: Nur kostet Peek/CopyMemory einen weiteren Befehlsaufruf.

Danke für die Tips

Verfasst: 27.06.2005 20:51
von ThomasT
Das mit DataSection F1 funktioniert tatsächlich.
Ich hatte in der Hilfe im Index DataSection und Read eingetippt und dabei nichts gefunden.

Re: Danke für die Tips

Verfasst: 27.06.2005 23:09
von Andre
ThomasT hat geschrieben:Das mit DataSection F1 funktioniert tatsächlich.
Ich hatte in der Hilfe im Index DataSection und Read eingetippt und dabei nichts gefunden.
Im Index fehlen die Schlüsselwörter.
Muss ich gleich nochmal Fred erinnern. :twisted:

Verfasst: 07.08.2005 18:37
von Andre
Dank einem Update des DocMaker durch fr34k werden die 'Keywords' bei v3.94 mit im Index der Hilfe stehen... :D