Einzelnen Beitrag anzeigen

I.A

Registriert seit: 14. Jan 2007
83 Beiträge
 
#1

Projekt von Sourceeditor aus starten

  Alt 13. Jun 2008, 00:14
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.
  Mit Zitat antworten Zitat