Reflection Dateiübergreifend?
Übersicht

![]() |
M0rgensternBetreff: Reflection Dateiübergreifend? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Leute,
Ich habe gerade ein ziemliches Problem: Ich habe ein Programm geschrieben, das aus .bmx Dateien automatisch Klassennamen ausliest. Dann möchte ich über die Klassennamen mit BlitzMax: [AUSKLAPPEN] TTypeId.ForNamedie Eigenschaften der Klasse auslesen. Aber das TTypeID Objekt bleibt null, also mein Programm schmiert mit einem Fehler ab, dass das TTypeID Objekt null ist. Ich gehe mal stark davon aus, dass er Probleme damit hat, wenn die Klassen nicht in der gleichen Datei liegen. Kann man das irgendwie umgehen oder so? Also was nacher gehen soll ist, dass man eine beliebige Blitzmkax datei lädt und er alle Klassen ausliest und per reflection darauf zugreifen kann. Wäre super, wenn mir jemand helfen könnte. Lg, M0rgenstern |
||
- Zuletzt bearbeitet von M0rgenstern am Mi, Jul 18, 2012 15:48, insgesamt einmal bearbeitet
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzMax ist keine Skriptsprache. Du kannst nicht einfach zur Laufzeit Dateien einbinden.
Reflection kann nur mit Dateien funktionieren, die mittels Include oder Import eingebunden wurden und somit Teil der Executable sind. Bei Dateien, die erst zur Laufzeit geöffnet werden, ist der Type natürlich nicht verfügbar. Wenn dein Programm es aber schafft, die Type-Namen auszulesen, solltest du auch in der Lage sein, es so zu erweitern, dass es auch Methoden- und Feldnamen auslesen kann. ZEVS |
||
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Okay.
Stimmt schon. Momentan hab iches auch so lösen können. Das Problem ist nur, dass ich nicht alles so lösen kann. Ich bin nämlich dabei, für dieses Modul eine GUI zu schreiben, mit der man in Codedateien automatisch nach Tests suchen lassen kann und die Tests dann starten lassen kann. Das Problem ist halt einfach, dass man ja in dem Programm jede beliebige BlitzMax-Codedatei laden kann und diese nach Tests durchsuchen lassen kann. Der Button zum Starten der Tests macht das dann so: BlitzMax: [AUSKLAPPEN] Function StartTests() Un der TUnitTestProvider macht dann folgendes mit der Liste: Er geht durch die Liste der Typnamen und übernimmt die Namen der Klassen in seine eigene Liste (in SetUpUnitTesting). In StartUnitTesting legt er dann eine Liste an, in der er alle Methoden der Klasse speichern soll, um diese dann aufzurufen (per reflection). Das Problem ist halt, dass er dann an folgender Stelle abschmiert: BlitzMax: [AUSKLAPPEN] 'For each class in the list. Und ich suche jetzt halt eine Möglichkeit, das so zu gestalten, dass das funktioniert. Lg, M0rgenstern |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie soll das ablaufen?
Man wählt in deinem Programm ein Codefile aus und dass soll getestet werden? Dann musst du den BlitzMax Compiler an werfen und den Code vom Benutzer zu deinem speziellem Testcode hinzu kompilieren. Nicht besonders elegant. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm.
Also geht das wohl gar nicht so, wie ich mir das vorgestellt habe. Verdammt. Und wenn ich das folgendermaßen mache: Alle Tests, die benutzt werden sollen, werden von dem Programm in eine Datei geschrieben. Die Datei muss dann halt einmal kompilert werden (kann man irgendwie den BlitzMax Compiler dazu veranlassen?) und eine Ergebnisdatei erstellen. Diese Ergebnisdatei kann dann vom Programm ausgelesen werden und die Fehler können im Programm angezeigt werden. Lg, M0rgenstern |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Klar kannst du den Compiler per CreateProcess anwerfen. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group