Seite 3 von 4
Verfasst: 29.05.2006 19:28
von ZeHa
Also für mich sieht das so aus:
1) Da Attribute ein Block ist, geh ich davon aus, daß das Wort die Mehrzahl darstellen soll, daher wäre "Attributes" sicherlich treffender.
2) Methode heißt soweit ich weiß auf Englisch "Method", daher müßten die Befehle Method, EndMethod und MethodReturn heißen, sprich das "e" muß da raus.
Verfasst: 29.05.2006 19:32
von Leonhard
Stimmt.
Hab ich überarbeitet.
Neue EXE gibt es hier:
DEAD LINK
Verfasst: 29.05.2006 19:39
von Kaeru Gaman
[OT]
> einzigsten
einzigen
einzig ist ein natürlicher superlativ und als solcher nicht mehr steigerbar.
[/OT]
Verfasst: 29.05.2006 23:05
von ts-soft
Vielleicht erstmal den lustigen Titel des Threads anpassen, bevor man die Kleinigkeiten korrigiert
Verfasst: 29.05.2006 23:57
von inc.
Habe mal in den erzeugten PB nativen Code geschaut.
Diesbezgl.:
http://www.purebasic.fr/german/viewtopi ... 9&start=20
Fred bzgl. EBP hat geschrieben:It's not safe to assume it will be always that, try to allocate a local string or use a string as parameter and it will be probably trashed.
Schau dir dieses Vorgehen von Hellhound mal an (habe schon weiter oben drauf hingedeutet) damit arbeite ich momentan in einigen Projekten:
http://www.purebasic-lounge.de/viewtopi ... hlight=oop
Verfasst: 30.05.2006 11:15
von Pelagio
@Leonhard
Danke für die überarbeitete EXE, aber diese Funktioniert nicht.
Der erste Fehler meldet sich schon bei der Erstellung der Klasse aus deinen Beispielen (Syntax Error).

Und auch die Erstellung der Datei nach dem direkten Aufruf des Programmes klappt nicht.

Verfasst: 30.05.2006 18:49
von Leonhard
@Pelagio
In der überarbeiteten EXE sollte für die Befehle 'Methode' und 'Attribute' jeweils das 'e' am ende weggelassen werden.
@inc.
Nachteil bei diesem Code ist, das da die Klassenhierarchie ins wasser fällt, was du schon selbst gewünscht hast. Ich fand den Code vorher auch praktischer. Dies hab ich wegen der Klassenhierarchie geändert. Algemein gab es ja auch einen nachteil bei der änderung (siehe Update.txt).
Verfasst: 30.05.2006 19:36
von inc.
@ Leonhard
Leonhard hat geschrieben:@Pelagio
In der überarbeiteten EXE sollte für die Befehle 'Methode' und 'Attribute' jeweils das 'e' am ende weggelassen werden.
Nochmal was ZeHa meinte:
Code: Alles auswählen
Deutsch Englisch
-------------------------------
das Attribut = attribute
die Attribute = attributes
die Methode = method
die Methoden = methods
Daher bei "Attribute" NICHT das "e" am Ende weg lassen.
Demnach:
Method / EndMethod
Attribute / EndAttribute
oder ...
Methods / EndMethods
Attributes / EndAttributes
Bookmark setzen!:
http://dict.leo.org/
BTW (keine Anmache): Bitte sehe auch mal in deinen Readme's und im Requester Code nach. Bin kein Orthographie-Pingel bei Gott nicht, mache hier und da auch Fehler nur ... in manchen Bereichen scheints dem Benutzer etwas dahingeschmissen zu sein, demnach könnte der Benutzer die Vermutung haben, dass du die Dinge nicht recht gewissenhaft angehst, und das wiederum könnte fälschlich auf die Programmierung schließen.
Meine 2 Cents
Was ansonsten das Plugin angeht, da denke ich mir (ohne dir nahe treten zu wollen), dass wenn du ebenso den EBP Weg beschreitest, einige nicht nicht den rechten Vorteil oder die Alternative darin erkennen.
Und wenn du Probleme in Hellhounds Ansatz siehst wie von dir oben vermerkt, dann frag ihn einfach, denn da stecken bestimmt noch Möglichkeiten drin.
PS: Gebe dem Thread den "wirklichen" Namen deines Plugins, sonst gibt das Verwechslungen mit Edels Plugin.
-> "XTC OOP-PreCompiler-PlugIn"
Verfasst: 31.05.2006 08:50
von Pelagio
@Leonhard
- In der überarbeiteten EXE sollte für die Befehle 'Methode' und 'Attribute' jeweils das 'e' am ende weggelassen werden.
Aber warum geht dieser Cide dann nicht?
Code: Alles auswählen
AllowPreCompiling
PreCompiler on
Class IMessageBox
Private
Attribut
Title.s
Text.s
Flag.l
EndAttribut
Public
Method SetTitle(String$)
*this\Title = String$
EndMethod
Method CreateClass()
*this\Title = "Doodle-Standart"
EndMethod
Method SetText(String$)
*this\Text = String$
EndMethod
Method.l FastMessage(Title$,Text$)
*this\SetTitle(Title$)
*this\SetText (Text$)
MethodReturn *this\Show()
EndMethod
Method.l Show()
MethodReturn MessageRequester(*this\Title,*this\Text,*this\Flag)
EndMethod
EndClass
NewObject *MessageBox.IMessageBox
*MessageBox\SetTitle("OOP")
*MessageBox\SetText("Dies ist ein OOP-Ausgabe-Beispiel-Text.")
*MessageBox\Show()
End
(PreProcessor meldet Fehler)
PS.:
Public und Private mit End... abzuschliessen fand ich besser.
Verfasst: 31.05.2006 09:28
von Pelagio
Habe meinen Fehler im Code gefunden, anbei der "funktionierende" Code.
Code: Alles auswählen
AllowPreCompiling
PreCompiler on
Class IMessageBox
Private
Attribute
Title.s
Text.s
Flag.l
EndAttribut
Public
Methode SetTitle(String.s)
*this\Title = String
EndMethod
Methode CreateClass()
*this\Title = "Doodle-Standart"
EndMethod
Methode SetText(String$)
*this\Text = String$
EndMethod
Methode.l FastMessage(Title$,Text$)
*this\SetTitle(Title$)
*this\SetText (Text$)
MethodReturn *this\Show()
EndMethod
Methode.l Show()
MethodReturn MessageRequester(*this\Title, *this\Text, *this\Flag)
EndMethod
EndClass
NewObject *MessageBox.IMessageBox
*MessageBox\SetTitle("OOP")
*MessageBox\SetText("Dies ist ein OOP-Ausgabe-Beispiel-Text.")
*MessageBox\Show()
End
Das Problem welches ich hatte konnte ich beheben, aber es ist ein neues Problem aufgetaucht, ein Fehler in der Compelierung, siehe Compelierunscodebeispiel:
Code: Alles auswählen
Procedure __IMessageBox_Public_SetTitle(String.s)
Protected *this.IMessageBox
!MOV [p.p_this],ebp
Protected *pthis.IMessageBox_Private = *this\IPrivate
*this\Title = String
EndProcedure
Procedure.l __IMessageBox_Public_FastMessage(Title$,Text$)
Protected *this.IMessageBox
!MOV [p.p_this],ebp
Protected *pthis.IMessageBox_Private = *this\IPrivate
*this\SetTitle(Title$)
*this\SetText (Text$)
ProcedureReturn *this\Show()
EndProcedure
Korrekt und ausführbar müsste ddas Codebeispiel so sein:
Code: Alles auswählen
Procedure __IMessageBox_Public_SetTitle(String.s)
Protected *this.IMessageBox
!MOV [p.p_this],ebp
Protected *pthis.IMessageBox_Private = *this\IPrivate
*pthis\Title = String
EndProcedure
Procedure.l __IMessageBox_Public_FastMessage(Title$,Text$)
Protected *this.IMessageBox
!MOV [p.p_this],ebp
Protected *pthis.IMessageBox_Private = *this\IPrivate
*this\SetTitle(Title$)
*this\SetText (Text$)
ProcedureReturn *this\Show()
EndProcedure
Attribut muss als *pthis\.... , Method weiter als *this\... angegebne werden.
Ich hoffe ich habe dies richtig erkannt.!
