Sorry für den tripple-Post, aber ich hoffe in diesem Thread einen der SimpleOOP Anwender anzutreffen - wenn nicht gar Sirhc.ITI selbst.
Ich bekomme in einem neu aufgesetzten Projekt, welches ich erstmals mit Unterstützung von SimpleOOP realisieren möchte, einen SimpleOOP spezifischen Fehler, den ich mir nicht erklären kann.
Wenn man von dem Verwaltungscode absieht und der Tatsache, dass der Code über mehrere Includedateien verteilt ist, dann läßt sich der OOP-spezifische Teil mit den folgenden Zeilen nachbilden (ja, mehr als das Programmgerüst steht noch nicht):
Code: Alles auswählen
Structure Settings
x.i
y.i
Width.i
Height.i
EndStructure
Class Sudoku
; +-----------------------------------------------------------------
; |Description : Beschreibung der Klasse
; |Init-Args : arg1 : -
; | : arg2 : -
; |Results : -
; |Remarks : -
; +-----------------------------------------------------------------
BeginPrivate
SudokuSettings.Settings
EndPrivate
Public Method Init()
Debug "Init()"
EndMethod
Public Method Release()
Debug "Release()"
EndMethod
EndClass
Global *MySudoku.Sudoku
*MySudoku = NewObject.Sudoku()
*MySudoku = FreeObject
Nur tritt bei dieser Rekonstruktion der Fehler nicht auf.
Ich vermute, dass das Problem an der Aufteilung des Codes auf mehrere Dateien liegt. Oder es ist wirklich ein ganz einfacher, offensichtlicher Anwendungsfehler und ich sehe ihn einfach nicht.
Problem:
Zur Compilierungszeit wird mir folgende Meldung angezeigt:
Die Datei, in der der Fehler angezeigt wird, ist eine von SimpleOOP erstellte Datei, in der der nach PureBasic übersetzte OOP Code steht.
Da es zu aufwändig wäre die Einzeldateien und die Projektdateien hier einzeln zu posten, habe ich das gesamte Projekt geZIPt und hochgeladen. Zur Rekonstruktion braucht ihr nur den Inhalt des ZIPs in einen Ordner entpacken und dann die Projektdatei "Sudoku.pbp" im Editor öffnen. Dann einafch F5 drücken und BÄMM.
Das ZIP Archiv könnt ihr hier runterladen:
http://www.fastshare.org/download/Sudoku___OOP.zip
Ich würde mich über Hinweise zur Lösung des Problems freuen.
Vielleicht ist es ja auch noch ein internes Problem von SimpleOOP?
Edit: Das Problem tritt auch beim Aufruf aller weiteren Methoden auf, wenn diese der Klasse zugefügt wurden.
Einzig das Init() wird ohne Murren ausgeführt. Fügt man der Klasse noch eine weitere Methode zu (die z.B. nur eine Debugausgabe macht) und ruft diese aus einer anderen Includedatei aus auf (z.B. Main.pbi), dann kracht es mit der selben Meldung.
Edit 2: @Sirhc.ITI
Ich habe mir den Quellcode von SimpleOOP jetzt mal vorgenommen. Leider konnte ich den Fehler bisher nicht beheben (Zeitgründe), aber zumindest weiter einkreisen:
In der Datei SimpleOOP.pb ist speziell in meinem Fall die Liste Objects() leer.
Gut zu erkennen, wenn man sich einen Breakpoint auf die Zeile 1491 legt und das ganze prüft.
FindObjectProcedureCalls(), ab Zeile 1489:
Code: Alles auswählen
Else
CallObjectClass$ = ""
If LastElement(Objects()) ; Klasse zu Object in NewObjects() suchen
Repeat
If Objects()\IsMainFile = IsMainFile ; Object in Liste ist in der selben datei
If Objects()\Line < ListIndex(Quelldatei()) Or (Objects()\Line = ListIndex(Quelldatei()) And Objects()\Row < ListIndex(TokenLine()))
usw...
Aus irgend einem Grund wird das Objekt nicht in diese Liste eingetragen was dazu führt, dass SimpleOOP im bearbeiteten Quelltext einen ...\SOOP_FreeObject() Aufruf OHNE Parameter erzeugt.
Leider kann ich jetzt nicht weiter forschen wegen Weihnachtsfeierlichkeiten, Familie usw.