Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: sekoto - Dicembre 18, 2017, 06:55:27 pm

Titolo: avviare un programma e caricare un file in automatico
Inserito da: sekoto - Dicembre 18, 2017, 06:55:27 pm
Salve a tutti, sto facendo un applicazione col la quale viene creato un file, il quale sostanzialmente è un file di testo; all'interno della mia applicazione dovrò mettere un bottone con il quale devo avviare un'altra applicazione e contemporaneamente dovrà caricare il file creato dalla mia applicazione. Per fare un esempio pratico facciamo finta che la mia app crea un file chiamato pippo.txt; con il bottone citato prima facciamo finta che devo avviare il programma "mousepad" (editor di testo di xubuntu) il quale avrà già caricato al suo interno il file pippo.txt. Spero di essermi spiegato bene. Grazie mille
Titolo: Re:avviare un programma e caricare un file in automatico
Inserito da: xinyiman - Dicembre 18, 2017, 07:05:55 pm
Ti consiglio di guardare questo: http://wiki.freepascal.org/Executing_External_Programs/it
Titolo: Re:avviare un programma e caricare un file in automatico
Inserito da: sekoto - Dicembre 18, 2017, 07:26:42 pm
Grazie gli do subito un occhiata
Titolo: Re:avviare un programma e caricare un file in automatico
Inserito da: bonmario - Dicembre 18, 2017, 07:45:07 pm
Se stai usando una versione recente di Lazarus, e l'estensione del file che devi aprire è già stata associata ad un programma, puoi anche fare così:
- aggiungi alla sezione uses "LCLIntf"
- apri il file con "OpenDocument(NomeDelFileDaAprire)"

Questa soluzione è multipiattaforma.

Ciao, Mario
Titolo: Re:avviare un programma e caricare un file in automatico
Inserito da: sekoto - Dicembre 18, 2017, 08:05:08 pm
grazie mille ma al momento sono tornato a lazarus 1.0
Titolo: Re:avviare un programma e caricare un file in automatico
Inserito da: Avogadro - Dicembre 19, 2017, 04:53:28 am
Io faccio cosi ' , uso ShellApi e ShellExecute

unit unit1;
...
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
  ActnList, StdActns, StdCtrls, Menus, DBGrids, DbCtrls, ExtDlgs, ZConnection,
  ZDataset, db, unit2, unit3, math, strutils, uDbFreeReporter, ShellApi;   
....

procedure TForm1.ToolButton10Click(Sender: TObject);
var
  TemplatePath, rprt: string;
  Reporter: TDbFreeReporter;

begin
   TemplatePath := ExtractFilePath(Application.ExeName)+'\test.rtf';
   rprt:=ExtractFilePath(Application.ExeName)+'\out.rtf'     ;

    Reporter := TDbFreeReporter.Create;
  try
    Reporter.AddDataSet(ztable1b);
    Reporter.AddDataSet(ztable2);
    Reporter.AddDataSet(ztable3);
    //Reporter.AddDataSet(sqlquery2);
    //Reporter.AddDataSet(sqlquery3);
    Reporter.CreateReport(TemplatePath, rprt);
    ShellExecute(Application.MainForm.Handle, nil, pChar(rprt),
    nil, nil, 1);
  finally
      Reporter.Free;
  end;

test.rtf e out.rtf sono due file  rtf

shellexecute lancia il programa che nel sistema operativo è settato per gestire i file rtf

Magari ci sarà un modo migliore ma questo funziona .

Saludos.