Interfaces in PureBASIC; Wie?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Heroglyph
Beiträge: 41
Registriert: 22.11.2004 20:34

Interfaces in PureBASIC; Wie?

Beitrag von Heroglyph »

Ich bin's mal wieder :).
Ich habe beim durchstöbern der Hilfe einen interessanten Befehl gefunden, mit dem Pure OO etwas näher kommt ('Interface').
Nun steht in der Hilfe zu Interface zwar, wie man ein Objekt in PB benutzt, nicht jedoch, wie man eines erstellt. Es steht bei Beispiel 3 zwar, dass sich ein Beispiel zur Erstellung im Ordner 'PureBasic/Sources' befindet, aber dieser Ordner existiert erstens nicht und zweitens finde ich im Ordner 'PureBasic/Examples/Sources Advanced' auch kein Beispiel dazu (zumindest sehe ich keins). Ich habe auch schon versucht, einfach eine Testprozedur zu schreiben, die in ein Interface zu packen und eine Variable damit zu deklarieren, um sie dann damit aufzurufen, aber ich bekomme nur eine Fehlermeldung von Windows /:->.
Kann das Thema vielleicht jemand für mich mal kurz umreißen oder mir sagen, wo ich etwas dazu lesen kann?
Danke schon im Vorraus :).
God is real, unless declared integer.
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

Schau mal in das PureBoard-Archiv mittels der Suchfunktion und außerdem ins CodeArchiv auf www.PureArea.net

In beiden solltest Du schon einige Erläuterungen und Beispiele finden. 8)
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Heroglyph
Beiträge: 41
Registriert: 22.11.2004 20:34

Beitrag von Heroglyph »

Ich wusste nicht, dass es noch ein Archiv gibt, sonst hätte ich auch dessen Suchfunktion verwendet und nicht nur diese hier :/.
Danke für den Hinweis, ich habe im Archiv alles gefunden, was ich brauche.
God is real, unless declared integer.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Ich hab mir da anfangs das kleinst mögliche Beispiel überhaupt zusammengebastelt:

Code: Alles auswählen

Interface Inter_Face
  MSG(Message.s)
EndInterface

Structure OBJ
  VTable.l
  Function.l[SizeOf(Inter_Face)/4]
EndStructure

Procedure Message(*t.Inter_Face, Message.s)
  MessageRequester("", Message.s)
EndProcedure

Procedure Constructor()
  *OBJ.OBJ = AllocateMemory(SizeOf(OBJ))
  *OBJ\VTable = *OBJ+OffsetOf(OBJ, Function)
  *OBJ\Function[0] = @Message()
  ProcedureReturn *OBJ
EndProcedure

Procedure Destructor(*OBJ.OBJ)
  FreeMemory(*OBJ.OBJ)
EndProcedure

*MyOBJ.Inter_Face = Constructor()
*MyOBJ\MSG("Hallo, dies ist ein Testtext")
Destructor(*MyOBJ)
Dann hab ich die ganze Geschichte kappiert.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Antworten