Hi Pan,
okok.. als Rückgabewert einer Funktion, da gibt es Probleme, aber du kannst ein Array immerhin als Parameter übergeben.
Man muss halt manche Dinge anders angehen als in VB.
/Winni
Dim aKey[32] As Byte
Private Sub CommandButton1_OnEvent()
Dim i As Integer
If cv_BytesFromHex(tbKey.Value, aKey) Then
For i = 0 To 32
print akey[i]
Next i
End If
End Sub
Public Function cv_BytesFromHex(ByVal sInputHex As String, ByRef aBytes[] As Byte) As Boolean
' Returns array of bytes from hex string in big-endian order
' E.g. sHex="FEDC80" will return array {&HFE, &HDC, &H80}
Dim i As Integer
Dim M As Integer
Dim s as String
If Len(sInputHex) Mod 2 <> 0 Then
sInputHex = "0" & sInputHex
End If
M = Len(sInputHex) \ 2
If M <= 0 Then
' Version 2: Returns empty array
Return False
End If
For i = 0 To M - 1
s = Mid$(sInputHex, i * 2 + 1, 2)
aBytes[i] = Val("&H" & Mid$(sInputHex, i * 2 + 1, 2))
' Print aBytes[i]
Next i
Return True
End Function
pappawinni wrote:ändert sich nicht nur das erste Feldelement, sondern ich erhalte dann für das 3te Feldelement, das ursprünglich 500 war, nur noch 244
( 244+256 = 500)
Aber ok, das geht am Thema vorbei, denn das kannst du als dynamisches Array ohnehin nicht gebrauchen.
PMan wrote:Routine die Reihenfolge der Dimensionen vertauscht ist. .
PMan wrote:Hallo Bernd,
vielen Dank für Deine Bemühungen. Ich habe ein kleines Test-Projekt gebaut, da ich in meinen anderen Projekten noch Fehler bekommen habe. Dabei konnte ich folgendes feststellen:
- Array sind jetzt von der Dimension richtig, wenn sie in eine Routine und im selben Modul übergeben werden
- Array lassen sich nicht über eine Modulgrenze hinweg übergeben
- einem Array lässt sich kein Typ in der Routine zuweisen, z.B. sArray[] as String
- Return Array aus Funktionen haben nach wie vor nur den ersten Wert, alle anderen sind 0
Siehe Dir bitte das kleine Testprogramm an.
PMan wrote:Hallo Bernd,
ich habe leider noch eine schlechte Nachricht bezüglich Array Übergaben an Routinen. Ich habe in einem anderen Projekt die Array-Übergaben innerhalb eines Moduls. Dort hat die erste Übergaben reibungslos funktioniert. Bei der zweite Übergebe im selben Modul erkennt der Compiler die übergebene Variable leider nicht mehr als Array.
Daraufhin habe ich das Testprogramm so erweitert, dass jetzt in Formular eine Arrayübergabe stattfindet und im Formular und im Modul je eine zweite Übergabe hinzugefügt.