![]() |
Re: Compilerschalter für "Allways build unit"
Für globale Compilerschalter kannst du dir eine Include-Datei machen, in der alle deine Optionen aufgeführt sind, z.B.
Delphi-Quellcode:
Wenn du diese Datei mit {$I ...} in all deinen Projektdateien benutzt, dann sollte auch die IDE die Änderungen mitbekommen.
{$O+}
{$DEFINE MIT_OPTIMIERUNG} |
Re: Compilerschalter für "Allways build unit"
Leider ist das nicht sooo einfach ... bei deinem Vorschlag stehen die Compilerschalter in einer Datei, welche dann ja verändert und demnach automatisch neu compiliert wird.
Aber ich habe eine/mehrere Datei(en), welche von mehreren Prokjekten mit unterschiedlichen Einstellungen verwendet werden. Wie soll ich denn da für jedes Projekt andere Einstelungen da einbinden :?: Daher sind die Compilerschalter in den jeweiligen Projektoptionen (für das entsprechende Projekt) angegeben und somit wird keine datei verändert, selbst wenn sich eine Option ändert -.-'' |
Re: Compilerschalter für "Allways build unit"
zusammengefasst: himitsu hat mein dilema verstanden.
btw. beim letzten release habe ich es natuerlich verbockt. ein projekt ist mit den falschen parametern ausgelieft worden. |
Re: Compilerschalter für "Allways build unit"
Ah!
Kapiert: Da habe ich zwei Tipps: Einen Blöden und einen Guten. Erst der Blöde: Immer BUILD vor dem RELEASE :wall: Jetzt der Gute: Schreib Dir einfach Tool, das betreffenden DCUs lösscht. Wie? Über ein ShellNotify, das beim Erzeugen einer bestimmten DCU die Zeiten der betreffenden DCU-Dateien zurücksetzt (oder die einfach löscht): 1. Schreib Dir eine Dummy-Unit ('Sentinel.PAS'), die Du erstes in allen 'Uses'-Anweisungen steht. 2. Ein ShellNotify reagiert also auf die Erzeugung der Datei 'Sentinel.DCU' und löscht dann die DCU, die auf jeden Fall neu kompiliert werden sollen. 3. Ein weiteres ShellNotify wartet auf die Erzeugung der EXE und löscht dann die Sentinel.DCU Ich habs mir nicht genau überlegt, aber es könnte doch auch reichen, nach Erzeugung der EXE die DCU zu löschen? Denn (2) könnte zu lahm sein, wenn der Compiler schneller als das Notify ist... Aber klappen müsste es eigentlich... |
Re: Compilerschalter für "Allways build unit"
und jetzt die praktikabele lösung... ;-)
|
Re: Compilerschalter für "Allways build unit"
Wie?
Praktikabler geht es nicht, weil sich um nix mehr kümmern muss: Die EXE angeben, die zu löschenen DCU-Dateien angeben, starten und vergessen. Was soll daran nicht praktikabel sein (äh, sofern es funktioniert?). Alternativ: OpenTools-API, damit kenn ich mich aber nicht aus. Wer das kann, packt vor das 'Compile' einfach das 'delete DCU'... |
Re: Compilerschalter für "Allways build unit"
Zitat:
Zitat:
MfG freak |
Re: Compilerschalter für "Allways build unit"
An das löschen/verändern der DCU's hab'sch och schon gedacht, nur ist das nicht sicher genug lösbar, da es ja schießlich nicht nur bei mir, sondern auch bei Anderen funktionieren soll ... und ständig irgendein programm zu starten, was das löschen übernimmt, will ich mir und vorallem den Anderen nicht zumuten.
Außerdem sollte es (nach Möglichkeit) von D4 Std (oder besser noch von D3) bis zum aktuellsten delphi funktionieren. Und was soll es bringen, wenn ich noch 'ne zusätzliche Unit einbaue. Entweder ich kompiliere nur, dann werden die DCU's aber nicht gelöscht, da ja das Programm nichtausgeführt wird ... Und selbst wenn es funktioniert, dann hab ich ja den löschcode auch immer im fertigen Programm und dieser wird dann ständig beim Programmstart ausgeführt, was ja auch nicht gerade gut ist. Was aber OpenTools-API angeht, daran hatte ich noch garnicht gedacht, kenne mich aber damit och nicht aus -.-'' |
Re: Compilerschalter für "Allways build unit"
Zitat:
Zitat:
Das Programm wird als Service, oder ist einfach nur ein Miniprogramm ("Sentinel.EXE"), das im Tray hockt. Und zwar auf dem PC, auf dem die EXE abgelegt wird. Dieses Programm wird nur dann aktiv, wenn eine Datei namens "C:\MyApplication\MyProject.EXE" verändert wird. Immer wenn diese Datei verändert wird (denn das wird sie ja immer durch den Delphi-Compiler), löscht der Sentinel.EXE einfach die DCUs der "Always Build Units".... Also: Sei UTAB.PAS die ('Unit To Always Build') Unit, die immer neu erzeugt werden soll. OK... 1. Anfangszustand: [UTAB.DCU ist gelöscht :thumb:] 2. Compile drücken ... 3. Zwischenzustand: [UTAB.PAS wird neu compiliert und damit UTAB.DCU erzeugt :twisted: ] 4. Zum Schluss wird die MyProject.EXE wird erzeugt. 5. Daraufhin springt der ShellNotify an und der kleine Sentinel.EXE löscht nun einfach die UTAB.DCU :mrgreen: . 6. Endzustand: [UTAB.DCU ist gelöscht :thumb:] Super! EndZustand = Anfangszustand und fertig! Das Progrämmchen ist in einigen Minuten fertig geschrieben. Bei LMD gibt es eine ShellNotify-Komponente, aber wer sich ein bisserl mit der API auskennt, kriegt das auch so hin. |
Re: Compilerschalter für "Allways build unit"
Zitat:
Außerdem wollte ich es möglichst ohne ein weiteres, zusätzlich laufendes Programm hinbekommen (auf meinem rechner würde es mich ja nicht unbedingt stören, aber auf dem der Anderen -.-''). Es laufen ja ohnehin schon zuviele Programme, auch wenn man nichts am PC macht :? Das Einzige, was ich machen könnte, wäre eine Signatur (in Form eines Kommentars) und die Units (.pas) einzufügen, damit zumindestens erkannt wird um welche es sich dabei handelt. Ich könnte z.B. auch einen bestimmen Parameter in meine Dateiheader (zur Versionskontrolle... siehe z.B. ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:23 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