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.

Code: Alles auswählen

!MOV [p.p_this],Ebp
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
:o
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.! :freak: