Seite 2 von 2

Re: wie Strukturen koppeln?

Verfasst: 16.08.2015 07:32
von ProgOldie
@bizzl : Vererbung ist erst einmal nicht angesagt. Ich habe genug mit der bisherigen Lösung zu tun.
@PMV: Dank für die Mühe mit den ausführlichen Kommentaren. Es läuft alles prima. Ich werde aber die Abfragen zur Existenz wie vorgeschlagen einbauen. Dadurch kann ich auch den - für mich nicht unwichtigen - Fall bearbeiten, bei dem kein Prop1 angebunden ist.

Re: wie Strukturen koppeln?

Verfasst: 16.08.2015 11:30
von ProgOldie
Sorry, wenn ich soviel frage. :praise:

Code: Alles auswählen

EnableExplicit

Structure Props
  Name.s
EndStructure

Structure Obj
  *to_Prop.Props
EndStructure

Procedure kopple(*Objekt.Obj,*Propos.Props)
  *Objekt\to_Prop=*Propos
EndProcedure

Define Obj1.Obj,Prop1.Props

Prop1\Name="Hallo"              ;Eigenschaft von Prop1 festlegen
kopple(@Obj1,@Prop1)

Ich möchte bei der Prozedur 'kopple' auch den Fall ermöglichen, nichts an das Objekt anzukoppeln. Im Prinzip könnte ich das wie von PMV vorgeschlagen, mit

Code: Alles auswählen

Obj1\to_Prop=#Null
erreichen. Ich muss das aber über die Prozedur 'kopple' machen, weil ich in der Realität noch weitere Parameter an 'kopple' übergebe. Muss ich bei folgender Übergabe Sorgen machen?

Code: Alles auswählen

kopple(@Obj1,#Null)
Ich will das nicht selbst ausprobieren, um mir möglicherweise nicht den Speicher zu zerschiessen.

Re: wie Strukturen koppeln?

Verfasst: 16.08.2015 15:22
von PMV
Nein, wie die #Null da rein kommt ist in PureBasic vollkommen egal.
Für den PB-Compiler sind das alles in erster Linie eh nur Ganzzahlen.
Egal obs die 0 ist, oder die Adresse eines (un)gültigen Speicherbereichs.

PS: die nächsten Fragen wird wohl dann erst mal jemand anders
beantworten müssen, ich bin die nächsten Tage anders eingespannt. :wink:

MFG PMV

Re: wie Strukturen koppeln?

Verfasst: 16.08.2015 16:29
von Sicro
ProgOldie hat geschrieben:Ich will das nicht selbst ausprobieren, um mir möglicherweise nicht den Speicher zu zerschiessen.
So gefährlich sind diese IMAs nicht. Aktuelle Betriebssysteme haben einen Speicherschutz, damit du keine Speicherbereiche von anderen Programmen überschreiben kannst. Siehe hier: https://de.wikipedia.org/wiki/Speicherschutz