Probleme mit Strings und Base64

Hoi zusammen,

ich habe einen Base64 String: DRurBGEf2ntP7Z0WDkMP8e1ZeK7PswJGeBHCg4zEYXZSE3Qqxsbi5EF1KosgkKQ9SL8qOOUAI+eDPFypAtQS9A==

Ich bekomme den leider nicht in ein byte array umgewandelt, eigentlich sollte der so aussehen:

[0] = 13 [1] = 27 [2] = 171 [3] = 4 [4] = 97 [5] = 31 [6] = 218 [7] = 123 [8] = 79 [9] = 237 [10] = 157 [11] = 22 [12] = 14 [13] = 67 [14] = 15 [15] = 241 [16] = 237 [17] = 89 [18] = 120 [19] = 174 [20] = 207 [21] = 179 [22] = 2 [23] = 70 [24] = 120 [25] = 17 [26] = 194 [27] = 131 [28] = 140 [29] = 196 [30] = 97 [31] = 118 [32] = 82 [33] = 19 [34] = 116 [35] = 42 [36] = 198 [37] = 198 [38] = 226 [39] = 228 [40] = 65 [41] = 117 [42] = 42 [43] = 139 [44] = 32 [45] = 144 [46] = 164 [47] = 61 [48] = 72 [49] = 191 [50] = 42 [51] = 56 [52] = 229 [53] = 0 [54] = 35 [55] = 231 [56] = 131 [57] = 60 [58] = 92 [59] = 169 [60] = 2 [61] = 212 [62] = 18 [63] = 244

Kann mir jemand helfen?

Wie wr’s hiermit:

  1. String decodieren:

dim mystring as string _ ="DRurBGEf2ntP7Z0WDkMP8e1ZeK7PswJGeBHCg4zEYXZSE3Qqxsbi5EF1KosgkKQ9SL8qOOUAI+eDPFypAtQS9A==" mystring = DecodeBase64 (mystring)

  1. Array erzeugen:

dim myarray() as uinteger = mystring.ByteArray

  1. Konvertieren:

Function ByteArray(extends s as String) As uinteger() dim result() as UInteger for q as uinteger = 1 to s.Len result.Append ascb(s.Mid (q,1)) next return result End Function

Oder alles zusammen hier:
https://dl.dropboxusercontent.com/u/21200221/Xojo/StringExtension.xojo_code.zip

Danke für die Antwort :slight_smile:

[code] Dim myData as string = “DRurBGEf2ntP7Z0WDkMP8e1ZeK7PswJGeBHCg4zEYXZSE3Qqxsbi5EF1KosgkKQ9SL8qOOUAI+eDPFypAtQS9A==”
myData = DecodeBase64(myData)

Dim DataArray() as uinteger = ByteArray(myData)
[/code]

Nun kann ich die APP nicht mehr laufen lassen, Xojo stürzt sofort ab.

Wenn ich Dim DataArray() as uinteger = myData.byteArray nutze = Type String has no member named “byteArray”

??
Hast du mal das Download-Projekt geöffnet? Funktioniert das?
EDIT: Und die Funktion hast du entsprechend umgebaut? Also kein extends für strings in den Übergabeparametern?

Ich hab das aus deinem Download kopiert, scheinbar darf man das nicht einem Window als Methode hinzufügen sonst verreist es Xojo irgendwie.

Wie kann ich denn nun auf diesen Array zugreifen und mir z.B. anschauen was in (0) drin steht :slight_smile:

Vermutlich weil die Methode als Modulmethode mit extends angelegt war – innerhalb eines Objekts eint es dann zu Problemen zu kommen. Wenn du sie in deinem Projekt änderst in

Function ByteArray(s as String) As uinteger() dim result() as UInteger for q as uinteger = 1 to s.Len result.Append ascb(s.Mid (q,1)) next return result End Function, sollte es ebenso gehen.
Den Crash schau ich mir mal an, das klingt nach einem Bugreprt.

Anschauen: Zur schnellen Kontrolle hatte ich in das Beispielprojekt einen Break eingeführt, nach Ausführung der Konvertierung im Open-Event des Fensters. Dann siehst du im Debugger die Variablen der aktuellen Methode und kannst dich in das ByteArray hineinklicken.

Innerhalb deines Programms natürlich einfach mit DataArray(Position).

das fehlt oben: sch :slight_smile: