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 15. Okt 2019
Antwort Antwort
Seite 3 von 10     123 45     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)
 
Benutzerbild von stahli
stahli

 
Delphi 10.3 Rio
 
#21
  Alt 27. Aug 2018, 11:50
Einen Automatismus kann ich mir da nicht vorstellen.

Was möglich wäre, man könnte Wertepaare einrichten:
Zitat:
Winapi.Windows<->Windows
Vcl.Forms<->Forms
Mit einem Hotkey könnte man alle Units in uses-Klauseln umswitchen.

Man könnte das auch noch weiter ausbauen:
Zitat:
Winapi.Windows{VCL}<->Windows{old}
Vcl.Forms{VCL}<->Forms{old}<->FMX.Forms{FMX}
Nach Wahl eines Hotkeys wird eine Auswahl
VCL
old
FMX
angezeigt und man kann eines davon anwählen.
Alle Unit-Versionen in den uses-Klauseln würden dann durch die entsprechende Variante ersetzt werden.
Man müsste halt einmal entsprechende Paarungen definieren.

Das war nicht das Ziel meines Optimizers aber eine solche Lösung wäre mit umsetzbar.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

 
Delphi 2010 Professional
 
#22
  Alt 27. Aug 2018, 11:56
Soweit ich weiß, kann GExperts aber auch den umgekehrten Weg. Ich selbst sehe allerdings keine Notwendigkeit für diesen Rückweg, da ich grundsätzlich nur nach vorne portiere.
Das teste ich gleich mal, anscheinend genau zur Richtigen Zeit das es eine sehr aktuelle Version gibt: 2018-08-05

Danke für diesen Hinweis!
  Mit Zitat antworten Zitat
Delphi.Narium

 
Delphi 7 Professional
 
#23
  Alt 27. Aug 2018, 12:03
Einen Automatismus kann ich mir da nicht vorstellen.
Doch, eigentlich schon. Alte Delphis erlauben keinen Punkt im Namen einer Unit.
Wenn es also im Uses Unitnamen mit Punkt gibt, jeweils alles vor bis einschließlich letztem Punkt entfernen.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

 
Delphi 2010 Professional
 
#24
  Alt 27. Aug 2018, 12:21
Also mein Delphi 7 konnte auch mit Punkt im Unit Namen! Delphi 2009 auch!

edit
Beispiel:
Dieses mini Sample von Schokohase zum Beispiel, ich musste halt nur von original Delphi Units den Namespace entfernen, die selfmade Units habe ich vom Namen her mit Punkt drinnen behalten.

Also ein "entferne alles was nen Punkt besitzt" wäre da fatal.

Geändert von KodeZwerg (27. Aug 2018 um 12:36 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

 
Delphi 10.3 Rio
 
#25
  Alt 27. Aug 2018, 12:42
Alte Delphis erlauben keinen Punkt im Namen einer Unit.
Generics.Collections
Generics.Defaults
Uwe Raabe
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

 
Delphi 10.3 Rio
 
#26
  Alt 27. Aug 2018, 12:47
Einen Automatismus kann ich mir da nicht vorstellen.
Im MMX Code Explorer werden zunächst anhand der Werte in den Projekt-Optionen alle Unit Aliase aufgelöst und daraus resultierende Doubletten entfernt (z.B. WinTypes, WinProcs). Dann wird für jede Unit in der so bereinigten Uses-Clause im Suchpfad/Bibliothekspfad gesucht. Falls nicht gefunden, werden sämtliche angegebenen Unit-Namespaces probiert bis einer passt. Der umgekehrte Weg könnte ähnlich laufen.
Uwe Raabe
  Mit Zitat antworten Zitat
raller09

 
Delphi 10.1 Berlin Enterprise
 
#27
  Alt 6. Sep 2018, 08:57
Moin,

ich habe mir die Funktion zum Erweitern der "Ergänzung des Unit-Namespace" sowohl in MMX wie auch in GEExperts angesehen. Super Funktion + scheint gut zu funktionieren!


https://www.uweraabe.de/Blog/2018/05...eature-in-mmx/
https://blog.dummzeuch.de/2018/08/04...r-in-gexperts/


Gibt es in einem der beiden Programmen die Funktionalität, das "für alle Dateien des Projektes" oder "für ein Verzeichnis" oder "für eine Liste von Dateien" gleichzeitig aufzurufen?


Ich möchte mal testen, ob diese Auflösung Einfluss auf die Kompilierungs-Geschwindigkeit in unserem Projekt hat ...
Sonst muss ich mich mal durch einige Dateien (> 500) klicken...


Danke,
  Mit Zitat antworten Zitat
dummzeuch

 
Delphi 2007 Professional
 
#28
  Alt 6. Sep 2018, 09:05
ich habe mir die Funktion zum Erweitern der "Ergänzung des Unit-Namespace" sowohl in MMX wie auch in GEExperts angesehen. Super Funktion + scheint gut zu funktionieren!

Gibt es in einem der beiden Programmen die Funktionalität, das "für alle Dateien des Projektes" oder "für ein Verzeichnis" oder "für eine Liste von Dateien" gleichzeitig aufzurufen?
Für GExperts will ich das gerade nicht implementieren, da die Gefahr, sich dabei das komplette Projekt zu zerschießen ziemlich hoch ist.

Du kannst das aber gerne selbst tun, der Source ist ja verfügbar.

twm
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

 
Delphi 10.3 Rio
 
#29
  Alt 6. Sep 2018, 10:01
Gibt es in einem der beiden Programmen die Funktionalität, das "für alle Dateien des Projektes" oder "für ein Verzeichnis" oder "für eine Liste von Dateien" gleichzeitig aufzurufen?
Es gibt eine Kommandozeilenversion, mit der das alles angefangen hat. Die ist eigentlich nicht für die Veröffentlichung aufbereitet und einiges ist da sicher noch verbesserungsfähig. Also alles ohne Gewähr.

Die Konfigurationsdatei solltest du auf dein Projekt anpassen (insbesondere den Suchpfad und die GroupNames) und mit dem -c Parameter auf der Kommandozeile übergeben. Das könnte dann in etwa so aussehen:
Code:
UsesCleaner -c:"c:\MyProjectPath\UsesCleaner.cfg" "c:\MyProjectPath\*.pas"
Es können auch mehrere Wildcard-Ausdrücke angegeben werden und wenn du noch einen Parameter -s spendierst, werden auch Unterverzeichnisse durchsucht.
Angehängte Dateien
Dateityp: zip UsesCleaner.zip (409,5 KB, 17x aufgerufen)
Uwe Raabe
  Mit Zitat antworten Zitat
raller09

 
Delphi 10.1 Berlin Enterprise
 
#30
  Alt 6. Sep 2018, 12:47
Moin,

vielen Dank für die Rückmeldung.


Für GExperts will ich das gerade nicht implementieren, da die Gefahr, sich dabei das komplette Projekt zu zerschießen ziemlich hoch ist.
Du kannst das aber gerne selbst tun, der Source ist ja verfügbar.
wollte ich im ersten Schritt vermeiden, aber kann ich mir ggf. ansehen.

Die angesprochen Probleme habe ich gerade auch mit der Sortierung der uses + der Funktion von Herrn Raabe aus MMX schon festgestellt:

Die dort eingestellte Sortierungs-Reihenfolge der Uses sorgt z.B. für einen Parameter-Fehler in "DeleteFile", da "PWideChar <> TFileName"

Ich hatte implizit System.SysUtils.DeleteFile genutzt, welches durch die geänderte Uses zu "Winapi.Windows.DeleteFile" wurde...

Wie war noch mal die Reihenfolge bei gleichen Funktions/Prozedur-Namen in verschiedenen Units. Ich meine Uses von unten nach oben, korrekt?


In welcher Reihenfolge werden die Namespaces Aufgelöst? Ich würde von links nach rechts tippen, ist das korrekt?

Es gibt eine Kommandozeilenversion, mit der das alles angefangen hat. Die ist eigentlich nicht für die Veröffentlichung aufbereitet und einiges ist da sicher noch verbesserungsfähig. Also alles ohne Gewähr.
Vielen Dank für das Tool, damit teste ich mal. Ich werde die Sortier-Reihenfolge + Gültigkeitsbereichsnamen gleich meiner Projekt-Einstellung setzen.

Ich werde mir das bis zum Wochenende mal mit unserem Programm angesehen haben + gebe dann eine Rückmeldung.


Danke,
  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 01:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf