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 ... 374 375 [376] 377 378 379
5626
Poniamo il caso di voler salvare due tipi di file, utilizzando anche una finestra Dialog.SaveFile.
Con Dialog.Filter abbiamo deciso che i due tipi di file possono essere o quello con estensione .xxx oppure quello con estensione .yyy .
Come si sa, è possibile scegliere una delle due estensioni operando nella finestra di dialogo nell'apposito Combo "Tipo di File", dove appaiono le due diverse estensioni impostate precedentemente con Dialog.Filter.

Sappiamo anche che Dialog.Filter si comporta più o meno come un array stringa[].
Diciamo che... non appena si è scelto il tipo di file, vorremmo che in console venga scritta l'estensione (il tipo di file) fra le due, che abbiamo appena scelto.

...se fosse un normale oggetto ComboBox, potremmo interrogare il suo indice: ComboBox1.Index
(cfr. fsurfing in: http://www.gambas-it.org/smf/index.php?topic=2075.msg22852#msg22852)

ma in questo caso, invece ?

5627
Da questa discussione:
http://www.gambas-it.org/smf/index.php?topic=2037.msg22546#msg22546

ho fatto questo esperimento, a fini didattici, di gestione dei dati "grezzi" intercettati dal file-device del mouse (inserite una TextArea nel form ed attivate il componente gb.desktop) che potrete vedere in: https://www.gambas-it.org/wiki/index.php/Intercettare_i_dati_del_mouse_dai_file-device_mouse,_mice,_event


Dopo aver lanciato il programma, si aprirà una finestra che vi chiederà di inserire la vostra parola chiave di root, per poter accedere al file-device protetto del mouse.
Inserita la parola chiave, e chiusa la finestra, muovete il mouse lentamente e noterete che.........

5628
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. 3 dal vostro Ambasciatore     :rotfl:

Questa Ambasciata rende noto che Minisini ha comunicato il rilascio ufficiale della versione 3.1 di Gambas:

"
Release of Gambas 3.1

This new release fixes more than 150 bugs and adds more than 120 new
features.

All Gambas 3.x versions will be backward-compatible, i.e. a program
written in Gambas 3.0 version will be able to run unchanged with any
Gambas 3.x version. But the contrary is false: a program written with a
specific Gambas 3.x version will not run with an older version.

Beware that this is taken into account by the IDE packager only since
Gambas 3.1!

To get the details, go the website and read the Release Notes!

Enjoy it!

P.S. I don't understand why Ubuntu only provides Gambas 2 and not Gambas
3 binary packages. Anyone has any idea about that?

--
Benoît Minisini
"

5629
Stavo sperimentando questo modo di azzerare all'interno di un file (composto ad esempio da questi 9 byte: 66 66 66 66 66 66 66 66 66) un certo numero di byte successivi (mettiamo... i primi 4):
Codice: gambas [Seleziona]

Public Sub Button1_Click()

  Dim aFl As File
  Dim buff As New Byte[4]
  Dim b As Byte
 
    aFl = Open "/tmp/mio_file" For Write
              
     Write #aFl, buff As Byte[]

    aFl.Close

End


...ma non comprendo perché, andando poi con un editor esadecimale a controllare il risultato all'interno del file, ottengo questo strano risultato:

41 02 04 00 00 00 00 66 66

Cioè sembra che ai primi tre byte venga attribuita una sorta di codice. Infatti ho notato che il 1° ed il 2° byte, pur variando il valore della dimensione nell'array Byte[n], non mutano; mentre il 3° byte varia con il variare nel valore posto come dimensione dell'array Byte[n].
Inoltre,  i quattro byte azzerati li ottengo solo dopo questa specie di codice formato dai primi 3 byte.

Perché accade questo ?  ???


P.S. Ho notato, invece, che quello strano risultato non accade se pongo l'array diversamente:
Codice: gambas [Seleziona]

buff[4] As Byte


Public Sub Button1_Click()

  Dim aFl As File
  Dim b As Byte
 
    aFl = Open "/tmp/mio_file" For Write
 
     Write #aFl, buff As Byte[]

    aFl.Close

End

In questo caso, invece, ottengo il vero risultato che volevo, ossia:
00 00 00 00 66 66 66 66 66

5630
 :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 ?  ???

5631
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 ?  :-[

5632
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:

5633
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...)

5634
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 ?

5636
[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:

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

5639
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

5640
 :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 ?

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