Seite 2 von 3

Verfasst: 04.01.2009 18:30
von Kaeru Gaman
auch an dich meine Frage:
wie verzapft ihr da was mit einer Struktur?

ich kann mir das jetzt garnicht richtig vorstellen, deswegen hätte ich gern mal ein Beispiel.

Verfasst: 04.01.2009 18:33
von cxAlex
Sowas: Im ganzen Code kommt nur 1. globale Variable vor.

Code: Alles auswählen

Structure Globals
  Count.l
  Filename.s
  Katze.l
  Hund.i
  PI.d
  wasweisich.COORD
EndStructure


Global glob.Globals ; es gibt nur diese eine globale Variable
//Edit: Hier ein Beispiel wo ich das verwende:

http://www.purebasic.fr/german/viewtopi ... c&start=10

Verfasst: 04.01.2009 18:35
von Kaeru Gaman
OMG :shock:

... das ist mal überhaupt nicht das, wozu Strukturen da sind.

wie schon Josef sagte, Strukturen sind dafür da um gruppen gleichartiger Objekte erzeugen zu können.

aber ok, manche Leute machen wohl Sachen so:
http://www.youtube.com/watch?v=Tlf5m-57g34
von hinten durch die Brust ins Auge...

Verfasst: 04.01.2009 18:37
von cxAlex
Kaeru Gaman hat geschrieben:OMG :shock:

... das ist mal überhaupt nicht das, wozu Strukturen da sind.

aber ok, manche Leute machen wohl Sachen so:
http://www.youtube.com/watch?v=Tlf5m-57g34
^^

Das Video kannt ich schon. Aber das bringt auch vorteile. So kann ich z.B. sämtliche globalen Einstellungen mit einem schlag sichern und laden, z.B.

CopyMemory(@glob, .....) und zurück.
Damit kann ich hunderte globale einstellungen z.B. mit einem Befehl in eine Datei speichern und wieder laden.

Verfasst: 04.01.2009 18:39
von DarkDragon
Naja es hat schon einen Vorteil, man kann die Variablen alle auf einmal abspeichern. Nur temporäres sollte man draußen lassen, wenn es sich eh jedes mal neu berechnet. So löse ich nun das Speichern/Laden in Spielen. Ist irgendwie einfacher. Den einzigen Nachteil den ich sehe ist, dass man Probleme mit verschiedenen Versionen bekommt.

[EDIT]
Kleiwängele zu spoat.

Verfasst: 04.01.2009 18:46
von Kaeru Gaman
nunja...
ich würde aber weder alle Einstellungen die ich speichern will global machen, noch alles was global ist abspeichern wollen.
das sind zwei völlig verschiedene paar schuhe.
ich würde mal über den Daumen peilen, dass bei beidem maximal die Hälfte beide Eigenschaften besitzt.

also, für Grundeinstellungen die gespeichert/geladen werden sollen auf eine bestimmte Art und Weise einen zusammenhängenden Speicherbereich anlegen - grundsätzlich eine gute Idee.
aber deswegen alle Einstellungen global machen, und alle dynamischen Globals stur mit abspeichern - kontraduktiv.

Verfasst: 04.01.2009 18:48
von Josef Sniatecki
Strukturen können natürlich auch für eine Komunikation zwischen DLL und
Client nützlich sein:

Client:

Code: Alles auswählen

Structure Main
  *Integer1.Integer
  *Integer2.Integer
EndStructure

Global Integer1.i
Global Integer2.i
Global Main.Main
  Main\Integer1=@Integer1
  Main\Integer2=@Integer2

OpenLibrary(0,"DLL.dll")
  Integer1=321
  CallFunction("Example",@Main)
  Debug Integer2 ;wird 123 ausgeben
CloseLibrary(0)
DLL:

Code: Alles auswählen

Structure Main
  *Integer1.Integer
  *Integer2.Integer
EndStructure

ProcedureDLL.i Example(*Main.Main)
  MessageRequester("",Str(*Main\Integer1\I))
  ;Wird 321 anzeigen.
  *Main\Integer2\I=123
EndProcedureDLL
Für sowas sind dann natürlich Strukturen nützlich.

Verfasst: 04.01.2009 18:49
von cxAlex
>aber deswegen alle Einstellungen global machen, und alle dynamischen Globals stur mit abspeichern - kontraduktiv.

Ich mach ja nicht alle einstellungen global, nur die die global sein müssen, und nur was auch gespeichert wird kommt in die selbe struktur.

Edit: @sep: auch ein Einsatzgebiet, stimmt.

Verfasst: 04.01.2009 19:03
von Kaeru Gaman
cxAlex hat geschrieben:Ich mach ja nicht alle einstellungen global, nur die die global sein müssen, und nur was auch gespeichert wird kommt in die selbe struktur.
da widersprichst du dir aber.

also, entweder alle Globals in eine Struktur, oder alle Einstellungen in eine Struktur, oder alle zu speichernden in eine Struktur.

... und das grundthema dieses threads ist
Burstnibbler hat geschrieben:ich will eben alle globalen Variablen strukturiert haben
gnasen hat geschrieben:Wenn man alle globalen Variablen in die Structure Globals\ einfügt...
cxAlex hat geschrieben:Ich neige jetzt auch eher dazu Globale Variablen in ne Struktur zu packen.
.....
Josef Sniatecki hat geschrieben:Strukturen können natürlich auch für eine Komunikation zwischen DLL und Client nützlich sein:
natürlich, das ist eines der grundlegensten Einsatzgebiete für Strukturen.
die komplette API kommuniziert über Pointer zu Strukturierten Memblocks.

... aber das ist nicht Thema!

Verfasst: 04.01.2009 19:10
von gnasen
Ich kann ja verstehen, dass der Zweck der Structure nicht in dem liegt, was manche (zB ich) daraus machen.
Ich persönlich empfinde es als übersichtlicher und erkenne keinen Nachteil darin.
Ich denke das ist so eine "soll doch jeder selber wissen" Kiste.