Autore Topic: [RISOLTO]correlazione fra programmi  (Letto 1760 volte)

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
[RISOLTO]correlazione fra programmi
« il: 01 Agosto 2012, 13:23:30 »
Ormai ho superato lo stato di adeguamento del mio prgramma alla versione G3. C'è ancora qualcosa da mettere a punto, ma complessivamente va. Perciò sto pensando a:
1) fare in modo che il programma possa essere ripubblicato per permetterne l'uso ad eventuali interessati. E poichè il mio primo tentativo è andato male, vorrei rivedere i punti da correggere per tagliare un vero primo traguardo;
2) aggiungere la funzione  "Scadenzario-Agenda", un pò estranea alla tenuta delle scritture contabili, ma utile per potere rispettare le date di scadenza dei prossimi pagamenti o  di appuntamenti a vario titolo. Per questa seconda tranche di lavoro avrei pensato a creare un secondo programma, richiamabile sia in via autonoma che attrverso l'attuale programma di contabilità familiare. Non avendo mai vissuto in qualche modo una simile esperienza, vorrei capire, sempre col vostro irrinunciabile aiuto, come potere creare una correlazione fra i due programmi, il vecchio (programma chiamante) ed il nuovo (programma chiamato).
Se il programma chiamante è un eseguibile o avviato tramite IDE di Gambas, mentre il programma  chiamato è un eseguibile, penso che potrei benissimo ricorrere ad uno script come
Codice: [Seleziona]
Exec ["/home/utente/Scadenzario"]   WAIT
se invece il programma programma chiamato è avviabile solamente dall'Ide di Gambas, dovrei, a mio parere, avviare una nuova finestra di Gambas con il parametro di caricamento e avvio del programma chiamato. Ma, se mi sono espresso bene, e già è stato alquanto faticoso  :rolleyes:, non saprei come fare.
Se per voi è chiaro tutto quello che ho cercato di dire, spero di ricevere un ce...nno in merito a ciascuno dei due punti oggetto del  mia sudata :blabla:
 :ciao:
« Ultima modifica: 03 Agosto 2012, 00:07:54 da Picavbg »
:ciao:

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: correlazione fra programmi
« Risposta #1 il: 01 Agosto 2012, 14:46:57 »
Non avendo mai vissuto in qualche modo una simile esperienza, vorrei capire, sempre col vostro irrinunciabile aiuto, come potere creare una correlazione fra i due programmi, il vecchio (programma chiamante) ed il nuovo (programma chiamato).
Se il programma chiamante è un eseguibile o avviato tramite IDE di Gambas, mentre il programma  chiamato è un eseguibile, penso che potrei benissimo ricorrere ad uno script come
Codice: [Seleziona]
Exec ["/home/utente/Scadenzario"]   WAIT
se invece il programma programma chiamato è avviabile solamente dall'Ide di Gambas, dovrei, a mio parere, avviare una nuova finestra di Gambas con il parametro di caricamento e avvio del programma chiamato.

Sostanzialmente, caro Picavbg, le cose stanno appunto come hai scritto.

Voglio solo aggiungere che il programma chiamante può passare, all'atto della sua chiamata (avvio), al programma chiamato anche eventuali dati:
Codice: gambas [Seleziona]

 Private pr As Process


Public Sub Button1_Click()
   ......

' magari ne approfitti per gestire con un'apposita variabile il processo
' del programma "chiamato", così - volendo - potrai chiudere automaticamente
' il programma "chiamato" dal programma "chiamante" medesimo:
   pr = Exec ["/home/utente/Scadenzario", "dato1", "dato2", "datoN"]  WAIT

End


Public Sub Form_Close()

' Nel momento in cui il programma "chiamante" si chiude,
' viene chiuso automaticamente anche il programma "chiamato":
  pr.Kill

End





Il programma chiamato (avviato) dopo il suo avvio potrà "raccogliere" i dati, ad esso passati, con "Application.Args[]":
Codice: gambas [Seleziona]

 Public Sub Form_Open()
 
  Dim j As Byte
  
    For j = 1 To 2
' A fini esemplificativi mostriamo semplicemente i dati in una TextLabel.
' Da ricordare che i dati saranno raccolti come tipo "Stringa" !
      TextLabel1.Text = TextLabel1.Text & Application.Args[j] & "\n"
   Next

 End



Ancora circa la gestione mediante Process di due programmi correlati segnalerei  :-[ questi due miei brevi pro-memoria sulla nostra WIKI:
http://www.gambas-it.org/wiki/index.php?title=Usare_due_programmi_Gambas_contemporaneamente_mediante_Process,_lo_standard_Output_e_lo_standard_Input
http://www.gambas-it.org/wiki/index.php/Lettura_dati_da_un_Processo_e_scrittura_dati_in_un_Processo
« Ultima modifica: 26 Aprile 2013, 17:39:03 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: correlazione fra programmi
« Risposta #2 il: 01 Agosto 2012, 16:41:56 »
Pur ricordandoti che hai eluso la domanda al punto 1),  ;D, la cui soluzione mi permetterebbe di chiudere significativamente il mio attuale lavoro, mi lasci assai sorpreso quando mi dici che ho praticamente centrato il mio ragionamento circa l'avvio di un Progr.2 da Prog.1.  :2birre:
Resta ancora da capire informalmente come fare partire il programma chiamato, funzionante ancora attraverso l'ide di Gambas, dal programma chiamante, anch'esso, per es., attivo dentro l'Ide di Gambas.

Ragionamento extra Gambas: Supponiamo che voglia avviare il mio attuale Progr.1 contestualmente all'avvio di G3. Non l'ho mai fatto, ma se da Shell scrivo
Codice: [Seleziona]
$ gambas3
l'ide di gambas si avvia, pronto per decidere il passo successivo: avvio nuovo progetto, apertura di un progetto già esistente, ...
Ora, vorrei dire a Linux, nella sua Shell: Avvia gambas3.progr1, cosa scrivo nella shell dopo gambas3?  :mad:
Ciao
:ciao:

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: correlazione fra programmi
« Risposta #3 il: 01 Agosto 2012, 16:55:21 »
Resta ancora da capire informalmente come fare partire il programma chiamato, funzionante ancora attraverso l'ide di Gambas, dal programma chiamante, anch'esso, per es., attivo dentro l'Ide di Gambas.
........ma non potresti farlo partire come eseguibile ?  :'(
« Ultima modifica: 12 Settembre 2012, 11:25:27 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re: correlazione fra programmi
« Risposta #4 il: 01 Agosto 2012, 22:04:42 »
Ora, vorrei dire a Linux, nella sua Shell: Avvia gambas3.progr1, cosa scrivo nella shell dopo gambas3?  :mad:
Ciao
$gambas3 'percorso del progetto'
ad esempio:
$gambas3 /home/progetti/progr1

Nota che il percorso deve essere specificato per intero.
L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: correlazione fra programmi
« Risposta #5 il: 01 Agosto 2012, 22:49:39 »
@ sotema:
Perfetto, ho provato e funziona benissimo.  :2birre:

@ vuott:
Sicuramente è quello il traguardo da raggiungere. Entrambi i programmi dovranno lavorare in formato eseguibile, ma in corso d'opera, come ben sai, la realtà è un pò diversa; tirare fuori l'eseguibile ad ogni correzione, a volte anche banale, non  mi pare che sia una soluzione per operai specializzati di sana e robusta costituzione.  :D

Assodato ora come fare partire dalla Shell sia G3 che un programma sotto Test, basta, secondo me, scrivere lo script di avviio del programma chiamato dentro la procedura dedicata a tale funzione, nel programma chiamante:
Codice: [Seleziona]
SHELL "$gambas3 /home/Gambas3_Progetti/progr2" WAIT
e il gioco è fatto.

Vedo che sul 1° punto della mia domanda iniziale non arrivano indicazioni.  :'(  Aprirò una discussione specifica.
 :ciao:
:ciao:

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: correlazione fra programmi
« Risposta #6 il: 02 Agosto 2012, 00:45:57 »
@ vuott:
Sicuramente è quello il traguardo da raggiungere. Entrambi i programmi dovranno lavorare in formato eseguibile, ma in corso d'opera, come ben sai, la realtà è un pò diversa; tirare fuori l'eseguibile ad ogni correzione, a volte anche banale, non  mi pare che sia una soluzione per operai specializzati di sana e robusta costituzione.  :D
...mah....  :-\ non saprei.... nessuno t'arresterebbe....


@ sotema:
Perfetto, ho provato e funziona benissimo.  :2birre:

@ vuott:
Assodato ora come fare partire dalla Shell sia G3 che un programma sotto Test, basta, secondo me, scrivere lo script di avviio del programma chiamato dentro la procedura dedicata a tale funzione, nel programma chiamante:
Codice: [Seleziona]
SHELL "$gambas3 /home/Gambas3_Progetti/progr2" WAIT
e il gioco è fatto.
Un momento, vorrei capire meglio.
Mi era sembrato di capire che tu volevi lanciare da terminale sia l'IDE di Gambas che un progetto ancora in corso d'opera. Giusto, oppure mi sbaglio ?  ???
Se è così, quel /home/Gambas3_Progetti/progr2 cosa è ? La cartella contenente i vari file (nascosti) del progetto ?  :-\
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: correlazione fra programmi
« Risposta #7 il: 02 Agosto 2012, 20:04:47 »
Un momento, vorrei capire meglio.
Mi era sembrato di capire che tu volevi lanciare da terminale sia l'IDE di Gambas che un progetto ancora in corso d'opera. Giusto, oppure mi sbaglio ?  ???
Se è così, quel /home/Gambas3_Progetti/progr2 cosa è ? La cartella contenente i vari file (nascosti) del progetto ?  :-\
No, è semplicemente una riga del programma chiamante che ,a prescindere se esso giri sotto l'ide di Gambas o come eseguibile, avvia una nuova finestra di Gambas coi parametri relativi al programma chiamato, nell'esempio  "/home/Gambas3_Progetti/progr2". Non ho avuto ancora tempo, ma proverò per sapere se funziona veramente.  ;)
 :ciao:
:ciao:

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: correlazione fra programmi
« Risposta #8 il: 02 Agosto 2012, 20:09:35 »
No, è semplicemente una riga del programma chiamante che ,a prescindere se esso giri sotto l'ide di Gambas o come eseguibile, avvia una nuova finestra di Gambas coi parametri relativi al programma chiamato, nell'esempio  "/home/Gambas3_Progetti/progr2". Non ho avuto ancora tempo, ma proverò per sapere se funziona veramente.  ;)
 :ciao:

...ma non era sostanzialmente come ti avevo anch'io segnalato nel codice all'inizio ?

Codice: gambas [Seleziona]

    pr = Exec ["/home/utente/Scadenzario", "dato1", "dato2", "datoN"]  WAIT

 
     ???
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: correlazione fra programmi
« Risposta #9 il: 02 Agosto 2012, 20:17:07 »
No, è semplicemente una riga del programma chiamante che ,a prescindere se esso giri sotto l'ide di Gambas o come eseguibile, avvia una nuova finestra di Gambas coi parametri relativi al programma chiamato, nell'esempio  "/home/Gambas3_Progetti/progr2". Non ho avuto ancora tempo, ma proverò per sapere se funziona veramente.  ;)
 :ciao:

...ma non era sostanzialmente come ti avevo anch'io segnalato nel codice all'inizio ?

Codice: gambas [Seleziona]

    pr = Exec ["/home/utente/Scadenzario", "dato1", "dato2", "datoN"]  WAIT

 
     ???
:rolleyes:
Piano, altrimenti finisco per diventare incurabile:
la riga
Codice: [Seleziona]
Exec ["/home/utente/Scadenzario", "dato1", "dato2", "datoN"]  WAIT  
permette di avviare un eseguibile, mentre la riga
Codice: [Seleziona]
SHELL "$gambas3 /home/Gambas3_Progetti/progr2" WAIT
permette di avviare Gambas e contestualmente al suo interno anche progr2.
o no?  :rolleyes:
 :ciao:
:ciao:

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: correlazione fra programmi
« Risposta #10 il: 02 Agosto 2012, 20:33:12 »
la riga
Codice: [Seleziona]
Exec ["/home/utente/Scadenzario", "dato1", "dato2", "datoN"]  WAIT  
permette di avviare un eseguibile, mentre la riga
Codice: [Seleziona]
SHELL "$gambas3 /home/Gambas3_Progetti/progr2" WAIT
permette di avviare Gambas e contestualmente al suo interno anche progr2.
o no?  :rolleyes:
 :ciao:

Grazie  Picavbg per la precisazione: ora sei stato chiaro.

Ohhh, allora, questo volevo sapere.

Ho fatto la prova. Moooolto interessante !  :coder: Ringrazio l'amico sotema per il suggerimento.

Dunque, (lo descrivo per gli analfabeti in Gambas come me): la riga posta all'interno del codice permette di lanciare l'Ide di Gambas insieme con l'apertura del codice del progetto indicato nella riga. Ciò avviene sia se la si lancia da Ide che da un programma eseguibile. Il parametro del progetto è semplicemente il percorso della cartella del progetto da far aprire.
Codice: gambas [Seleziona]

Public Sub Button1_Click()

  Shell "gambas3 percorso_della_cartella_del_progetto" Wait

End


Faccio notare che a me l'istruzione "$gambas3" non ha funzionato, ma ha funzionato senza il segno $.


Comunque, molto bene !   :coder:
« Ultima modifica: 02 Agosto 2012, 20:51:48 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re: correlazione fra programmi
« Risposta #11 il: 02 Agosto 2012, 23:03:08 »
Faccio notare che a me l'istruzione "$gambas3" non ha funzionato, ma ha funzionato senza il segno $.
Comunque, molto bene !   :coder:

Il $ rappresenta il prompt di linux per un normale utente. Nell'esempio aveva lo scopo di far intendere che si trattava di un comando impartito da terminale.  ;D
L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: correlazione fra programmi
« Risposta #12 il: 02 Agosto 2012, 23:34:22 »
Il $ rappresenta il prompt di linux per un normale utente. Nell'esempio aveva lo scopo di far intendere che si trattava di un comando impartito da terminale.  ;D
Esattamente. Ho provato anch'io. Prima avevo provato solamente da terminale Shell ed  involontariamente nel post ho riportato il simbolo "$", identificativo del terminale utente comune. Chiedo scusa per la disattenzione.
Da gambas, con progr.1 attivo ho scritto per prova la riga:
Codice: gambas [Seleziona]
 Shell "gambas3 /home/piero/mnt/dativari/Gambas2-23/Gambas_Progetti/ContaDigit" Wait  
con la quale ho potuto aprire una nuova finestra Gambas, da cui è stato tentato l'avvio del prgramma "ContaDigit" e, siccome il programma chiamato era scritto ancora in versione G2, Gambas mi ha proposto la conversione in G3, regolarmente effettuata.   Beeeelliissimo!!  :2birre:
Grazie a tutti.  ;D
 :ciao:  :ciao:
:ciao:

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: correlazione fra programmi
« Risposta #13 il: 02 Agosto 2012, 23:37:46 »
Il $ rappresenta il prompt di linux per un normale utente. Nell'esempio aveva lo scopo di far intendere che si trattava di un comando impartito da terminale.  ;D
Bene, però nella mia prova che ho voluto fare da terminale sono solo riuscito ad aprire l'Ide, ma non anche il progetto !  :-\
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: correlazione fra programmi
« Risposta #14 il: 02 Agosto 2012, 23:40:43 »
Il $ rappresenta il prompt di linux per un normale utente. Nell'esempio aveva lo scopo di far intendere che si trattava di un comando impartito da terminale.  ;D
Bene, però nella mia prova che ho voluto fare da terminale sono solo riuscito ad aprire l'Ide, ma non anche il progetto !  :-\
Impossibile! Sei sicuro che il percorso indicato nella Shell, crt dopo crt, sia esatto? Prova lo stesso comando da terminale.  ;)
 :ciao:
:ciao: