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
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:
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
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:
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[]":
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
@ 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:
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:
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 ?
pr = Exec ["/home/utente/Scadenzario", "dato1", "dato2", "datoN"] WAIT
???
:rolleyes:
Piano, altrimenti finisco per diventare incurabile:
la riga
Exec ["/home/utente/Scadenzario", "dato1", "dato2", "datoN"] WAIT
permette di avviare un eseguibile, mentre la riga
SHELL "$gambas3 /home/Gambas3_Progetti/progr2" WAIT
permette di avviare Gambas e contestualmente al suo interno anche progr2.
o no? :rolleyes:
:ciao:
la riga
Exec ["/home/utente/Scadenzario", "dato1", "dato2", "datoN"] WAIT
permette di avviare un eseguibile, mentre la riga
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.
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:
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:
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: