Sapere se il programma Gambas sta funzionando come progetto dall'IDE oppure come eseguibile .gambas
Per sapere se il programma Gambas è stato lanciato dall'IDE come progetto oppure se sta funzionando come eseguibile .gambas, bisogna considerare che nel nome del file eseguibile troviamo anche l'estensione .gambas .
Qualora sia stato lanciato un file eseguibile, il file cmdline, presente nella cartella del processo del programma medesimo, riporta una stringa contenente alla fine il nome del programma comprensivo dell'estensione .gambas più il carattere di file stringa '\0' (ossia &h00).
Dunque è possibile utilizzare questo semplice codice:
Public Sub Main() If File.Load("/proc" &/ CStr(Application.Id) &/ "cmdline") Like "*.gambas\x00" Then Print "Applicazione lanciata da un file eseguibile '.gambas'" Else Print "Applicazione lanciata come progetto dall'IDE" Endif End
oppure quest'altro molto simile al precedente:
Public Sub Main() Dim s As String s = File.Load("/proc" &/ CStr(Application.Id) &/ "comm") If Left(s, 4) = "gbx3" Then Print "Applicazione lanciata come progetto dall'IDE" Else Print "Applicazione lanciata da un file eseguibile '.gambas'" Endif End
Usando la Direttiva del preprocessore "#If... [#Else...] #Endif" con "Exec"
Questa soluzione [Nota 1] [Nota 2] si basa sulla circostanza che "Exec" è impostato su "True" per un eseguibile compilato, ma non durante il debug nell'IDE.
Se l'eseguibile Gambas o il collegamento ad esso è stato rinominato per non avere l'estensione ".gambas", funzionerà comunque come previsto.
Public IsIDE as boolean Public Sub Form_Open() #If Not (Exec) IsIDE = True #Endif End
Note
[1] Questa soluzione è stata proposta dal membro del forum
[2] Vedere questa pagina: https://gambaswiki.org/wiki/lang/.if?l=it