| Autor |
Beitrag |
chrissivo
      
Beiträge: 130
WIN XP, WIN 2000, WIN MCE, WIN 98
D5 Pers
|
Verfasst: Mo 29.08.05 18:18
Hallo,
ich stehe vor folgendem Problem.
Ich möchte mit einem Programm den dcc32-Compiler ansprechen eine bestimmte Delphi-Projekt-Datei zu kompilieren. Dabei gibt es an einer Stelle im Quelltext einen Verweis auf eine Include-Datei: {$I C:\TEST\PROBE.INC}
Das Problem ist, dass sich der Inhalt der "PROBE.INC" VOR jedem Compileraufruf verändert. Wenn ich nun diese Datei erstelle und anschließend den Delphi-Compiler per ShellExecute aufrufe, dann bekomme ich eine .Exe mit anderem, alten Text aus der Include-Datei.
Rufe ich nun den Compiler mittels der IDE auf, so wird die erstellt AKTUELLE "PROBE.INC" wie gewünscht mit einkompiliert. Rufe ich nun, während die IDE läuft, erneut mein Programm, das mir die PROBE.INC neu erstellt, auf und kompiliere mit der IDE neu, dann wird die geänderte "PROBE.INC" NICHT mit einkompiliert.
Erst mit erneutem Starten der IDE wird auch die neue "PROBE.INC" benutzt.
Ich fürchte, dass dieses Problem damit zusammenhängt, dass er evtl. alte Cache-Dateien verwendet. Gibt es eine Möglichkeit, dem Compiler in der Kommandozeile, wie in der IDE bei jeder Kompilation zu einer kompletten Neukompilation zu zwingen?
Für jede Hilfe bin ich dankbar
Chrissi
PS: Habe zum Aufruf des ShellExecute den Code von www.coding-board.de/...howthread.php?t=4119 benutzt. Moderiert von Gausi: Topic aus CLX / Delphi Language (Object-Pascal) verschoben am Di 30.08.2005 um 13:39
_________________ "... was ich noch zu sagen hätte dauert eine Zigarette, und ein letztes Glas im Steh'n..."
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mo 29.08.05 18:58
Gib beim Compilieren einfach den Schalter /B mit an. Dann erzeugt der Compiler JEGLICHE Dateien immer neu, wenn er den Source findet.
Edit: In der IDE heißt der Menüpunkt "Build", "Erstellen" oder "Aktualisieren" unter dem Menü "Projekt".
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
chrissivo 
      
Beiträge: 130
WIN XP, WIN 2000, WIN MCE, WIN 98
D5 Pers
|
Verfasst: Mo 29.08.05 20:36
Hm...,
danke für die schnelle Antwort. Also, wie beschrieben, geht es in der IDE über "Projekt erzeugen".
Aber über den Shell-Aufruf funzt das irgendwie nicht...
Gibt es sonst noch eine Möglichkeit?
Vielen Dank erst einmal
Chrissi
_________________ "... was ich noch zu sagen hätte dauert eine Zigarette, und ein letztes Glas im Steh'n..."
|
|
chrissivo 
      
Beiträge: 130
WIN XP, WIN 2000, WIN MCE, WIN 98
D5 Pers
|
Verfasst: Mo 29.08.05 20:41
Ich habe einfach mal probiert den Delphi-Compiler (Delphi32.exe) anstelle des Kommandozeilen-Compilers zu verwenden. Was soll ich sagen? Es läuft!
Damit hat sich für mich gezeigt: Kommandozeilen-Compiler <> IDE-Compiler
Danke
Chrissi
_________________ "... was ich noch zu sagen hätte dauert eine Zigarette, und ein letztes Glas im Steh'n..."
|
|
LigH
      
Beiträge: 239
Win98SE, Win2000SP4
D7
|
Verfasst: Mo 29.08.05 20:46
dcc32.exe /b projekt.dpr funktioniert nicht? Sehr sonderbar... Fehlen da vielleicht Include-Pfade, findet der CLI-Compiler zugehörige Projekt-Dateien nicht?
|
|
chrissivo 
      
Beiträge: 130
WIN XP, WIN 2000, WIN MCE, WIN 98
D5 Pers
|
Verfasst: Mo 29.08.05 20:50
Also kompilieren tut er das Projekt wirklich neu, das erkenne ich ja auch am Erstellungsdatum der .Exe. Aber der im Include stehende Teil funktioniert nicht.
Viele Grüße
Chrissi
_________________ "... was ich noch zu sagen hätte dauert eine Zigarette, und ein letztes Glas im Steh'n..."
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Mo 29.08.05 21:39
Also, so ein Compiler ist dumm wie Brot, der macht nur das, was Du im sagst. Aber er macht auch wirklich nur das, was Du im sagst. Er benutzt, soweit ich das weiss, nicht die selben Suchpfade wie die IDE. Die musst Du ihm selbst mitteilen. Check mal die Hilfe vom Compiler.
|
|
chrissivo 
      
Beiträge: 130
WIN XP, WIN 2000, WIN MCE, WIN 98
D5 Pers
|
Verfasst: Di 30.08.05 10:56
Hallo,
habe mir die Hilfe mal durchgelesen und konnte da nichts interessantes finden. Meiner Meinung nach benutzt er auch die richtigen Suchpfade, sonst könnte er meiner Meinung nach nicht kompilieren...
Außerdem steht die Include-Datei ja auch mit voller Pfadangabe im Programm.
Ich will an dieser Stelle anmerken, dass es mir nicht unbedingt wichtig war/ist den Kommandozeilen-Compiler zu verwenden, sondern einen Compiler per ShellExecute mit Parametern aufrufen zu können.
Das funktioniert, wie es soll und damit bin ich glücklich
Danke
_________________ "... was ich noch zu sagen hätte dauert eine Zigarette, und ein letztes Glas im Steh'n..."
|
|
AndyB
      
Beiträge: 1173
Erhaltene Danke: 14
RAD Studio XE2
|
Verfasst: Di 30.08.05 11:39
chrissivo hat folgendes geschrieben: | | sondern einen Compiler per ShellExecute mit Parametern aufrufen zu können. |
Ich hoffe du machst was für dich, oder ein IDE Plugin oder was für Delphi-Benutzer, denn den Compiler darf man nicht weitergeben.
_________________ Ist Zeit wirklich Geld?
|
|
chrissivo 
      
Beiträge: 130
WIN XP, WIN 2000, WIN MCE, WIN 98
D5 Pers
|
Verfasst: Di 30.08.05 13:03
Ja, das Programm benutze nur ich, weitergegeben werden soll eigentlich nur das, was herauskommt. Und ich nehme einfach mal an, dass es der Lizenzvereinbarung keine Gefährdung gebietet, wenn ich den Compiler anstatt über den Klick in der IDE einfach über einen Aufruf bediene.
Das ganze hat den Hintergrund, dass das erzeugte Programm mit Namen des Benutzers versehen sein soll, und dieser wird schlicht aus einer Liste ausgelesen und dann in eine Include-Datei gepackt. Anschließend soll der Compiler dann die neu erstelle Include-Datei in den Quelltext einbinden.
Viele Grüße
Chrissi
_________________ "... was ich noch zu sagen hätte dauert eine Zigarette, und ein letztes Glas im Steh'n..."
|
|
tommie-lie
      
Beiträge: 4373
Ubuntu 7.10 "Gutsy Gibbon"
|
Verfasst: Di 30.08.05 13:24
chrissivo hat folgendes geschrieben: | | Das ganze hat den Hintergrund, dass das erzeugte Programm mit Namen des Benutzers versehen sein soll, und dieser wird schlicht aus einer Liste ausgelesen und dann in eine Include-Datei gepackt. Anschließend soll der Compiler dann die neu erstelle Include-Datei in den Quelltext einbinden. |
Schonmal an eine STRINGRESSOURCE gedacht? 
_________________ Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
Zuletzt bearbeitet von tommie-lie am Di 30.08.05 13:30, insgesamt 1-mal bearbeitet
|
|
chrissivo 
      
Beiträge: 130
WIN XP, WIN 2000, WIN MCE, WIN 98
D5 Pers
|
Verfasst: Di 30.08.05 13:28
Hi,
a) sagt mir nichts,
b) im Delphi-Forum findet man dazu mit deinem Link nichts
c) die Delphi-Hilfe findet nichts
d) erklär mir doch bitte, was du meinst!
Danke
Chrissi
_________________ "... was ich noch zu sagen hätte dauert eine Zigarette, und ein letztes Glas im Steh'n..."
|
|
tommie-lie
      
Beiträge: 4373
Ubuntu 7.10 "Gutsy Gibbon"
|
Verfasst: Di 30.08.05 13:33
chrissivo hat folgendes geschrieben: | | b) im Delphi-Forum findet man dazu mit deinem Link nichts |
Ja, ist mir auch gerade aufgefallen, Link ist korrigiert
| chrissivo hat folgendes geschrieben: | | d) erklär mir doch bitte, was du meinst! |
Du liest im Programm die Strings aus einer Ressource aus. Eine solche Ressource kann man ohne einen Compiler austauschen, nur zum Erstellen der Ressourcen brauchst du den Resource Compiler (brcc32.exe). Das heißt du baust dir eine einzige Echse und setzt anschließend aus einem Pool an Ressourcen immer eine andere Ressource dran.
_________________ Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
|
|
chrissivo 
      
Beiträge: 130
WIN XP, WIN 2000, WIN MCE, WIN 98
D5 Pers
|
Verfasst: Di 30.08.05 13:48
tommie-lie hat folgendes geschrieben: | | ... und setzt anschließend aus einem Pool an Ressourcen immer eine andere Ressource dran. |
Danke für den Hinweis,die Ressourcen
a) möchte ich abernicht mitgeben
b) werden dieses teilweise dynamisch erzeugt und ich möchte den Code für die Erzeugung nicht mitliefern
Vielen Dank trotzdem
Chrissi
_________________ "... was ich noch zu sagen hätte dauert eine Zigarette, und ein letztes Glas im Steh'n..."
|
|
|