Copiare in una cartella un programma.gambas contenuto in un altro programma.gambas

Da Gambas-it.org - Wikipedia.

E' possibile inserire in un programma.gambas un altro programma.gambas, e successivamente far copiare quest'ultimo in una qualsiasi directory perché sia avviabile.

Il programma.gambas dovrà essere posto nella cartella "Progetto" presente nella TreeView dell'Ide dove sono elencate Cartelle e sorgenti del programma.

Il problema che si pone è quello che, una volta copiato, il programma.gambas perde il permesso per essere eseguito come programma. Per far riacquistare tale permesso al programma.gambas copiato, bisognerà lanciare la funzione Chmod accompagnata dalla modalità rwxr-x---, capace di riattribuire quel permesso al programma.

Esempio:

Public Sub Button1_Click()

  Copy Application.Path &/ "nome_programma.gambas" To "/tmp/nome_programma.gambas"

  Chmod "/tmp/nome_programma.gambas" To "rwxr-x---"

End


Copiare, rendere eseguibile ed eseguire un programma

Vediamo di seguito una dimostrazione più completa per copiare - per esempio - un programma.gambas secondario da un altro programma.gambas principale, renderlo poi eseguibile, cambiandogli i permessi, ed infine eseguire il programma.:

 Public Sub Button1_Click()

  If Exist("/tmp/programma.gambas") then
    Kill "/tmp/programma.gambas"
  Else
' Si provvede a copiare il file del programma dalla cartella del progetto in un'altra cartella qualsiasi:
    Copy Application.Path &/ "programma.gambas" To "/tmp/programma.gambas"
  Endif
 
' Si procede a modificare i permessi del programma, affinché possa essere eseguito:
  Chmod "/tmp/programma.gambas" To "r-xr-xr-x"
 
  Repeat
' Fintanto che non sono cambiati i permessi del programma, si esegue il ciclo:
    Wait 0.01
  Until Stat("/tmp/programma.gambas").Auth = "r-xr-xr-x"

' Viene infine lanciato il programma:
  Shell "/tmp/programma.gambas"

End