Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Topics - vuott

Pagine: 1 ... 373 374 [375] 376 377 378
5611
 :ciao:
...il codice del programma prevede ad un certo punto che possa essere generato un determinato oggetto (mettiamo il caso un Button, che sarà chiamato Button1) nel Form.
Per sapere successivamente se l'oggetto (Button1) è stato creato, ovvero - se dopo essere stato creato - esso è ancora presente nel form, ho escogitato questo codice:
Codice: gambas [Seleziona]

Public Sub alibaba()

  Dim obj As Object
    
  For Each obj In FMain.Children
    If obj.Name = "Button1" Then
      Print "Il Button1 è presente nel Form !"
    Endif
  Next

End


V'è qualche soluzione più breve ?  ???

5612
Vi sarà capitato di aver realizzato un programma Gambas che preveda  nella medesima sessione di sistema operativo l'inserimento della propria password di root per aprire un determinato file con accesso protetto.
Come è noto, per far immettere la propria password di root, con Exec o Shell si utilizza il comando gksu (o gksudo):
Codice: gambas [Seleziona]

Exec ["gksu", "file_ad_accesso_protetto"]

che fa aprire un'apposita finestra.
Diventa, però, alquanto noioso e sgradevole dover inserire ogni volta la password, se dobbiamo o vogliamo lanciare il nostro applicativo più volte - magari per provarlo e testarlo - nella medesima sessione di sistema.

Si può ovviare a questo fastidio, utilizzando il comando chmod una volta sola per impostare il setUID. Tale comando consentirà con effetto temporaneo, limitato alla sola attuale sessione di sistema, che tutti possano eseguire tranquillamente un programma o accedere ad un file che richiede i permessi di root.
In sostanza, la password verrà sì inserita, ma 1 volta soltanto !

Ho scritto il seguente codice nell'intento di ottenere come mero esempio libero accedere al file-device del Mouse:
Codice: gambas [Seleziona]

flPro As Process


Public Sub Form_Open()

 Dim num As Byte
 
' riconosce se il programma è stato già lanciato nell'attuale
' sessione di sistema operativo. *Se non* è stato lanciato almeno
' una volta, fa inserire la password di root per impostare il setUID
' e consentire l'apertura del file protetto:
   If Not Exist("/tmp/chmod.txt") Then
     Exec ["gksu", "chmod 4777", "/dev/input/mouse0"] Wait
     File.Save("/tmp/chmod.txt", "c'è")
   Endif

 ' va a gestire il file-device:
   flPro = Exec ["cat", "/dev/input/mouse0"] For Read As "flPro"

End


Public Sub flPro_Read()
  
  Dim b As Byte

' legge i dati provenienti dal file-device del mouse...
  Read #flPro, b

'...e li mostra in console:  
  Print b
  
End


...che ne pensate ?  :-[

5613
Progetti degli utenti / F.L.V. - Formato "a Lunghezza Variabile"
« il: 26 Marzo 2012, 02:44:56 »
Vi presento questo semplice applicativo: F.L.V. per conoscere la rappresentazione esadecimale di formato "a lunghezza variabile" di un numero decimale e viceversa.

Come è noto, tale formato di rappresentazione dei numeri usa solo sette bit per byte, mentre il bit più significativo è impostato ad un valore tale da poterlo riconoscere. Se la rappresentazione contiene più byte per esprimere un numero, il bit più significativo dei primi byte sarà posto sempre ad 1, mentre quello dell'ultimo byte sarà sempre posto a 0. Tale impostazione sta ad indicare che, quando il bit più significativo è posto ad 1, tale byte non è l'ultimo della rappresentazione esadecimale, ma che dopo di esso v'è un altro byte. Se il bit più significativo è invece posto a 0, allora vuol dire che il byte, al quale quel bit appartiene, è l'ultimo del formato.


Gli utenti iscritti a questo forum possono scaricare il sorgente di questa prima versione 0.0.1 qui in allegato. Provatelo !  :coder:

5614
Problema:
Ho riscontrato che, dopo aver aperto con OPEN "...." For Read Watch  un file-device (in:  /dev/...) per intercettarne il flusso dei dati che passano lì da un dispositivo esterno, se lo chiudo, e poi tento di riaprilo, non ci riesco: non si riapre più !  :hard:

Esempio:
Codice: gambas [Seleziona]

Private fd As File


Public Sub ToggleButton1_Click()

  If Last.value Then
' apro il file-device che mi interessa:
     fd = Open "/dev/file-device_da_aprire" For Read Watch
   Else
' chiudo il file-device:
     Close #fd
  Endif

End


Public Sub File_Read()
  
  Dim b As Byte
  
  Read #fd, b
' vedo in console i dati raccolti:
  Print b

End


...ma perché ?  ??? Non dovrebbe comportarsi come un "file" qualsiasi ?


(Aprendolo come processo con Process, riesco, se lo chiudo, a riaprirlo, ma... questa è un'altra storia...)

5615
Scusate, ma non ho ben compreso  :specchio: come posso creare un Menu (...del tipo classico in alto a sinistra: File - Open - Save - Etc), senza utilizzare l'Editor Menu (ctrl + e), bensì usando il codice.

E' possibile avere un breve e semplice esempio ?

5617
[Poiché penso che questo forum non debba contenere soltanto richieste di aiuto, ma che possa anche ospitare soluzioni non richieste,] vorrei portare a conoscenza e, quindi, a beneficio  :coder: di tutti gli utenti del forum, la soluzione data all'argomento in oggetto da un utente, Jussi Lahtinen, della mailing-list internazionale di Gambas:

Codice: gambas [Seleziona]
Public Sub Form_Open()
 
  Dim sOutput As String

  Exec ["pgrep", "-f", "-l", "NameOfYourProgram.gambas"] Wait To sOutput

  If Split(Trim$(sOutput), gb.NewLine).Count > 1 Then
    Quit
  Endif

End


Insomma, può impedire, per esempio, che cliccando per errore più volte partano contemporaneamente due o più processi del medesimo programma.


Se magari avete anche voi delle soluzioni da aggiungere....  :coder:

5618
...mi domandavo  ??? se, dopo aver effettuato dei disegni in una DrawingArea, sia possibile salvare il lavoro finale in un file immagine.

5620
Domande tecniche / Implementata istruzione GOSUB con rev. 4530
« il: 04 Marzo 2012, 03:24:19 »
bene bene.... adesso ti nominiamo ambasciatore della comunità italiana di gambas sula mailing list internazionale  ;D

Ambasciata della Comunità italiana di Gambas sulla mailing list internazionale

Comunicazione n. 1 dal vostro Ambasciatore      ;D

Questa Ambasciata rende noto che con la revisione #4530 di Gambas-3 è stato implementato il comando GOSUB del vecchio Basic.

Si riporta di seguito quanto scritto da Minisini al riguardo:

"
Hi,

I have just succeeded (I think) in implementing the old Basic GOSUB
instruction in Gambas in revision #4530.

I did that, because it is faster than using a plain little function, if
you just need to call a small piece code without needing a specific
context nor arguments.

The syntax is the same as the GOTO instruction (with the same
restrictions on the label):

    GOSUB <label>

To return from a GOSUB, you must use the RETURN instruction alone.

    <label>:
         ...
         RETURN

Consequently, you cannot use RETURN to return from a subroutine if there
is a pending GOSUB. A little annoyance.

If the function end (or a CATCH instruction) is encountered, the
function is ended like before, even if there are pending GOSUB. In other
words, returning from a GOSUB is always explicit.

Enjoy it!

--
Benoît Minisini
"


Ma pare che non sia andata troppo bene.

...Amen !

Nota aggiunta:
...ma non potreste tutti...  >:( iscrivervi alla mailing list internazionale, così sopprimiamo questa inutile Ambasciata ?  :P
Per le iscrizioni:
https://lists.sourceforge.net/lists/listinfo/gambas-user

5621
 :rolleyes:
mi sono impantanato nel problema di come eliminare tutti i file eventualmente presenti in una cartella.

Una cosa di questo genere:
Codice: [Seleziona]
Kill "/percorso_della_cartella/*.*"
non funziona.

Non vorrei utilizzare il solito "Deus ex machina", chiamato Shell, che scende dall'alto e risolve sempre ogni cosa...  ;D .
In questo caso potrei fare:
Codice: [Seleziona]
Shell "rm /percorso_della_cartella/*.*"
e la cosa ovviamente funziona.

Vorrei (è più ragionevole ! No ?) utilizzare solo le funzioni di Gambas.

Suggerimenti ?

5622
Progetti degli utenti / Criptatore di file
« il: 01 Marzo 2012, 23:42:21 »
Dopo aver avuto altre esperienze di programmazione (linguaggio macchina, C, HTML ed altro) mio fratello si è avvicinato da poco anche a GAMBAS. Ha realizzato in breve tempo questo Criptatore di file, e mi ha chiesto di presentarlo a questa Comunità, non essendovi iscritto.
In ultimo c'è il sorgente. Provatelo.  :coder:

5623
Vi presento il piccolino e semplice applicativo Pulsus: per calcolare i movimenti al minuto (BpM) di un brano musicale.

Gli utenti iscritti a questo forum possono scaricare il sorgente della sua versione 0.0.2 qui in allegato.

5624
Riporto per gli interessati a questo problema la seguente risposta #6 di fsurfing:

http://www.gambas-it.org/smf/index.php?topic=1553.msg21981#msg21981

5625
 :ciao:

Presupposti:
Ho un file immagine qualsiasi avente lo sfondo trasparente.
Intendo manipolare l'immagine contenuta nel file per inserirvi dei caratteri testuali, quindi salvarla nell'HD:
Codice: gambas [Seleziona]

Public Sub Button1_Click()

Dim h As New Image

  h = h.Load("mia_Immagine.gif")
  
  Paint.Begin(h)
  
  With Paint
    .Font.Size = 24
    .DrawText("Un testo qualsiasi", 10, 40, 0, 0, Align.center)
   End With

  h.Mirror(True, False)    ' ruoto l'immagine specularmente sull'asse verticale
 
  h.Save("/tmp/mia_nuova_immagine.jpg")
  
  Paint.End

End


....scopro che nella nuova immagine salvata ora lo sfondo è tutto nero !   ???

Lo stesso mi accade se non intendo fare alcunché all'immagine caricata, ma semplicemente procedo a ri-salvarla così com'è !

Cosa mi sfugge ?   :hard:

Pagine: 1 ... 373 374 [375] 376 377 378