Autore Topic: [RISOLTO] come distinguere l'esecuzione sotto ide da quella con eseguibile?  (Letto 834 volte)

Offline Cocirio

  • Grande Gambero
  • ***
  • Post: 126
  • Sba(di)gliando s'impapera :-).
    • Mostra profilo
Salve. Mi ricordo di aver letto sul forum qualcosa su questo argomento, ma non so come ritrovarlo. Qualcuno mi può aiutare?
Ne ho bisogno perché in un progetto ho inserito un pulsante che mi serve solo in fase di test e vorrei farlo sparire nel compilato, ma ritrovarlo quando torno in fase progettuale. Grazie.
« Ultima modifica: 02 Novembre 2015, 09:29:25 da Cocirio »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.705
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:come distinguere l'esecuzione sotto ide da quella con eseguibile?
« Risposta #1 il: 27 Ottobre 2015, 20:59:48 »
Domanda interessante.

Tento di risolvere il problema posto con il seguente ragionamento.

Fra le varie cose, che distinguono l'esecuzione di un progetto Gambas sotto l'IDE dall'esecuzione di un programma Gambas compilato, v'è il nome del programma. In particolare nell'eseguibile troviamo l'estensione .gambas

Qualora sia stato lanciato un programma compilato, 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 Chr(0)).

Pertanto proporrei un codice del seguente tenore:
Codice: [Seleziona]
Public Sub Form_Open()
 
' Se al termine della stringa, contenuta nel percorso indicato nel file "cmdline" della cartella del processo del programma lanciato,
' non sono "almeno" presenti i caratteri finali ".gambas\x00", allora nascondi il "Button1":
   If File.Load("/proc" &/ CStr(Application.Id) &/ "cmdline") Not Like "*.gambas\x00" Then
     Button1.Visible = False
   Endif
 
End
« Ultima modifica: 27 Ottobre 2015, 21:55:40 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 Cocirio

  • Grande Gambero
  • ***
  • Post: 126
  • Sba(di)gliando s'impapera :-).
    • Mostra profilo
Re:come distinguere l'esecuzione sotto ide da quella con eseguibile?
« Risposta #2 il: 28 Ottobre 2015, 20:16:11 »
Bene. Funziona, ma al contrario: senza il not. Io però mi sono espresso male. Volevo distinguere l'esecuzione sotto ide soprattutto da quella del programma installato sul computer di origine o su un altro computer. Mi pare che c'era una variabile di sistema che aveva a che fare con l'account utente. Ah, ecco: la proprietà User.Name. Però ce ne vorrebbe una che indicasse proprio la condizione di esecuzione sotto ide o al di fuori di essa. Possibile che Minisini non ci abbia pensato?
Comunque ti ringrazio di cuore, anche perché la tua risposta e molto più interessante della domanda.
Ciao
« Ultima modifica: 29 Ottobre 2015, 11:41:13 da Cocirio »

Offline Cocirio

  • Grande Gambero
  • ***
  • Post: 126
  • Sba(di)gliando s'impapera :-).
    • Mostra profilo
Re:come distinguere l'esecuzione sotto ide da quella con eseguibile?
« Risposta #3 il: 31 Ottobre 2015, 19:16:36 »
Eccomi qua. Per capire meglio quello che succede ho inserito una istruzione temporanea dopo il codice di VUOTT che è diventato così:
Codice: [Seleziona]
  If File.Load("/proc" &/ CStr(Application.Id) &/ "cmdline") Like "*.gambas\x00" Then
    Button4.Visible = False
  Endif
  comunicaz.Text = File.Load("/proc" &/ CStr(Application.Id) &/ "cmdline")
Con questo codice in fondo alla Form_Open ho preso la screenshot della finestra iniziale del progetto con il risultato della File.Load nelle tre condizioni: sotto ide, eseguibile e installato. Allego le tre screenschot.
Solo quando il programma gira sotto l'ide i 4 caratteri iniziali del contenuto del file sono diversi da "gbr3".
Posso aspettarmi che tutto non cambierà da un giorno all'altro?
Passo e chiudo.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.705
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:come distinguere l'esecuzione sotto ide da quella con eseguibile?
« Risposta #4 il: 31 Ottobre 2015, 19:24:56 »
Solo quando il programma gira sotto l'ide i 4 caratteri iniziali del contenuto del file sono diversi da "gbr3".

Be'... un elemento per distinguere l'apertura sotto IDE sia nel caso di programma installato che di mero eseguibile.
« Ultima modifica: 31 Ottobre 2015, 19:26:59 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 Cocirio

  • Grande Gambero
  • ***
  • Post: 126
  • Sba(di)gliando s'impapera :-).
    • Mostra profilo
Re:come distinguere l'esecuzione sotto ide da quella con eseguibile?
« Risposta #5 il: 31 Ottobre 2015, 20:34:45 »
Ok. Per ora lo considero risolto così:
Codice: [Seleziona]
  Me.Caption = "Scopone scientifico - Livello: " & Format(byliv, "0") & "  cmdline = " & File.Load("/proc" &/ CStr(Application.Id) &/ "cmdline")
  'Se nel percorso indicato nel file "cmdline" della cartella del processo del programma lanciato,
  'i 4 caratteri iniziali sono "gbr3", allora nascondi il "Button4": 
  If Left(File.Load("/proc" &/ CStr(Application.Id) &/ "cmdline"), 4) = "gbr3" Then
    Button4.Visible = False
  Endif
  comunicaz.Text = "Per iniziare una partita, usa l'apposito pulsante qui sotto a sinistra"
Il testo finale sulla testata del form rimane lì finché l'utente non inizia la partita. Ma tutto sommato mi sembra superfluo. Può servire solo in caso di sorprese.
Ciao