* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

Trascinare un file nel programma
DB concetti fondamentali e ZeosLib
Recuperare codice HTML da pagina web
Mandare mail con Lazarus
Stabilire il sistema operativo
Esempio lista in pascal
File INI
Codice di attivazione
Realizzare programmi multilingua
Lavorare con le directory
Utilizzare Unità esterne
TTreeView
TTreeview e Menu
Generare controlli RUN-TIME
LazReport, PDF ed immagini
Intercettare tasti premuti
Ampliare Lazarus
Lazarus e la crittografia
System Tray con Lazarus
UIB: Unified Interbase
Il file: questo sconosciuto
Conferma di chiusura di un applicazione
Liste e puntatori
Overload di funzioni
Funzioni a parametri variabili
Proprietà
Conversione numerica
TImage su Form e Panel
Indy gestiore server FTP lato Client
PopUpMenu sotto Pulsante (TSpeedButton)
Direttiva $macro
Toolbar
Evidenziare voci TreeView
Visualizzare un file Html esterno
StatusBar - aggirare l'errore variabile duplicata
Da DataSource a Excel
Le permutazioni
Brute force
Indy 10 - Invio email con allegati
La gestione degli errori in Lazarus
Pascal Script
Linux + Zeos + Firebird
Dataset virtuale
Overload di operatori
Lavorare con file in formato JSON con Lazarus
Zeos ... dietro le quinte (prima parte)
Disporre le finestre in un blocco unico (come Delphi)
Aspetto retrò (Cmd Line)
Lazarus 1.0
Come interfacciare periferica twain
Ubuntu - aggiornare free pascal e lazarus
fpcup: installazioni parallele di lazarus e fpc
Free Pascal e Lazarus sul Raspberry Pi
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Creare un server multithread
guida all'installazione di fpc trunk da subversion in linux gentoo
Indice
DB concetti fondamentali e connessioni standard
Advanced Record Syntax
DB concetti fondamentali e DBGrid
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
Advanced Record Syntax: un esempio pratico
Superclasse form base per programmi gestionali (e non)
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Installare lazarus su mac osx sierra
immagine docker per lavorare con lazarus e free pascal
TDD o Test-Driven Development
Benvenuto! Effettua l'accesso oppure registrati.
Novembre 26, 2024, 10:33:24 am

Inserisci il nome utente, la password e la durata della sessione.

29 Visitatori, 0 Utenti

Autore Topic: Assegnare un file direttamente all' avvio del programma tramite icona.  (Letto 7121 volte)

Dr.Ryms

  • Newbie
  • *
  • Post: 7
  • Karma: +0/-0

Salve,

Eccomi qui con 1 primo problemino che mi si presenta.

Sto realizzando un applicativo che " dovrebbe " aprire in automatico un file semplicemente usando il tasto destro del mouse ( sul file in questione) e usando apri con ( mio programmino ) in ambiente Windows.

Il problema che mi trovo ad avere e che non viene passato il nome del file ( cliccato) al mio programma che si avvia senza avere il nome del file in questione.


Potete darmi una indicazione della sintassi o settaggio che magari necessita Lazarus stesso ? ( ho appena iniziato ad usarlo, quindi troppe cose da vedere tutte assieme   :P

Senza questa cosa non posso andare avanti nel suo sviluppo   :'( :'( :'( :'(

Grazie

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3279
  • Karma: +12/-0
Re:Assegnare un file direttamente all' avvio del programma tramite icona.
« Risposta #1 il: Giugno 05, 2013, 05:50:58 pm »
Vado a memoria. Dovresti usare nella OnCreate della form principale

Per ottenere il numero di parametri
Application.ParamCount;

Per ottenere il parametro attraverso il suo indice
Application.Params[Indice_Del_Paramatero];

Nel tuo caso specifico ParamCount dovrebbe essere a 1 e il tuo Indice_Del_Parametro dovrebbe essere 0.

Prova un po.
Ieri è passato, domani è futuro, oggi è un dono...

El Salvador

  • Visitatore
Re:Assegnare un file direttamente all' avvio del programma tramite icona.
« Risposta #2 il: Giugno 05, 2013, 05:52:05 pm »
Non riesci a recuperare il percorso del file in questione tramite parametro? Praticamente, windows lancia il tuo programma con il primo parametro con il nome del file in questione (es. "C:\path\to\myapp.exe d:\path\to\file.ext")?

Dr.Ryms

  • Newbie
  • *
  • Post: 7
  • Karma: +0/-0
Re:Assegnare un file direttamente all' avvio del programma tramite icona.
« Risposta #3 il: Giugno 05, 2013, 08:09:49 pm »

xinyiman gentilissimo,

ma potresti essere piu specifico, non ho idea di cosa sia  la OnCreate :P,  come ho detto lo sto usando da 2 giorni e ancora in modo semplice ^^


Dr.Ryms

  • Newbie
  • *
  • Post: 7
  • Karma: +0/-0
Re:Assegnare un file direttamente all' avvio del programma tramite icona.
« Risposta #4 il: Giugno 05, 2013, 08:11:56 pm »

Si, El Salvador

in pratica quando parte il programma la variabile che dovrebbe avere il nome+percorso, e vuota.


El Salvador

  • Visitatore
Re:Assegnare un file direttamente all' avvio del programma tramite icona.
« Risposta #5 il: Giugno 05, 2013, 09:17:08 pm »
Devi seguire il post di xinyiman, specialmente questa parte:
Citazione
Per ottenere il parametro attraverso il suo indice
Application.Params[Indice_Del_Paramatero];

Nel tuo caso specifico ParamCount dovrebbe essere a 1 e il tuo Indice_Del_Parametro dovrebbe essere 0.
Semplicemente prima di richiamare il codice per caricare il tuo file, recuperi il percorso di questo tramite il codice Application.Params[1] e glielo dai in pasto al codice per caricare il file.

Esempio molto semplice e veloce
Codice: [Seleziona]
Procedure TForm1.FormCreate(Sender: TObject); //Evento OnCreate. Il codice all'interno di questa procedura verrà avviato alla creazione del form Form1
var
  FileName: string;
begin
  if Application.ParamCount >= 1 then //Controlliamo che ci sia almeno 1 parametro
  begin
    FileName := Application.Param[1]; //0 equivale al percorso del tuo proramma, 1 equivale al primo parametro
    ProceduraCaricaFile(FileName); //Ovvero il tuo codice per caricare il file indicato dal parametro
  end;
end;
« Ultima modifica: Giugno 05, 2013, 09:19:14 pm da El Salvador »

Dr.Ryms

  • Newbie
  • *
  • Post: 7
  • Karma: +0/-0
Re:Assegnare un file direttamente all' avvio del programma tramite icona.
« Risposta #6 il: Giugno 06, 2013, 09:58:21 am »
 :)

Allora, ci sto impazzendo da ore,  la procedura e chiara, ma non ho la piu pallida idea di come farla funzionare.

Ho provato a usare una unit o un form, ma non li uso e non so ( al momento ) cosa siano.

Ho il mio semplice programmino in cui non riesco a mettere questa procedura che non viene compilata  :P


Capisco che vi potra' sembrare un problema banale, ma mi sono perso un po di anni di evoluzione del compilatore.

Ho cercato sia qui che su internet e si trovano sempre le procedure tipo questa che hai messo, ma nessuno dice come inserirle  :'(


nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:Assegnare un file direttamente all' avvio del programma tramite icona.
« Risposta #7 il: Giugno 09, 2013, 03:08:45 pm »
ciao Dr.Ryms
ho la sensazione che tu abbia iniziato a scrivere direttamente il codice a mano.
Non che non si possa fare ma se sta ricominciando da capo è meglio che tu parta da menù.

Usa la voce
File -> Nuovo... -> Applicazione

vedrai che avrai 2 file:
- file di progetto (.lpr)
- unit1.pas con la dichiarazione della classe TForm1

Quando a design time hai davanti a te la Form1:
- con F11 richiama l'object Inspector
- seleziona la pagina "eventi"
- fai doppio click su OnCreate

a questo punto ti si aprirà l'editor del codice ed avrai davanti:
Procedure TForm1.FormCreate(Sender: TObject);

è quì che devi mettere il codice che ti è stato suggerito per il controllo dei parametri di lancio.



Imagination is more important than knowledge (A.Einstein)

Dr.Ryms

  • Newbie
  • *
  • Post: 7
  • Karma: +0/-0
Re:Assegnare un file direttamente all' avvio del programma tramite icona.
« Risposta #8 il: Giugno 11, 2013, 03:09:39 am »

 :)   Ti ringrazio delle specifiche.

Ho fatto come hai detto, e inserito il codice sopra riportato, pero ottengo sempre un errore nella compilazione ( ovviamente senza fare alcuna modifica, giusto per vedere se compilava:

---------------

unit Unit1;

{$mode objfpc}{$H+}

interface

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

type

  { TForm1 }

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

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);

var
  FileName: string;


begin
  if Application.ParamCount >= 1 then //Controlliamo che ci sia almeno 1 parametro
  begin
    FileName := Application.Param[1]; //0 equivale al percorso del tuo proramma, 1 equivale al primo parametro
    write(FileName);
  end;
end;


begin


end.         

---------------

mi da   [ unit1.pas(42,29) Error: identifier idents no member "Param" ]

Come mai ?

brunello

  • Jr. Member
  • **
  • Post: 83
  • Karma: +0/-0
Re:Assegnare un file direttamente all' avvio del programma tramite icona.
« Risposta #9 il: Giugno 11, 2013, 08:18:40 am »
non ho provato con lazarus ma con delphi per ritrovare i parametri dell'eseguibile  in passato ho utilizzato

function ParamStr(Index: Integer): string;

Description

ParamStr returns the parameter from the command line that corresponds to Index, or an empty string if Index is greater than ParamCount. For example, an Index value of 2 returns the second command-line parameter.

On Windows, ParamStr(0) returns the path and file name of the executing program (for example, C:\TEST\MYPROG.EXE).

ciao Brunello

El Salvador

  • Visitatore
Re:Assegnare un file direttamente all' avvio del programma tramite icona.
« Risposta #10 il: Giugno 11, 2013, 12:06:42 pm »
Citazione
ottengo sempre un errore nella compilazione
Ho sbagliato a scrivere (ho scritto Param al posto di Params), sostituisci la riga di codice che ti da errore con questa:
Citazione
FileName := Application.Params[1]; //0 equivale al percorso del tuo proramma, 1 equivale al primo parametro

Dr.Ryms

  • Newbie
  • *
  • Post: 7
  • Karma: +0/-0
Re:Assegnare un file direttamente all' avvio del programma tramite icona.
« Risposta #11 il: Giugno 15, 2013, 11:52:03 am »

 :) ;) :) ;) :) ;)

Ottimo, funge benissimo.

Grazie a tutti, gentilissimi  ^^

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3279
  • Karma: +12/-0
Re:Assegnare un file direttamente all' avvio del programma tramite icona.
« Risposta #12 il: Giugno 15, 2013, 05:33:37 pm »
Figurati  ;)
Ieri è passato, domani è futuro, oggi è un dono...

 

Recenti

How To

Utenti
  • Utenti in totale: 803
  • Latest: maXim.FI
Stats
  • Post in totale: 19199
  • Topic in totale: 2289
  • Online Today: 63
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 29
Total: 29

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.