Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Projekt von Sourceeditor aus starten (https://www.delphipraxis.net/115483-projekt-von-sourceeditor-aus-starten.html)

I.A 12. Jun 2008 23:14


Projekt von Sourceeditor aus starten
 
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.

delphifan2004 13. Jun 2008 10:23

Re: Projekt von Sourceeditor aus starten
 
Hallo I.A,

das sollte mit der ConsoleOut-Unit klappen. Mit der Lazarus-Kompo TProcess hab ich keine Erfahrung, aber mit der neuen Lazarusversion mit FPC 2.1.0 sollte der Linkfehler der Vergangenheit angehören.

Sonst halt den Delphi Compiler einbinden und ConsoleOut verwenden.

I.A 13. Jun 2008 16:29

Re: Projekt von Sourceeditor aus starten
 
Ok, jetzt klappt es. Sowohl mit TProcess als auch mit ConsoleOut. Hatte alte fpc Version. Mit dem neuen Compiler funzt es. Danke @Delphifan2004.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz