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.