Autor Beitrag
chrissivo
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 130

WIN XP, WIN 2000, WIN MCE, WIN 98
D5 Pers
BeitragVerfasst: 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 user profile iconGausi: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 130

WIN XP, WIN 2000, WIN MCE, WIN 98
D5 Pers
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 130

WIN XP, WIN 2000, WIN MCE, WIN 98
D5 Pers
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 239

Win98SE, Win2000SP4
D7
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 130

WIN XP, WIN 2000, WIN MCE, WIN 98
D5 Pers
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 130

WIN XP, WIN 2000, WIN MCE, WIN 98
D5 Pers
BeitragVerfasst: 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 :D

Danke

_________________
"... was ich noch zu sagen hätte dauert eine Zigarette, und ein letztes Glas im Steh'n..."
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Di 30.08.05 11:39 
user profile iconchrissivo 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 130

WIN XP, WIN 2000, WIN MCE, WIN 98
D5 Pers
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Di 30.08.05 13:24 
user profile iconchrissivo 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 Suche in: Delphi-Forum, Delphi-Library 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 130

WIN XP, WIN 2000, WIN MCE, WIN 98
D5 Pers
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Di 30.08.05 13:33 
user profile iconchrissivo 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 130

WIN XP, WIN 2000, WIN MCE, WIN 98
D5 Pers
BeitragVerfasst: Di 30.08.05 13:48 
user profile icontommie-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 :wink:

Vielen Dank trotzdem

Chrissi

_________________
"... was ich noch zu sagen hätte dauert eine Zigarette, und ein letztes Glas im Steh'n..."