oop Plugin

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

oop Plugin

Beitrag von edel »

Moin ,

hier > OOPPlugin.rar < gibt es einen kleinen Parser der den
Umgang mit Klassen etwas vereinfachen soll.

Da es wohl noch viele Fehler gibt, bitte ich euch das ganze mal zu testen
und Bugs hier zu posten.
Im Archiv befindet sich das jaPBe / PBIDE Plugin , eine angepasste jaPBe Version, und 3 Beispiele .

Die jaPBe Version braucht man nicht unbedingt , sieht nur besser aus :
Automatisches einruecken nach Class bzw nach Endclass , Folding und
die paar zusaetzlichen Woerter.

Das Plugin kommt ungesehen in den Plugin Ordner von jaPBe und kann
nach einem Neustart von jaPBe ueber das Menu Tools aufgerufen werden.


Aufbau einer Klasse

Code: Alles auswählen

EnableOOP
Damit das ganze funktioniert muss am Anfang einmal EnableOOP
geschrieben werden.

Code: Alles auswählen

  class cTest
    set(val.l)
    get.l()
    val.l
  endclass
Das sollte sich wohl selbst erklaeren.

Code: Alles auswählen

  Procedure cTest::cTest()
    *this\val = 10
  EndProcedure
Der Konstruktor ist Optional, ein Destruktor gibt es noch nicht.
EDIT : Der Konstruktor darf keinen Wert zurueck liefern (also kein ProcedureReturn!)

Code: Alles auswählen

  Procedure cTest::set(val.l)
    *this\val = val
  EndProcedure
  
  Procedure.l cTest::get()
    ProcedureReturn *this\val
  EndProcedure

  DISABLEOOP
Mir ist bei den Methoden gerade aufgefallen das man hier auf Gross- und
Kleinschreibung achten muss.
Jede Variable (der Klasse) kann in den Methoden oder im Konstruktor mit
*this\ angesprochen werden. DisableOOP ist optional, beschleunigt das
ganze aber etwas.

Code: Alles auswählen

  *a.cTest = cTest()

   DEBUG *a\val
  
  *a\set(1234)
  
  DEBUG *a\get()
Sollte auch klar sein. ;-)


Falls mal etwas nicht geht, liegt es mit grosser Wahrscheinlichkeit am
regulaeren Ausdruck. Da hab ich Schwierigkeiten mit dem Ende einer Zeile.
Fuer die "schlimmen" Faelle wird ein log + umgewandelten Quellcode
im selben Ordner gespeichert.


Dann bedanke ich mich schonmal fuers testen :-)


Bugs :
"Declare" muss vor "Class" geschrieben werden.
Zuletzt geändert von edel am 14.04.2006 15:48, insgesamt 5-mal geändert.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

:allright: gut gemacht soweit

Folgende Wünsche, bzw. Verbesserungsvorschläge:
1. Plugin speichert Einstellung nicht, Händling sehr umständlich
2. Eine Version für die IDE! Dort wäre durch die Trigger-Unterstützung
ein wesentlich einfacheres Händling möglich.(Man würde garkeinen Unterschied zu normallem Source erfahren!)
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Danke .

Ich war immer so begeistert von der jaPBe Pluginschnittstelle, musste
gestern aber feststellen das es alles andere als bequem ist. Werde mir
das mit dem kleinen Fenster nochmal ueberlegen.

Das Tool fuer die PBIDE ist auch fertig , habe es allerdings "vergessen"
dabei zu legen. Upload koennte aber noch was dauern, da ich das
Passwort heute morgen verloren habe.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Wie wäre es, wenn das jaPBe-Plugin den konvertierten Source reloaded, so
das man dann debuggen, compilieren oder sonst was machen kann? (ohne
dieses kleine Fensterchen)

>> Upload koennte aber noch was dauern, da ich das Passwort heute morgen verloren habe
Kein Problem, nimm dies:
************
:lol:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Bei groesseren Projekten koennte das aber auch schnell in die Hose gehen,
der Code sieht aber auch alles andere als toll aus, zumindest wird das
lesen extrem schwierig , naja mal schaun .
ts-soft hat geschrieben:[...]
>> Upload koennte aber noch was dauern, da ich das Passwort heute morgen verloren habe
Kein Problem, nimm dies:
************
:lol:

Hey, das scheint zu klappen ... ;-)

Hab es hochgeladen OOPPlugin.rar
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

XInclude bzw. Test_2.pb funktioniet nicht!
Vielleicht solltest Du den Source zusammenführen,
siehe auch hier: http://www.purebasic.fr/german/viewtopic.php?t=7352
Source ist mit bei, kannste verwenden bzw. ausschlachten :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Vielen Dank.

Funktioniert jetzt , dank CheckIncludePath() :-)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

hallodri hat geschrieben:Vielen Dank.

Funktioniert jetzt , dank CheckIncludePath() :-)
Schön, funzt :allright:
Falls Du noch fehler in CheckIncludePath() findest, sag mir bitte Bescheid,
bin mir nicht so sicher, ob das so immer richtig ist und es wurde leider
kaum getestet.

// Nachtrag:
BUG: UTF-8 Dateien werden nicht unterstützt. Gibt Fehlermeldung in erster Zeile!

//Nachtrag2:
Optionale Parameter werden nicht unterstützt :(
der size Parameter muß als erster generiert werden!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

ts-soft hat geschrieben: // Nachtrag:
BUG: UTF-8 Dateien werden nicht unterstützt. Gibt Fehlermeldung in erster Zeile!
Habe noch nie etwas mit UTF-8 gemacht , werde es das naechste mal aber mit einbauen .
ts-soft hat geschrieben: //Nachtrag2:
Optionale Parameter werden nicht unterstützt :(
der size Parameter muß als erster generiert werden!
Kannst du mir ein Beispiel geben ?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> Kannst du mir ein Beispiel geben ?

Code: Alles auswählen

Procedure Button::Button(Id.l, X.l, Y.l, Height.l, Width.l, Text.s, Flags.l = 0); Flags soll optional sein!
  *this\X = X
  *this\Y = Y
  *this\Height = Height
  *this\Width = Widht
  *this\Text = Text
  If Id = #PB_Any
    *this\Id = ButtonGadget(#PB_Any, X, Y, Height, Width, Text, Flags)
    *this\hWnd = GadgetID(*this\ID)
  Else
    *this\ID = Id
    *this\hWnd = ButtonGadget(Id,  X, Y, Height, Width, Text, Flags)
  EndIf
EndProcedure
geht nicht, weil du 0 bzw. size ranhängst, davorsetzen wäre günstiger!

Code: Alles auswählen

Procedure _createButton(Id.l, X.l, Y.l, Height.l, Width.l, Text.s, Flags.l,size.l) ; <---------
  If size<SizeOf(Button)
    size = SizeOf(Button)
  EndIf
  *this.Button = _createGadget(size)
*this\X = X
*this\Y = Y
*this\Height = Height
*this\Width = Widht
*this\Text = Text
If Id = #PB_Any
*this\Id = ButtonGadget(#PB_Any, X, Y, Height, Width, Text, Flags)
*this\hWnd = GadgetID(*this\ID)
Else
*this\ID = Id
*this\hWnd = ButtonGadget(Id,  X, Y, Height, Width, Text, Flags)
EndIf

ProcedureReturn *this
EndProcedure
Procedure.l Button(Id.l, X.l, Y.l, Height.l, Width.l, Text.s, Flags.l)
ProcedureReturn _CreateButton(Id.l, X.l, Y.l, Height.l, Width.l, Text.s, Flags.l,0) ; <---------
EndProcedure
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten