AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte UnitOptimizer

UnitOptimizer

Ein Thema von stahli · begonnen am 25. Mai 2018 · letzter Beitrag vom 31. Okt 2021
Antwort Antwort
Seite 5 von 25   « Erste     345 6715     Letzte » 
Benutzerbild von stahli
stahli
Registriert seit: 26. Nov 2003
Ich bin dabei, ein Tool aufzubauen, das Units sortiert und Code ergänzt.

Es ist quasi eine Klassenvervollständigung, Codeformatierung und Codesortierung in einem.

Hier mal ein aktueller Zwischenstand als Video: https://youtu.be/cfKa3wuoEd0

Eine direkte Codeformatierung (Einrückung) habe ich noch nicht drin, will das aber auch noch ergänzen. Die anderen Features gehen für mich aber vor.

Die Abkürzung "prop" könnte man auch mit "property" ausschreiben lassen. Ebenso sind optional andere Voreinstellungen möglich, wenn dies gewünscht würde. Ich bin zunächst erst einmal von meinen Wünschen ausgegangen.

Ich würde das später sehr gern kommerziell anbieten, wenn es Nachfrage gibt.
Für öffentliche Tests ist es noch etwas früh. Dazu muss ich noch einiges ausbauen und ausbessern.
Sofern jemand Erfahrungen mit den OTA hat und daran mitarbeiten möchte, dann gebt Bescheid...



Ich hatte dazu schon einen Thread, der sich aber speziell auf die Interface-Unterstützung bezogen hatte. Da das Tool aber Units allgemein bearbeitet habe ich hier einen neuen Thread eröffnet.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
 
DieDolly
 
#41
  Alt 30. Okt 2018, 12:10
Mal als Neuling-line eine Frage.
Was macht die Unit? Ich werde aus dem Video und der Einleitung nicht schlau.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

 
Delphi 11 Alexandria
 
#42
  Alt 30. Okt 2018, 12:56
Meinst Du, was der Optimizer macht?

Schaust Du mal bitte unter Beitrag #3? Da hatte ich das nochmal zusammengefasst.
Ansonsten gehe ich gern nochmal darauf ein, aber vielleicht klären sich die Fragen ja schon damit.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

 
Delphi 11 Alexandria
 
#43
  Alt 31. Okt 2018, 17:37
Ich habe eine Lösung für weiche Umbrüche gefunden.

#0 ist für den Editor ein EOF - ist also untauglich.
Mit #27 funktioniert es aber erst mal gut.
Im Editor wird ein kleines Kästchen dargestellt, das aber (soweit ich testen konnte) nirgends stört.

Sofern sich doch mal noch Probleme ergeben, könnte ich das ESCAPE auch durch "//" ersetzen, das dann am Ende einer Zeile als weiches LineBreak interpretiert werden kann.
Fall jemand zufällig weiß, dass das ESCAPE unter bestimmten Umständen kritisch sein kann, dann gebt bitte mal Bescheid.

Bei neuen Formatierungen werden diese Umbrüche gegebenenfalls durch neue ersetzt.

Im Bild habe ich mal einige aufeinanderfolgende Optimierungen und Änderungen dargestellt.
Am Kästchen ist zu sehen, dass hier ein weicher Umbruch ist, der bei der nächsten Optimierung ggf. korrigiert wird.
Miniaturansicht angehängter Grafiken
llb.jpg  

Geändert von stahli (31. Okt 2018 um 17:43 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

 
FreePascal / Lazarus
 
#44
  Alt 31. Okt 2018, 18:27
Irritierender Weise erfährt man in der Delphi-Hilfe nicht was die aktuellen Whitespaces sind.
Ich meine mich zu erinnern, das x1B(#27) ein Whitespace ist, aber das bezieht sich wohl auf (Turbo)Pascal.
Vielleicht kommst du an die aktuelle Backus-Naur-Form, da sollte alles drin stehen.

Gruß
K-H
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

 
Delphi 11 Alexandria
 
#45
  Alt 1. Nov 2018, 13:27
@p80286

Ich wusste nicht mal, dass eine derartige standardisierte Dokumentation gibt.
Gefunden habe ich nichts passendes. Man kann sich ja auch nicht darauf verlassen, dass es bei einer aktuellen Regelung dauerhaft bleibt.
Ich werde das erst mal bei #27 belassen und einen Plan B in der Hinterhand behalten. Es kann ja auch mal sein, dass andere Tools nicht mit dem #27 klar kommen oder das selbst anders interpretieren.


@all

Ich könnte mir auch gut Einrückungen von SQL-Statements vorstellen.
Hätte da jemand Interesse?
Ich selbst brauche das nicht, aber ich könnte das mit einplanen.

Das könnte dann so aussehen:
Code:
  SQL1.Text := 'select * from Table.db '
             + 'where X=1 '
             + 'order by Y';
oder so:
Code:
  SQL1.Text := 'select * from Table.db' + #13#10
             + 'where X=1' + #13#10
             + 'order by Y';
Der Code würde dann harte (unveränderliche) Linebreaks enthalten, aber das "+" als erstes Zeichen in der nächsten Zeile und das fehlende Semikolon in der vorherigen würde zum Einrücken des Textes führen.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

 
FreePascal / Lazarus
 
#46
  Alt 1. Nov 2018, 17:55
Ich hab da was in der D7 Hilfe gefunden:
Zitat:
Syntaktische Elemente

Delphi verwendet den ASCII-Zeichensatz mit den Buchstaben A bis Z und a bis z, den Ziffern 0 bis 9 und weiteren Standardzeichen. Die Sprache unterscheidet nicht zwischen Groß- und Kleinschreibung. Das Leerzeichen (ASCII 32) und die Steuerzeichen (ASCII 0 bis 31 einschließlich ASCII 13 für Zeilenvorschub) werden als Blanks bezeichnet.
Zugegeben nicht mehr ganz aktuell aber vielleicht ein Einstieg.
Angeblich soll die BNF sich auch in der Hilfe befinden, aber bisher hab ich sie noch nicht gefunden.

Gruß
K-H
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

 
Delphi 11 Alexandria
 
#47
  Alt 11. Nov 2018, 22:54
Ich habe jetzt eine kleine Demoexe mit der man Vorschauen von optimierten Units anzeigen kann.
Optional gibt es vorerst die Möglichkeit, in Uses-Klauseln Units untereinander anordnen zu lassen.

Ist noch sehr provisorisch. Später werde ich die hier auch mal zum Testen hochladen.
Die Optionen sollen natürlich noch ausgebaut werden.

Anbei mal ein Screenshot von zwei Formatierungen der Uses-Klausel und hier ein kurzes Video: https://youtu.be/KHxoeZCwk7I (3min).
Miniaturansicht angehängter Grafiken
ua1.jpg  

Geändert von stahli (12. Nov 2018 um 12:35 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

 
Delphi 11 Alexandria
 
#48
  Alt 22. Nov 2018, 15:57
Eine Frage:

Macht es Sinn, Getter und Setter in Interfacedeklarationen in Regions zu verpacken?

Delphi-Quellcode:
  IWord = interface( IResultText )
    [sid_Word]
    {$REGION 'Getter+Setter'}
    function _get_Text: string;
    procedure _set_Text( const Value: string );
    function _get_PosMarkerList: TList<IPosMarker>;
    procedure _set_PosMarkerList( const Value: TList<IPosMarker>);
    function IsSpace: Boolean;
    {$ENDREGION}
    function IsFilled: Boolean;
    property Text: string read _get_Text write _set_Text;
    function AsText: string;
    property PosMarkerList: TList<IPosMarker> read _get_PosMarkerList write _set_PosMarkerList;
  end;
Getter und Setter sind ja quasi nur Hilfskonstrukte und für die Nutzung und Verständnis des Interfaces nicht wirklich relevant.
Zugeklappt sieht das gut aus. Aber der Optimizer kann sicher nicht gezielt DIESE Regionen zuklappen.

Ich könnte auch eine Leerzeile zwischen Gettern+Settern und dem Rest einfügen.

Ok, dann ist die Region auch nicht wirklich störend.
Oder gibt es neben den optischen Bewertungen noch Gründe gegen Regionen (Probleme beim Debugging oder anspringen von Codezeilen o.ä.)?

Was meint Ihr zur Separierung von Gettern+Settern vom Rest eines Interfaces?

- Region
- Leerzeile
- Leerzeile mit //
- gar keine Trennung
Miniaturansicht angehängter Grafiken
uor.jpg  
  Mit Zitat antworten Zitat
TiGü

 
Delphi 10.4 Sydney
 
#49
  Alt 22. Nov 2018, 16:24
Zitat:
Was meint Ihr zur Separierung von Gettern+Settern vom Rest eines Interfaces?

- Region
- Leerzeile
- Leerzeile mit //
- gar keine Trennung
Ja, alles. Einstellbar machen.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

 
Delphi 11 Alexandria
 
#50
  Alt 24. Nov 2018, 15:12
Ich habe jetzt erst mal die Regionen fix drin.

Natürlich kann ich da je nach Bedarf mal noch verschiedene Optionen anbieten, aber ich werde jetzt vorrangig erst mal ein Standardverhalten umsetzen und die Logik möglichst übersichtlich halten (ist wirklich schon komplex genug).

Anbei mal ein paar aktuelle Screenshots.

In der DP lässt sich der formatierte Code nicht gut darstellen aber Ihr könnt Euch mal aus dem Anhang eine Beispielunit mit Eurem Delphi öffnen.
Die Regionen sind bei mir dann direkt zugeklappt. Ansonsten müsstet Ihr diese mal noch selber zusammenklappen um einen wirklichen Eindruck zu bekommen, wie sich das so anfühlt.

Mir gefällt das so schon sehr gut.

Ich suche jetzt noch eine Funktion in den OTA, mit der der Optimizer alle Regionen nach der Arbeit selbständig zusammenklappen kann.
Grundsätzlich komme ich jetzt ganz gut voran...
Miniaturansicht angehängter Grafiken
uof1.jpg   uof2.jpg   uof3.jpg  
Angehängte Dateien
Dateityp: pas uo_beispiel.pas (41,6 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 08:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz