Italian problemi con array

3394509365

Active Member
Licensed User
Longtime User
Buonasera a tutti, io uso questo codice, premo il btn per inviare un messaggio midi e tutto funziona bene:
B4X:
Sub ButtonSendMessage_Click


' costruisco il messaggio funzionante con bottone
ButtonSendMessage.Tag = Array As Byte(0x0B,CanB,0x00,VAL2,0x0B,CanB,VAL3,VAL4,0x0C,CanC,VAL5,0x00)' in hex Roland xp 50

Dim B As Button = Sender

Dim Msg() As Byte = B.Tag

Dim i As Int

For i = 0 To 3
    Msg1(i) = Msg(i)
    Msg2(i) = Msg(i+4)
    Msg3(i) = Msg(i+8)
Next

Main.MidiUSBMan.Connection.BulkTransfer(Main.MidiUSBMan.OutEndPoint,Msg1,Msg1.Length,0)' fuonzionano
Main.MidiUSBMan.Connection.BulkTransfer(Main.MidiUSBMan.OutEndPoint,Msg2,Msg2.Length,0)
Main.MidiUSBMan.Connection.BulkTransfer(Main.MidiUSBMan.OutEndPoint,Msg3,Msg3.Length,0)

però a me serve non premere il pulante perchè lo voglio fare trasformando il pulsante in una routine.

Definisco come array ButtonSendMessage.Tag ma non funziona come posso fare ?
 

LucaMs

Expert
Licensed User
Longtime User
Il tuo post è arrivato da pochissimo, malgrado adesso siano le 00:40 e il tuo segna le 10:07 di ieri!

Intanto, c'è un errore "logico" nella tua routine, anche se non c'entra con la domanda, te lo spiego per la prossima volta :)

Nelle routine come la tua ButtonSendMessage_Click si utilizza il Sender per rilevare quale Button sia stato premuto.
Per cui dovresti scrivere, in quella routine:
Private btnPremuto as Button = Sender
e poi eventualmente usare il tag di btnPremuto.

Poi, non ho capito benissimo cosa devi fare (perché ho il cervello che fonde altrove, hehehe) ma tu hai già usato un array:

Dim Msg() As Byte = Array As Byte(0x0B,CanB,0x00,VAL2,0x0B,CanB,VAL3,VAL4,0x0C,CanC,VAL5,0x00)' in hex Roland xp 50

Puoi creare una routine con gli argomenti che vuoi, array compresi.
Public Sub MiaFunzione(X as Int, Msg() as Byte) As Long
 

3394509365

Active Member
Licensed User
Longtime User
innanzi tutto grazie, come l' ho postato io funziona se premo il pulsante, perchè viene intercettato il sender, la mia necessità è quella di avere lo stesso risultato senza dover premere il pulsante.

vorrei che Msg sia un array senza pulsante ma non ci riesco, il pulsante deve diventare una routine che chiamo in un' altra parte di programma.

spero di essermi spiegato,

però voglio provare quello che hai detto tu

B4X:
Public Sub MiaFunzione(X as Int, Msg() as Byte) As Long
Dim Msg() As Byte = Array As Byte(0x0B,CanB,0x00,VAL2,0x0B,CanB,VAL3,VAL4,0x0C,CanC,VAL5,0x00)' in hex Roland xp 50

Dim i AsIntFor i = 0To3
Msg1(i) = Msg(i)
Msg2(i) = Msg(i+4)
Msg3(i) = Msg(i+8)
Next

poi ti faccio sapere
 

sirjo66

Well-Known Member
Licensed User
Longtime User
Semmai
B4X:
Public Sub MiaFunzione() As Long
Dim Msg() AsByte = Array As Byte(0x0B,CanB,0x00,VAL2,0x0B,CanB,VAL3,VAL4,0x0C,CanC,VAL5,0x00)' in hex Roland xp 50
Dim i As Int For i = 0 To 3
    Msg1(i) = Msg(i)
    Msg2(i) = Msg(i+4)
    Msg3(i) = Msg(i+8)
Next

Visto che il parametro X e il parametro Msg che vengono passati alla funzione non servono, direi che si possono togliere.
 
Top