![]() |
Automatisches Ersetzten von VCL Komponenten in pas und dfm?
Hallo zusammen,
gibt es ein Tool für Delphi welches in einer Kollektion von pas und dfm Dateien den Klassennamen und damit verbundene Eigenschaften automatisch sucht und ersetzt? In der pas und dfm ist z.b. die Klasse TTable, diese soll in allen Dateien durch TADOTable ersetzt werden. Hoffe ihr versteht was ich suche. Danke schon mal ;) Tobi |
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Hallo,
ja, dass habe ich auch schon gesucht (und nicht gefunden). Schnellschussantwort: UltraEdit und über alle *.pas und *.dfm-Dateien ein Globalchange absetzen. (Es darf auch ein anderer Editor sein ;-)) Da TTable und TAdoTable nicht so ganz kompatibel sind, musst Du aber bei so einem globalen Ersetzen mit einer nicht unerheblichen "Fehlermenge" rechnen, wobei die Unterschiede bei TQuery und TAdoQuery wohl größer sind. Alternative: selbstschreiben: OpenDialog mit Multiselect: 'ne Stringliste zum Laden der Dateien per Schleife:
Delphi-Quellcode:
Eventuell noch vor dem Schreiben ein Backup der alten Datei machen.
sl.LoadFromFile(od.FileName);
sl.Text := AnsiReplaceText(sl.Text,'TTable','TAdoTable'); // Ist nicht das Schnellste, für 'nen Einmaljob aber ausreichend. sl.SaveToFile(od.FileName); Aufwand: halbe Stunde mit testen, Vorteil: Du kannst das Programm um weitere Ersetzungen anpassen. |
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Ich glaube, die GExperts bieten etws in der Richtung :gruebel:
|
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Bieten sie, aber es ist doch etwas hakelig und fehlerhaft.
Ich bin bisher mit Suchen&Ersetzen in DFM und PAS ganz gut gefahren. Sherlock |
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Wenn das nicht mal mit Refactory gehen sollte, dann erkläre mir mal einer wozu das Ganze dann gut ist. :shock:
|
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Zitat:
Mein Delphi ist fast so alt wie ich ;-) |
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Dürfte D2005 sein. Ich wundere mich allerdings echt darüber, dass das keiner nutzt oder gar davon weiß. Das betrifft auch Nutzer von D2006 pro oder Turbo Delphi (zumindest ohne Angabe von Trial-Version). Das vor dem Hintergrund : "eeeendlich kann Delphi auch Refactoring" :mrgreen:
|
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Liste der Anhänge anzeigen (Anzahl: 1)
Jupp, es gibt tatsächlich eine entsprechende Refactoring-Methode dafür (siehe Anhang) - mit deinem Delphi 7 wirst du da allerdings nicht glücklich ;)
|
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Bin ich dann froh das ich D2008 hab :D
aahm zum von Hand machen. ich hab damit angefangen aber nach 5 stunden hats dann auch kein Spass mehr gemacht ;).. Das mit dem Refactoring an das hab ich garnich gedacht. Aber da gehen imho auch nich so sachen wie das er Eigenschaften hinzufügt oder anpasst dann an den Komponenten. Für sowas ist dann wohl doch selberschreiben angesagt? Tobi |
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Zitat:
|
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
:oops: seit halt nich so genau :D das RAD Studio eben ;)
|
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Zitat:
Nur wenn ich die Datei in UltraEdit öffne wird die dfm Datei nicht korrekt dargestellt. Kann ich irgentwas an UltraEdit verdrehen oder gibt es eine andere Möglichkeit alle DFMs in das Text DFM Format zu wandeln? Tobi |
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Zitat:
|
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Jaa..aber Refactoring muss man auch jedes mal neu anschucken.. und bei 81 DFMs ;)..
Hab noch nicht die optimale Lösung gefunden :/ |
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Mal überlegen...
Ich habe 1999 eine Anwendung unter Delphi 2 mit über 300 (!) Formularen von TTable auf TAdsTable umgestellt. Dazu musste ich jedes Formular einzeln erstmal öffnen, um sicherzustellen, dass es auch als Text gespeichert wurde. Das heisst, konnte es auf Text umgestellt werden? :gruebel: Ich weiss nicht mehr. Kann auch sein, dass ich die Ersetzmethode von Delphi benutzt habe. Nun bin ich mir nicht mehr sicher, aber dadurch, dass ich jedes Formular einzeln angreifen musste, habe ich wie kein anderer die Anwendung kennengelernt. :shock: Es mussten einige Dinge angepasst werden: Typ, Database, Tabellenname, Filter, Optionen, ... Dann bleiben da natürlich Dinge auf der Strecke, die erst hinterher auffallen beim Compilieren oder noch später: die Dinge, die zur Laufzeit erzeugt werden, wie z.B. Mehrfachnutzung einer Table mit Setzen der Eigenschaften zur Laufzeit. Leider kann ich nicht mehr sagen, wie lange ich dabeigesessen habe. Aber so 2 Monate waren das bestimmt. |
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Hallo Tobias,
Zitat:
Gruß Hawkeye |
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Hi!
Jenachdem was schneller geht, tut es auch ein Rechtsklick im Formular und dort dann das Häkchen bei Text-DFM! Ciao, Frederic |
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Bei 81 Dateien lohnt es sich convert zu nutzen. Einfacher Aufruf per convert -i -t C:\Delphiprojekt\*
Funktioniert spitze. Tobi |
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Zitat:
|
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Liste der Anhänge anzeigen (Anzahl: 1)
Wie schon erwähnt hat GExpert diese Funktion. Damit kannst du auch alle Dateien in einem Projekt bearbeiten, habe ich aber nie ausprobiert. Ich habe lediglich Komponente für Komponente ausgetauscht und das funktioniert tadellos.
Siehe Anhang. Gruß Matze |
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Mir hat diese GExperts-Funktion mehrmals meine Projekte zerballert, vor allen Dingen bei Fremdkomponenten. Natürlich taug so eine einmal-ERfahrung nicht als generelles Ablehnungskriterium, aber man sollte die Funktion mit Vorsicht verwenden (Stichwort: Backup).
|
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Ein Backup sollte man auf jeden Fall machen, egal wie man die Ersetzung bewerkstelligt. Eine Low-Level-Ersetzung in den Textdateien kann das Projekt auch beschädigen
|
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Zitat:
|
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Zitat:
|
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Zitat:
|
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Statt convert ?? *.dfm wohl alle DFM einzeln angeklickt ?? :mrgreen: :wall:
|
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Zitat:
|
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
[OT]
Mal ein paar Fragen zu Binär-DFMs: 1. Was ist der Nachteil davon, wenn man nicht gerade Komponenten ersetzen muss? 2. Wie kann man die aktivieren? Ich hatte ein paar mal experimentell den Haken bei "Text-DFM" weggemacht, aber danach war das Formular immer noch im Textmodus. Werden Binärformulare in den neueren Versionen nicht mehr unterstützt? (Hat das vielleicht auch einen Sinn?) [/OT] |
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
War früher Standartformat. Heute wird aber durchgängig die Textvariante verwendet, da der kleine größenvorteil der Binärversion nicht mehr ins Gewicht fällt
|
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Hallo,
für Versionskontrollsysteme sind Binärdateien eher hinderlich, da sie in der Regel nur die Differenz zweier Versionsstände speichern. Gruß Hawkeye |
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Okay, das leuchtet ein :bounce1:
|
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Zitat:
1. Im Programmierbetrieb habe ich zumindest bisher keine Auswirkungen gespürt. 2. Auch wenn man auf "Rechte-Maustaste" den Text-DFM aktiviert, werden die Formulare auf Umschalten mit "Rechte-Maustaste-Ansicht als Text" immmer im Textformat angezeigt. Der Unterschied liegt in der Speicherung der Formulare. Vergleiche einmal Formulare miteinander, die Du als Text bzw. Nicht-Text gespeichert hast mit einem Einfach-Texteditor Deiner Wahl. Zumindest bei meinem Turbo Delphi Pro. kann ich den Text-DFM-Modus deaktivieren. Ich denke mal, dass diese binäre Struktur (wie auch immer diese intern verarbeitet wird) früher hauptsächlich Speicherplatz sparen sollte. |
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Du hast recht, es funktioniert doch :oops:
|
Re: Automatisches Ersetzten von VCL Komponenten in pas und d
Moin, moin,
zum Suchen und Ersetzen hat sich bei mir ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:24 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