AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Interface-Unterstützung

Ein Thema von stahli · begonnen am 2. Sep 2017 · letzter Beitrag vom 25. Mai 2018
Antwort Antwort
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Interface-Unterstützung

  Alt 7. Nov 2017, 16:31
Irgendwie habe ich es noch nicht verstanden,
was fehlt Dir im Modelmaker Code Explorer?
Ich habe bis jetzt Deinen Flow bei Änderungen nicht verstanden.
Wahrscheinlich bin ich zu doof.....
Fritz Westermann
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.639 Beiträge
 
Delphi 12 Athens
 
#2

AW: Interface-Unterstützung

  Alt 7. Nov 2017, 16:32
Wahrscheinlich bin ich zu doof.....
Dann wären wir schon zwei
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Interface-Unterstützung

  Alt 7. Nov 2017, 16:39
Dann wären wir schon zwei
Irgendwie beruhigt mich das
Fritz Westermann
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

AW: Interface-Unterstützung

  Alt 7. Nov 2017, 17:01
Den MMX hatte ich getestet. Der war mir zu groß und umständlich.
Vor allem fand ich die Implementation von Interfaces nicht hilfreich.

Kann natürlich mein Fehler gewesen sein.

Kann mal jemand ein kurzes Video mit folgendem Inhalt erstellen?
--> Unit mit 2 Interfaces
- Intf1 mit zwei Propertys MyInteger und MyBoolean erzeugen (read+write)
- Intf2 mit zwei Propertys MyString und MyByte erzeugen (read+write)

--> Unit mit 3 Klassen
- Class1(TInterfacedObject, Intf1)
- Class2(TInterfacedObject, Intf2)
- Class3(TInterfacedObject, Intf1, Intf2)

Für die Getter und Setter muss natürlich ein privates Feld in den Klassen erstellt und verwendet werden.

Es wäre mal interessant, wie weit MMX einen da unterstützt.
Nach meiner bisherigen Einschätzung wird das trotzdem noch eine Schreib- oder Kopierorgie.


Entweder überzeugt mich das Video dann und ich stoppe mein Tool oder ich baue es mal weiter aus und zeige später mal, warum ich diesen Ansatz besser finde.



So ungefähr müsste man mit meinem Tool nur noch schreiben:

Delphi-Quellcode:
---> InterfaceUnit

Intf1 = Interface
prop MyInteger:Integer;
prop MyBoolean:Boolean;
end;

Intf2 = Interface
prop MyString:String;
prop MyByte:Byte;
end;

---> KlassenUnit

Class1 = class(TInterfacedObject, Intf1)
end;

Class2 = class(TInterfacedObject, Intf2)
end;

Class3 = class(TInterfacedObject, Intf1, Intf2)
end;

Alles andere würde automatisch ergänzt werden.
Ebenso nachträgliche Änderungen in den Interfaces, wenn z.B. dort der Typ von einem Property geändert wird oder Parameter von var in const usw.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli ( 7. Nov 2017 um 17:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.639 Beiträge
 
Delphi 12 Athens
 
#5

AW: Interface-Unterstützung

  Alt 7. Nov 2017, 19:11
Nach meiner bisherigen Einschätzung wird das trotzdem noch eine Schreib- oder Kopierorgie.
Das sehe ich zwar anders, aber deine Anforderungen sind schon sehr speziell (so speziell zumindest, daß ich sie zumindest bisher noch nicht vermisst hätte) und da ist natürlich ein speziell darauf abgestimmtes Tool nicht zu toppen.

Nur mal als schnelle Idee, wie ich etwas vergleichbares mit MMX realisieren würde (für ein Video habe ich gerade keine Zeit). Ich würde halt ganz anders anfangen. Ausgehend von zwei leeren Units:
  • die Klasse anlegen (MMX-Dialog, Code-Template oder von Hand)
  • die Properties in den Klassen anlegen (der MMX-Dialog erlaubt bereits unterschiedliche, auch selbst definierte Implementierungen)
  • die Properties in MMX markieren
  • über (MMX-)Refactorings - Extract Interface das Interface erzeugen
  • den Interfacenamen dabei gleich in die Zwischenablage kopieren
  • und nach einem Komma in die Klassendeklaration kopieren
  • das Interface per MMX-Cut/Paste in die andere Unit verlagern
  • falls noch nicht geschehen die andere Unit per Ctrl-U (MMX) oder Alt-F11 (IDE) usen

Bei geschickt gewählten Default-Einstellungen sind in den MMX-Dialogen kaum Eingaben nötig (Name von Klasse/Property/Interface, Typ des Properties geht in der Regel per Auto-Complete mit 1-2 Tasten). Das sind vergleichbar viele (eher weniger) Eingaben als in deinem Beispiel zu machen sind. Allerdings kann man in beiden Fällen mit Code-Templates eventuell noch was rausholen. Es gibt ein Copy/Paste (Name des Interfaces) und ein Cut/Paste (Interface in andere Unit) für jedes Interface.

Eine automatische Synchronisierung der Parameter ist dort leider nicht vorgesehen. Allerdings genügt hier analog zum Beschriebenen ein simples Copy/Delete/Paste der betroffenen Properties bzw. Methoden um das wieder zu synchronisieren. Das ist natürlich nicht so schnell und komfortabel wie deine Speziallösung, aber es ist ja auch nicht gerade und ausschließlich dafür gedacht. (Was nicht heißt, daß es sowas in Zukunft nicht bekommen könnte)

Aber natürlich bleibt dein Tool für dich immer die bevorzugte Wahl. Schließlich baust du es ja auch genau nach deinen Bedürfnissen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.073 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Interface-Unterstützung

  Alt 8. Nov 2017, 07:47
Meiner Meinung nach wäre es viel sinnvoller, wenn es ein Tool geben würde, dass automatisch vergessende Semikolons hinter die Zeilen tackert.
Das regt mich immer maßlos auf! Schnell was hingeschrieben, Strg + F9 und Bumm:
"Nak nak nak, Sie haben ein Semikolon vergessen...ich als Compiler finde das voll doof...ich könnte zwar selber eins hinbasteln, aber ich will Sie als Programmierer noch ein bissel gängeln!".
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

AW: Interface-Unterstützung

  Alt 8. Nov 2017, 10:54
Meiner Meinung nach wäre es viel sinnvoller, wenn es ein Tool geben würde, dass automatisch vergessende Semikolons hinter die Zeilen tackert.
Das regt mich immer maßlos auf! Schnell was hingeschrieben, Strg + F9 und Bumm:
"Nak nak nak, Sie haben ein Semikolon vergessen...ich als Compiler finde das voll doof...ich könnte zwar selber eins hinbasteln, aber ich will Sie als Programmierer noch ein bissel gängeln!".
Es soll Programmiersprachen geben, wo man gar keine Semikolons machen muss, weil der Compiler schlau genug ist, zu erkennen, wo Anweisungen enden.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.395 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Interface-Unterstützung

  Alt 7. Nov 2017, 17:24
Irgendwie habe ich es noch nicht verstanden,
was fehlt Dir im Modelmaker Code Explorer?
Ich habe bis jetzt Deinen Flow bei Änderungen nicht verstanden.
Wahrscheinlich bin ich zu doof.....
Ein STRG + C für Interfaces, das bei

property Foo: Integer; die entsprechenden Methoden anlegt - ist ja wirklich nicht die Welt.

Und STRG + C ist einfach schneller als im CodeExplorer, den ich auch installiert habe, den AddProperty Dialog aufzurufen und dort die Daten einzugeben - so ganz trivial ist der Dialog auch nicht Und sollte es eine vergleichbare Möglichkeit im MM Codeexplorer geben die ich bisher nur noch nicht gefunden haben, dann Asche auf mein Haupt....
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz