Hallo!
Ich habe den folgenden Quelltext geschrieben:
Delphi-Quellcode:
program startprj;
uses
SysUtils,
{$IFDEF WINDOWS}
Windows,
Process;
{$ELSE}
Dos;
{$ENDIF}
var
FileName: String;
{$IFDEF WINDOWS}
AProcess: TProcess;
{$ENDIF}
begin
if ParamCount > 0 then
begin
FileName := ChangeFileExt(ParamStr(1),'.exe');
if FileExists(FileName) then
begin
{$IFDEF WINDOWS}
AProcess := TProcess.Create(nil); //Komponente aus Lazarus
AProcess.CommandLine := FileName;
AProcess.Options := poNewConsole;
AProcess.Priority := ppNormal;
AProcess.Execute;
AProcess.Free;
{$ELSE}
Exec('\cmd.exe','/C ' + FileName); //Ich verwende diese Anweisung unter Windows XP
{$ENDIF}
end;
end;
end.
Der soll von einem Quellcodeeditor aus als externes tool eingerichtet meine erstellte Quelltextdatei nehmen, die Erweiterung .exe an Stelle von .pas oder .dpr o a. setzen.
Wenn nun eine Datei <mein_Quelltext.exe> im gleichen Verzeichnis existiert, soll diese ausgeführt werden. Das ist dann der Fall,wenn ich vorher den ebenfalls als externes tool eingerichteten Compiler erfolgreich aufgerufen habe.
Leider funktioniert das nicht und ich habe keine Ahnung, wo ich nach dem Fehler suchen soll.
StartPrj wird zwar korrekt aufgerufen, aber meine Anwendung wird nicht gestartet.
Kann es sein, das ich die Windows Version des FPC Compilers nehmen muss, dann natürlich die Version mit TProcess, um zum Ziel zu kommen? Oder halt CreateProcess mit Delphi? Habe auch die
Unit ConsoleOut aus der
DP.
Habe zum Experimentieren den fpc verwendet, weil mir die TProcess-Komponente von Lazarus gefällt.
Leider krige ich einen Linkerfehler. Habe vorher schon die Dos Version von fpc verwendet. Startprj wurde von letzterem korrekt übersetzt, lässt sich auch starten, aber meine Anwendung startet nicht.
Muss ich also doch CreateProcess verwenden?
Oder liegt mein Fehler woanders?
Werde morgen weiter experimentieren.
Meine Frage lautet:
- Funktioniert das mit CreateProcess? Habe auch die
Unit ConsoleOut aus der
DP. Wollte es aber erst mal mit Exec probieren. Leider funktioniert der Linker meiner Freepascal Version nicht richtig. Linkfehler. Werde wohl doch dcc32 oder Turbo-Pascal als Compiler für den Sourceeditor verwenden.
Ich nutze außerdem Delphi, habe aber im Internet einen guten Quelltexteditor gefunden und wollte den für die Programmentwicklung einrichten. Daher die Problemstellung, das der Sourceeditor keine Einstellung vorgesehen hat, um die Projektdatei als <projekt>.exe zu starten.