AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte UnitOptimizer
Thema durchsuchen
Ansicht
Themen-Optionen

UnitOptimizer

Ein Thema von stahli · begonnen am 25. Mai 2018 · letzter Beitrag vom 31. Okt 2021
Antwort Antwort
Seite 2 von 8     12 34     Letzte »    
Benutzerbild von stahli
stahli

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

AW: UnitOptimizer

  Alt 3. Aug 2019, 22:44
Ich habe das Projekt nochmal neu angefangen und das Konzept geht bisher ganz gut auf.

Bei Kommentaren möchte ich unterscheiden zwischen
- auskommentiertem Code und
- echten Kommentaren.

Auskommentierter (mehrzeiliger) Code wird eingerückt, als wäre er wirksamer Code - allerdings ohne Einfluss auf den echten umgebenden Code (also nur innerhalb des Kommentarblocks).
Die Klammern werden ganz links positioniert, so dass der Codefluss nicht so gestört wird.

Echter Kommentar wird mit einem zusätzlichen Doppelpunkt gekennzeichnet und dann eingerückt, wie man es kennt.

Meine Fragen:
- Was haltet Ihr davon?
- Würde eine Variante Sinn machen, bei Kommentaren mehrere Leerzeichen nicht auf eins gekürzt werden (oder sollten Leerzeichen gar nicht gekürzt werden)?
- Wären zusätzliche Kommentarformatierungen sinnvoll?
Miniaturansicht angehängter Grafiken
uo-kommentare-einrueckung.png  
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli ( 4. Aug 2019 um 10:06 Uhr) Grund: Ein passenderes Bild. Es war schon spät gestern. :-(
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

AW: UnitOptimizer

  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  
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

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

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: UnitOptimizer

  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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  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: UnitOptimizer

  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.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: UnitOptimizer

  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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

AW: UnitOptimizer

  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  
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

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

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

AW: UnitOptimizer

  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  
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
TiGü

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

AW: UnitOptimizer

  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

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

AW: UnitOptimizer

  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)
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
TiGü

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

AW: UnitOptimizer

  Alt 25. Nov 2018, 09:16
Wo hast du dir denn das mit den Unterstrichen für Setter und Getter abgeguckt? Das sieht ja gruselig aus.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 8     12 34     Letzte »    


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 21:00 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