Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#23

AW: Interface-Unterstützung

  Alt 3. Sep 2017, 14:11
@Rollo62

Das Debugging würde meine Möglichkeiten übersteigen.
Das wird wohl nur Emba können.

Mein Tool soll lediglich verkürzte Schreibweisen korrigieren.
Aus

Delphi-Quellcode:
// MyIntf.pas
...
IMyintf = interface
  prop X:Integer;
  prop Y:Integer ro; // read only
  prop Z:Integer wo; // write only
end;
soll es die notwendigen Getter und Setter definieren und aus

Delphi-Quellcode:
// MyClass.pas
...
TMyintf = class(TBaseClass, IMyIntf)
end;
soll es die erforderlichen Propertys und Methoden entsprechend der eingebunden Interfaces erstellen und alles (incl. des Implemantationsteils) vernünftig strukturieren.


@himitsu

Statt bzw. zusätzlich zu "ro" und wo" könnte man ja noch "c" für "const" und "s" für "stdcall" vorsehen.
Wenn das Prinzip funktioniert, dann ist man da sicher flexibel.

Ich bastle gerade einen Parser(Light). Dann werden die gefunden Teile strukturiert gesammelt und später neu zusammengebaut.
Je nach Aufwand kann das sicher auch mit komplexeren Anforderungen umgehen.

Als externes Tool kann ich das sicher realisieren.
Schwieriger wird wohl, das in die IDE einzubinden. Es wäre so etwas wie ein Quelltextformatierer.

Er würde die Unit zerlegen und neu zusammenbauen.
Welche Interfaces eine Klasse verwendet, weiß ich schon.
Das Tool müsste aber jetzt noch die Units ermitteln können, welche diese Interfaces deklarieren.
Dazu müsste wohl die Funktion genutzt werden, die durch Ctrl+Click in die Unit springt.
Damit kenne ich mich nicht aus.

Dann müssten evt. die Interface-Units überarbeitet werden (s.o.), die Interface-Deklaration übernommen werden und dann kann die Klasse optimiert werden.

Vorerst reduziere ich das ganze halt mal auf ein externes Tool.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli ( 3. Sep 2017 um 14:32 Uhr)
  Mit Zitat antworten Zitat