AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Compilerschalter für "Allways build unit"
Thema durchsuchen
Ansicht
Themen-Optionen

Compilerschalter für "Allways build unit"

Ein Thema von generic · begonnen am 16. Feb 2006 · letzter Beitrag vom 19. Apr 2006
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#11

Re: Compilerschalter für "Allways build unit"

  Alt 18. Feb 2006, 13:27
Für globale Compilerschalter kannst du dir eine Include-Datei machen, in der alle deine Optionen aufgeführt sind, z.B.

Delphi-Quellcode:
{$O+}
{$DEFINE MIT_OPTIMIERUNG}
Wenn du diese Datei mit {$I ...} in all deinen Projektdateien benutzt, dann sollte auch die IDE die Änderungen mitbekommen.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#12

Re: Compilerschalter für "Allways build unit"

  Alt 18. Feb 2006, 13:56
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 -.-''
$2B or not $2B
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#13

Re: Compilerschalter für "Allways build unit"

  Alt 5. Mär 2006, 14:03
zusammengefasst: himitsu hat mein dilema verstanden.
btw. beim letzten release habe ich es natuerlich verbockt. ein projekt ist mit den falschen parametern ausgelieft worden.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#14

Re: Compilerschalter für "Allways build unit"

  Alt 7. Mär 2006, 14:03
Ah!

Kapiert: Da habe ich zwei Tipps: Einen Blöden und einen Guten.

Erst der Blöde: Immer BUILD vor dem RELEASE
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...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#15

Re: Compilerschalter für "Allways build unit"

  Alt 7. Mär 2006, 14:50
und jetzt die praktikabele lösung... ;-)
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#16

Re: Compilerschalter für "Allways build unit"

  Alt 7. Mär 2006, 15:02
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'...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#17

Re: Compilerschalter für "Allways build unit"

  Alt 7. Mär 2006, 15:12
Zitat von alzaimar:
Dann solltet Ihr einfach die betroffenen DCUs nach dem Merge löschen.
Zitat von generic:
eine batchgesteuerte "projektverwaltung" gibt es unter d7 ent. nicht.
Beziehen sich die Aussagen auf einander?! Du kannst nämlich als erste Datei eine Batch-Datei in deine Projektverwaltung einbinden, in der steht, das die Datei(*.dcu) gelöscht werden soll.

MfG
freak
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#18

Re: Compilerschalter für "Allways build unit"

  Alt 8. Mär 2006, 11:05
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 -.-''
$2B or not $2B
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#19

Re: Compilerschalter für "Allways build unit"

  Alt 8. Mär 2006, 11:38
Zitat von himitsu:
... und ständig irgendein programm zu starten, was das löschen übernimmt, will ich mir und vorallem den Anderen nicht zumuten...
"Starten und Vergessen" bedeutet: Im Tray ablegen.

Zitat von himitsu:
Und was soll es bringen, wenn ich noch 'ne zusätzliche Unit einbaue.
Vergiss das mit der extra-Unit, war eine Idee, die wir nicht mehr brauchen-

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 ]
2. Compile drücken ...
3. Zwischenzustand: [UTAB.PAS wird neu compiliert und damit UTAB.DCU erzeugt ]
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 .
6. Endzustand: [UTAB.DCU ist gelöscht ]

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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#20

Re: Compilerschalter für "Allways build unit"

  Alt 8. Mär 2006, 12:05
Zitat von alzaimar:
Zitat von himitsu:
... und ständig irgendein programm zu starten, was das löschen übernimmt, will ich mir und vorallem den Anderen nicht zumuten...
"Starten und Vergessen" bedeutet: Im Tray ablegen.

...

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"....
Das Problem bei mir ist, daß es keine "MyProject.EXE" gibt ... die Units, um welche es sich handelt werden von mehreren Programmen genutzt, welche aber nicht vorher feststehen und wo jemand ständig z.B. den Programnamen in irgendeine Liste eintragen kann/will/sollte (daher ist es ja wichtig, daß die Units immer mit den richtigen Compiler-Schaltern kompiliert sind, welche aber in den verschiedenen Programmen unterschiedlich sein können).

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. Compilerversionen? > FNS_VersionCheck.inc - am Dateianfang) einfügen.
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 04:13 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