Differenze tra le versioni di "Sapere se il programma Gambas sta funzionando come progetto dall'IDE oppure come eseguibile .gambas"

Da Gambas-it.org - Wikipedia.
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 4: Riga 4:
  
 
Dunque è possibile utilizzare questo semplice codice:
 
Dunque è possibile utilizzare questo semplice codice:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   If File.Load("/proc" &/ CStr(Application.Id) &/ "cmdline") Like "*.gambas\x00" Then
 
   If File.Load("/proc" &/ CStr(Application.Id) &/ "cmdline") Like "*.gambas\x00" Then
Riga 12: Riga 12:
 
   Endif
 
   Endif
 
   
 
   
  '''End'''
+
  End
 
oppure quest'altro molto simile al precedente:
 
oppure quest'altro molto simile al precedente:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Dim s As String
 
   Dim s As String
Riga 20: Riga 20:
 
   s = File.Load("/proc" &/ CStr(Application.Id) &/ "comm")
 
   s = File.Load("/proc" &/ CStr(Application.Id) &/ "comm")
 
    
 
    
   If Left(s, 4) = "gbx3" Then
+
   If Left(s, 4) = "gbx3" Then   <FONT Color=gray>' ''oppure:'' <B>If s Like "*gbx3*" Then</b></font>
 
     Print "Applicazione lanciata come progetto dall'IDE"
 
     Print "Applicazione lanciata come progetto dall'IDE"
 
   Else
 
   Else
Riga 26: Riga 26:
 
   Endif
 
   Endif
 
    
 
    
  '''End'''
+
  End
  
 
==Usando la Direttiva del preprocessore "#If... [#Else...] #Endif" con "Exec"==
 
==Usando la Direttiva del preprocessore "#If... [#Else...] #Endif" con "Exec"==
Riga 42: Riga 42:
 
   
 
   
 
  End
 
  End
 +
  
  
 
=Note=
 
=Note=
[1] Questa soluzione è stata proposta dal membro del forum [https://forum.gambas.one/index.php GambasOne], ''BruceSteers''.
+
[1] Questa soluzione è stata proposta dal membro ''BruceSteers'' del forum [https://forum.gambas.one/index.php GambasOne].
  
 
[2] Vedere questa pagina: https://gambaswiki.org/wiki/lang/.if?l=it
 
[2] Vedere questa pagina: https://gambaswiki.org/wiki/lang/.if?l=it

Versione attuale delle 14:34, 24 set 2023

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   ' oppure: If s Like "*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.

Di seguito un esempio pratico:

Public IsIDE as Boolean

Public Sub Form_Open()

#If Not (Exec)
 IsIDE = True
#Endif

End


Note

[1] Questa soluzione è stata proposta dal membro BruceSteers del forum GambasOne.

[2] Vedere questa pagina: https://gambaswiki.org/wiki/lang/.if?l=it