Ja, gibt es, ich habe leider kaum Zeit gehabt, deshalb ist es nicht wirklich fertig.
Das Problem ist, dass ich irgendwo vermutlich ein Speicherleck habe und nicht die Zeit hatte mir das genauer anzuschauen.
Wegen des Fehlers fehlt auch noch die Auswahl der Methoden, da ich erstmal mich darum kümmern muss.
Ich kann ja die aktuelle Arbeitsversion mal hochladen. Um keinen Quelltext zu verunstalten ist die Funktion zur tatsächlichen Änderung der Zielunit nicht dabei, es wird nur eine Vorschau des generierten Quelltexts erzeugt (aus der man natürlich auch kopieren kann).
Es sollte die Auswahl der Quellunit, der Quellklasse und der Zielunit funktionieren, auch die Vorschau sollte korrekt erzeugt werden. Mit dem Eintrag im Hilfemenü kommt man auch zur Konfiguration, in der man das Menü, in dem der Eintrag erscheint, sowie dessen Shortcut festlegen kann. Dies wird unter "HKEY_CURRENT_USER\Software\Borland\BDS\4.0\SJDelphiCodeAssist" in der Registry gespeichert. Fehlen tut an der Stelle die Anpassung für verschiedene Delphiversionen.
Der gesamte Quelltext steht unter der MPL, inklusive des verwendeten Parsers (dieser ist leicht verändert, das fehlt noch in der Copyright Angabe!!) und eines Teils von SynEdit. Dies ist eine Alpha Version, deshalb muss der Lizenzteil und die Dokumentation noch überarbeitet bzw. erstellt werden.
Bekannte Bugs:
- Vermutlich gibt es ein Speicherleck, dies äußert sich durch unklare / im Debugger nicht reproduzierbare Fehler im generierten Quelltext
- Wenn gar keine Datei offen ist gibt es eine Schutzverletzung, da dies bisher nicht vorher geprüft wird
Probleme / ungeprüft / nicht implementiert:
- Der Dateimanager, der das mehrfache Parsen unnötig machen soll, muss noch umstrukturiert werden, im Moment erscheint jegliche offene Datei in der Liste
- (Umstellbarkeit geplant) Es erscheinen alle Klassen in der Liste auch wenn sie keine Methoden zum Überschreiben enthalten
- (Absichtlich) Es kann der Quelltext nicht tatsächlich eingefügt werden, es wird nur eine Vorschau generiert
- Es können keine Funktionen einzeln ausgewählt werden, bisher werden einfach alle gefundenen benutzt
- Es fehlt der Zugriff auf Bezüge / Interfaces aus anderen Dateien (unklar wie am besten zu realisieren)
Das größte Problem ist, dass die ganze Realisierung nicht so ist wie ich mir das vorstelle. Weil ich die Möglichkeiten der ToolsAPI nicht so gut überblicke bisher bzw. es Fehler gab wird im Moment ständig alles neu erstellt und wieder aus dem Speicher entfernt, auch die Weitergabe von Daten etc. ist suboptimal, da so bei der Verwendung der falschen Events (FormCreate statt FormShow...) Fehler auftreten.
Das muss ich entweder noch korrekt dokumentieren oder anders lösen.