Fehler beim Starten von externen Programmen via TProcess

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Volvox
Beiträge: 7
Registriert: Di 12. Sep 2006, 22:05

Fehler beim Starten von externen Programmen via TProcess

Beitrag von Volvox »

Hi!

Ich möchte gerne in meinem Programm einen Button haben, mit dem man
ein externes Programm starten kann. Zum Beispiel "F:\\Renderer.exe".
Ganz einfach, dachte ich mir, versuche ich es erstmal, wie in dieser Erklärung beschrieben:
http://wiki.lazarus.freepascal.org/Executing_External_Programs/de

Jetzt befindet sich also folgendes in meinem Quelltext:

Code: Alles auswählen

VAR MyProcess : TProcess;
PROCEDURE TForm1.Button1Click(Sender: TObject);
BEGIN
          MyProcess.Create(nil);
          MyProcess.CommandLine := 'F:\\Renderer.exe';
          MyProcess.Execute;
END;
Wenn ich allerdings per F9-Taste kompiliere und starte, kommt beim Klicken des Buttons diese Fehlermeldung:
"Project raised exception class 'External: SIGSEGV'."
Anschließend ist die Zeile
"MyProcess.Create(nil);"
im Quelltext grau hinterlegt.

Ich benutze Windows 2000 mit Service Pack 4 und Lazarus 0.9.22 Beta.
Ich bin mit einem Administrator-Konto eingeloggt.
Ich liefere gerne noch mehr Informationen!

Könnt ihr mir einen Tipp geben?

Im Internet habe ich zu der Fehlermeldung nichts finden können
und ich habe doch eigentlich alles aus der Erklärung abgeschrieben.

Ich bin für alle Antworten dankbar!

Gruß

Volvox

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Beitrag von creed steiger »

so ist es glaubich richtiger

MyProcess:= TProcess.Create(nil);

statt einfach nur

MyProcess.Create(nil);

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

das

VAR MyProcess : TProcess;

sollte auch besser in Button1Click und zum Schluss noch MyProcess.free sonst hast du n schönes MemLeak gebastelt.

Am besten du liest dir mal ein Object Pascal Tuturial durch.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Volvox
Beiträge: 7
Registriert: Di 12. Sep 2006, 22:05

Beitrag von Volvox »

Hey, super, vielen Dank! :D

Nun startet F:\Renderer.exe.
Da hätte ich mal lieber meine Augen auf machen sollen!

So sieht es nun aus:

Code: Alles auswählen

PROCEDURE TForm1.Button1Click(Sender: TObject);
VAR MyProcess : TProcess;
BEGIN
     MyProcess := TProcess.Create(nil);
     MyProcess.CommandLine :=  '%SystemRoot%\System32\calc.exe';
//   MyProcess.CommandLine := 'F:\Renderer.exe';
     MyProcess.Execute;
     MyProcess.Free;
END;
Wie kann ich nun den Windowstaschenrechner mit Systemvariable starten, ohne den konkreten Pfad anzugeben?

Er befindet sich hier:
%SystemRoot%\System32\calc.exe
Aber wie im Quelltext oben kommt eine ähnliche Fehlermeldung :

Error
Project raised exception class 'EProcess'.

Kann man diese windowsspezielle Variable anders auslesen?

Volvox

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Gibt irgendwie ne ExpandPath oder ExpandFullPath routine, die das macht glaub in FileUtils bin mir aber nicht mehr sicher.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

pass mit den \.
'F:\\Renderer.exe'; hier sit einer zuviel.

@Christian anscheint nicht. ich habe in der LCL-Hilfe von Monta nach geschaut. bzw. suchen lassen und es wurde keine gefunden.

Damit habe ich bis her aber auch unter Delphi meine Problem gehapt.


@Volvox
Ich hoffe du kennst dich mit Object Pascal aus. In der JVCL Komponenten Samlung gab es eine Komponente, dort könntest du nach schauen. Wie sie aus der Regedit die Einträge lesen.
Sofern das Programm nur auf Windows laufen soll
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

ExpandEnvironmentStrings sollte dein %SystemRoot% auflösen
Pluto hast du langeweile ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

warum ?
ich habe für heute mein Tages Ziel erreicht *G*
MFG
Michael Springwald

Antworten