Lazarus 2.0.8 (2020.04.16.)
Letöltés

file Külső program inditása Lazarus 0.9.30 alatt.

  • miki144
  • miki144 profilkép
  • Új fórumozó
  • Új fórumozó
  • Hozzászólások: 10
  • Köszönetek: 0

miki144 válaszolt a témára: Válasz:Külső program inditása Lazarus 0.9.30 alatt.

Szia Gábor.

Köszönöm a segitségedet.

Megirtam a winexec-utasitásal is a programot.

A program leirása.

Adott egy form, és azon található egy Button1-gom.

A program kód.

...............................

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,Windows;

type

{ TForm1 }

TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
WinExec(PChar('start.bat'),SW_SHOWNORMAL);
end;

end.

....................................................

Itt is ugyan az volt a hiba mint az előző programom-nál.

Hibák:

1. a USES-sorban nem szerepelt a Windows-bejegyzés.

Ez kijavitva már egyből műnködött a megirt programom.

Köszönöm a segitséget mégegyszer.
A további kérdéseimet pedig a Tudástár-ban fogom feltettni.
Ügye ott a helye az ilyen kérdéseknek?

Hali.
#843

  • miki144
  • miki144 profilkép
  • Új fórumozó
  • Új fórumozó
  • Hozzászólások: 10
  • Köszönetek: 0

miki144 válaszolt a témára: Válasz:Külső program inditása Lazarus 0.9.30 alatt.

Üdv Gábor.


Ez a teljes üzenképes program kód.
A program leirása.

Adott egy form, és azon található egy Button1-gomb.


Teljes programkód.
.........................................

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,Process;

type

{ TForm1 }

TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);

var
P:TProcess;

begin
P:=TProcess.Create(nil);
P.CommandLine:='start.bat'; //futtatható állomány EXE,BAT STB
P.Execute;
P.Free;
end;

end.


...............................................................

Hibák.

1. a USES-részbe kézzel kellett beirnom a Process-bejegyzést.


Innentől kezdve már egyből münködött a progi.
Delphi-nél ilyet nem kelett csinálni.:huh:

Most megnézem a winexec utasitást.

Hali.
#842

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 432
  • Karma: 8
  • Köszönetek: 70

Gábor válaszolt a témára: Válasz:Külső program inditása Lazarus 0.9.30 alatt.

A súgó több formátumban is elérhető és telepíthető, majd a FreePascal/Lazarus beállításai között megadva a helyüket használható.

A példaprogramok üzemképesek és a wiki példák is működnek. Szerintem a gond a nálad van (pl. a beállítások vagy a telepítés körül.

Írd meg a saját programod fordításakor megjelenő hibaüzeneteket!

*** A Delphi-vel ellentétben a FreePascal/Lazarus több platformra is képes fordítani ezért nem használja/használhatja automatikusan a Windows unitot. E miatt azt a uses után meg kell adni a Windows specifikus funkciók eléréséhez.

A következők mind használhatók:
dos.Exec
sysutils.ExecuteProcess
windows.WinExec (a windows unit leírását megtalálod a delphi súgójában)
process.TProcess

Ez nálam működik:
uses Classes,SysUtils,Process;
var P:TProcess;
begin
  P:=TProcess.Create(nil);
  P.CommandLine:='notepad.exe'; // futtatható program a PATH-ban felsorolt útvonalak egyikén
  P.Execute;
  P.Free;   
end.
#841

  • miki144
  • miki144 profilkép
  • Új fórumozó
  • Új fórumozó
  • Hozzászólások: 10
  • Köszönetek: 0

miki144 válaszolt a témára: Válasz:Külső program inditása Lazarus 0.9.30 alatt.

Üdv Gábor.

Azért kérdeztem konkrétan hogy hogyan nézne ki a példaprogram,
mert amit belinkeltél, az a program meg se szólalt ,csak szórta a hibaüzeneteket ezer számra. Tehát sajnos számomra nem jó.
Sajnos nem tudok mit kezdeni vele.
Delphi-ben programozok

HELP ügyebár a lazarus-ban béta, vagy nincsen sajnos.
Az Example-pedid hadjuk.

Viszont üzemképes példaprogramot meg nem találtam.
Létezik ilyen adatbázis valamerre, és nem wiki-pédiás oldal?

Egyébbként a kijavitott programot, meg senki nem linkelte be sajnos. :(

De ne hogy félreértsük egymást!!! :)

Windows gui 32bit-es alkalmazásról van szó.:laugh:

Tehát egy form on van egy BUTTON1-gomb.


Amint a gomb lenyomása után inditaná el a start.bat-fájlt.

Hát ennyi lenne az egész.

A winexec-programsor után is hibát jelez a Lazarus.
De nem irja ki hogy mi a baja vele.
Olyan mintha nem ismerné ezt az utasitás. (WINEXEC)


Hali
#840

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 432
  • Karma: 8
  • Köszönetek: 70

Gábor válaszolt a témára: Válasz:Külső program inditása Lazarus 0.9.30 alatt.

A FreePascal/Lazarus is támogatja a WinExec és ShellExecute eljárásokat, de csak Win32 alatt. Használd inkább a TProcess-t! Előtte azonban érdemes elolvasni a wiki Executing External Programs című cikkét.

Itt a fórumban is volt már egy a tiédhez hasonló kérdés: Külsõ programok és a TProcess címmel.

Remélem segítettem...
#839

  • miki144
  • miki144 profilkép
  • Új fórumozó
  • Új fórumozó
  • Hozzászólások: 10
  • Köszönetek: 0

miki144 létrehozta a témát: Külső program inditása Lazarus 0.9.30 alatt.

Szasztok.

Az lenne a kérdésem hogy mi lenne az a programsor, amivel el tudnám inditani a start.bat-fájlt.

Neten keresgettem, de nem jártam sikerrel.

1. Exec('start.bat','-p -c'); Ez nem jött be.
2. ShellExecute(0, nil,PChar('start.bat'),nil,nil,SW_SHOWNORMAL); Ez sem jött be.

Delphiben programozgatok ott ez az egész csak egy sor.
.... WinExec(PChar(start.bat), SW_SHOWNORMAL);..

Lazarus alatt ez hogyan nézne ki??

Adott egy From amin van egy button.

procedure TForm1.Button1Click(Sender: TObject);

Begin


end;

end.




Előre is köszi a segitséget.
Hali.
#838