Interfaces-Beispiel in der Hilfe korrekt?
Re: Interfaces-Beispiel in der Hilfe korrekt?
Jep,
Das Meine ich damit.
Das Meine ich damit.
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
Re: Interfaces-Beispiel in der Hilfe korrekt?
Ich glaube, damit kann ich leben.
Habe den Code von Stargate in ein Module gepackt, und kann jetzt auch den Constructor integrieren
und habe private Functionen und Variablen!
Habe den Code von Stargate in ein Module gepackt, und kann jetzt auch den Constructor integrieren
und habe private Functionen und Variablen!
Code: Alles auswählen
DeclareModule Vctr
;- Interface
Structure VectorBuffer ; Struktur welche den Methodenpointer und Eigenschaften enthält
*Methods
X.f
Y.f
EndStructure
Interface Vector ; Interface welches später genutzt werden kann
Set(X.f, Y.f)
Get.s()
Length.f()
Add(*Vector)
Free()
EndInterface
Declare.i NewVector()
EndDeclareModule
Module Vctr
;- Medoden
Define count.i
Procedure setcount(c.i)
Shared count
count+c
Debug "Anzahl = "+Str(count)
EndProcedure
Procedure.i getcount()
Shared count
Debug "Anzahl = "+Str(count)
ProcedureReturn count
EndProcedure
Procedure Vector_Set(*This.VectorBuffer, X.f, Y.f)
*This\X = X
*This\Y = Y
ProcedureReturn *This
EndProcedure
Procedure.f Vector_Length(*This.VectorBuffer)
ProcedureReturn Sqr(*This\X**This\X+*This\Y**This\Y)
EndProcedure
Procedure.s Vector_Get(*This.VectorBuffer)
ProcedureReturn StrF(*This\X)+" , "+StrF(*This\Y)
EndProcedure
Procedure.i Vector_Add(*This.VectorBuffer, *Vector.VectorBuffer)
*This\X + *Vector\X
*This\Y + *Vector\Y
ProcedureReturn *This
EndProcedure
Procedure.i Vector_Free(*This.VectorBuffer)
FreeStructure(*This)
setcount(-1)
ProcedureReturn #Null
EndProcedure
Procedure.i NewVector()
Protected *This.VectorBuffer = AllocateStructure(VectorBuffer) ; Buffer für die Struktur erzeugen und Methodenpointer setzen
*This\Methods = ?Vector_Methods
setcount(1)
; Ggf. andere Strukturfelder setzen
ProcedureReturn *This
EndProcedure
DataSection
Vector_Methods:
Data.i @Vector_Set()
Data.i @Vector_Get()
Data.i @Vector_Length()
Data.i @Vector_Add()
Data.i @Vector_Free()
EndDataSection
EndModule
UseModule Vctr
;- Beispiel
Define A.Vector = NewVector()
Define B.Vector = NewVector()
A\Set(4, 3)
Debug A\Length()
B\Set(-1, 2)
A\Add(B)
Debug A\Get()
B\Free()
A\Free()
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
Re: Interfaces-Beispiel in der Hilfe korrekt?
Habe diese Nacht noch ein wenig im Forum gestöbert zu dem Thema,
und bin bei Tutorial auf ein Tutorial von MK-Soft gestossen, das eben genau
diesen Ansatz beschreibt Kleiner OOP Kurs mit Purebasic. Ohne Macros und PreCompilers
sogar mit Vererbung!
Danke an Stargate für die Erklärung des Interfaces
und an MK-Soft für das Tutorial
Damit sind erst mal alle Fragen geklärt!
Olaf
und bin bei Tutorial auf ein Tutorial von MK-Soft gestossen, das eben genau
diesen Ansatz beschreibt Kleiner OOP Kurs mit Purebasic. Ohne Macros und PreCompilers
sogar mit Vererbung!
Danke an Stargate für die Erklärung des Interfaces
und an MK-Soft für das Tutorial
Damit sind erst mal alle Fragen geklärt!
Olaf
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
- NicTheQuick
- Ein Admin
- Beiträge: 8679
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
Re: Interfaces-Beispiel in der Hilfe korrekt?
Ich habe übrigens auch mal sowas gemacht: viewtopic.php?t=30902
Re: Interfaces-Beispiel in der Hilfe korrekt?
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: Interfaces-Beispiel in der Hilfe korrekt?
Werde die Nacht erst mal lesen
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
Re: Interfaces-Beispiel in der Hilfe korrekt?
Nachdem ich nun eine Weile mit den "Klassen" gespielt habe, gibt es etwas, das ich nicht verstehe.
Es ist doch so:
Eine Procedurendeclaration hat folgendes Schema:
Das ganze jetzt in der Klasse sieht so aus
Aufgerufen wird die Procedure aber ohne den *This-Pointer!
Warum wird das so vom Compiler akzeptiert?
Eigentlich kann ich einen Parameter nicht überspringen beim aufrufen, es müsste doch einen Fehler wegen
Fehler in der Parameteranzahl beim Aufrufer auslösen?
Ok, es Funktioniert, Ich würde nur gerne wissen, warum? Was ist der interne Grund dafür?
Merci Olaf
Es ist doch so:
Eine Procedurendeclaration hat folgendes Schema:
Code: Alles auswählen
Declare PrintInfo(info$,n=0)
Code: Alles auswählen
PrintInfo(*This.<class>,info$,n=0)
Warum wird das so vom Compiler akzeptiert?
Eigentlich kann ich einen Parameter nicht überspringen beim aufrufen, es müsste doch einen Fehler wegen
Fehler in der Parameteranzahl beim Aufrufer auslösen?
Ok, es Funktioniert, Ich würde nur gerne wissen, warum? Was ist der interne Grund dafür?
Merci Olaf
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
Re: Interfaces-Beispiel in der Hilfe korrekt?
Lies mal meine Beschreibung von meinen OOP BaseClass.
Bei einer Methode ist der erste Parameter immer der Zeiger auf das eigene Objekt. Dieser wird automatisch vom Kompiler beim Aufruf der Methode eingesetzt.
Bei einer Methode ist der erste Parameter immer der Zeiger auf das eigene Objekt. Dieser wird automatisch vom Kompiler beim Aufruf der Methode eingesetzt.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: Interfaces-Beispiel in der Hilfe korrekt?
OK, sowas dachte ich mir schon, geht das auch mit weiteren Parameter, oder nur mit dem *This Zeiger
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
Re: Interfaces-Beispiel in der Hilfe korrekt?
Die weiteren Parameter kannst du wie gewohnt als Optional definieren
' MethodeName(*this.sClass, default = 0)'
' MethodeName(*this.sClass, default = 0)'
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive