Seite 1 von 1
Strucktur - Procedure Return Problem
Verfasst: 16.11.2015 02:49
von PWorks
Nun habe ich ein Problem, ich möchte ein neue Klasse anlegen diese dann ausgeben ca so.
Code: Alles auswählen
Structure TFPS
Count.i
Timer.I
Frame.i
EndStructure
Procedure NewFPS.TFPS()
F.TFPS
F\Timer=ElapsedMilliseconds()
Return F
EndProcedure
wenn ich nun z.b.
MeinFPS = NewFPS()
machen würde das ich die felder Count Timer Frame abfrfen kann ca SO
MeinFPS\Frame
das ganze ist also mein vorhaben, ich scheitere allerdings schon am ersten code oben, warum? weil ich nicht weis wie ich eine structure (also eine klasse) Returnen kann.
Re: Strucktur - Procedure Return Problem
Verfasst: 16.11.2015 03:37
von ts-soft
So geht es nur mit Pointern:
Code: Alles auswählen
EnableExplicit
Structure TFPS
Count.i
Timer.i
Frame.i
EndStructure
Procedure NewFPS()
Protected *F.TFPS
*F.TFPS = AllocateMemory(SizeOf(TFPS))
*F\Timer = ElapsedMilliseconds()
ProcedureReturn *F
EndProcedure
Define *Mein.TFPS = NewFPS()
Debug *Mein\Timer
FreeMemory(*Mein)
Re: Strucktur - Procedure Return Problem
Verfasst: 16.11.2015 08:26
von ProgOldie
@ts-soft: Frage zu dem Beispiel:
Was ist eigentlich der grundsätzliche Unterschied zwischen AllocateMemory() und AllocateStructure(), von der Parameterübergane 'mal abgesehen. Kann man sagen, dass AllocateMemory() etwas flexibler, dafür aber AllocateStructure() für weniger erfahrene Anwender sicherer ist?
Es müssten doch
AllocateMemory(sizeOf(Strukturbez)) und AllocateStructure(Strukturbez) Identisches bewirken.
Re: Strucktur - Procedure Return Problem
Verfasst: 16.11.2015 09:20
von GPI
Mit AllocateMemory wird ein beliebig großer Speicher reserviert. Mit AllocateStructure wird ein Speicher reserviert, der genau die passende Größe für diese Struktur hat. Wenn in dieser Struktur eine Map und LinkedList ist, dann wird zudem diese initalisiert, so das man sie nutzen kann.
@pworks
Klassen gibt es in PureBasic nicht. Das muss man händisch alleine machen, schau mal in diesen Thread:
http://www.purebasic.fr/german/viewtopi ... =8&t=29124
Re: Strucktur - Procedure Return Problem
Verfasst: 16.11.2015 09:28
von ProgOldie
@GPI
o.k. und danke, dann ist mir das klar.
Sorry übrigens, dass ich in der Zwischenzeit deiner Antwort meine Anfrage noch 'mal geändert habe. Für mich bleibt es bei dem wesentlichen Unterschied, dass man für eine bekannte Struktur sicherer AllocateStructure(StructureName) verwenden sollte.
Re: Strucktur - Procedure Return Problem
Verfasst: 16.11.2015 11:56
von ts-soft
AllocateStructure ist nur erforderlich, wenn dynamische Elemente in der Structure enthalten sind. Wenn keine
dynamischen Elemente enthalten sind, sollte AllocateMemory schneller sein.