File to Base64 String Code Generator mit *.txt

  • Heute habe ich eine 256,51 KB große Textdatei, CmdControlOrg.txt, (Codepage = UCS-2 LE BOM) mit dem "File to Base64 String Code Generator" gepackt und das Ergebnis in mein Script eingebaut.


    Um die Daten zu entpacken, rufe ich nun einfach mal die dafür nötige Funktion auf:

    Global $g_bCmdControlOrgTxt = _cmdControl_txt()


    Ops, dann habe ich die Daten ja als Binary in der Variable $g_bCmdControlOrgTxt... ich brauche sie aber als String, der in ein Array konvertieren werden soll.


    Dann habe ich mir gedacht, machst du das jetzt einfach so:

    Global $g_aCmdControlOrgTxt = StringRegExp(BinaryToString(_cmdControl_txt()), '(.+)\R', $STR_REGEXPARRAYGLOBALMATCH)

    ...und fertig ist das Kind.


    Doch... hehe... ne, so einfach sollte es dann doch nicht werden!


    Denn heraus kam dabei folgendes:



    Ok, was stimmt da nicht?


    Ja klar, ich muss die Codepage bei BinaryToString() angeben... in meinem Fall also eine 2. ==> $SB_UTF16LE (2) = binary data is UTF16 Little Endian

    Global $g_aCmdControlOrgTxt = StringRegExp(BinaryToString(_cmdControl_txt(), 2), '(.+)\R', $STR_REGEXPARRAYGLOBALMATCH)


    Jetzt wieder testen, ob alles easy ist:

    ConsoleWrite(' erste Zeile: ' & $g_aCmdControlOrgTxt[0] & @CRLF)

    ConsoleWrite('letzte Zeile: ' & $g_aCmdControlOrgTxt[UBound($g_aCmdControlOrgTxt) -1] & @CRLF)

    _ArrayDisplay($g_aCmdControlOrgTxt, '$g_aCmdControlOrgTxt')


    Was _ArrayDisplay() anzeigt, sieht ja schon mal recht gut aus...



    ...aber halt, das erste ConsoleWrite() ...wieso ist da ein ? vor dem Text?



    6 Dosen Bier und 21 Zigaretten waren nötig, um auf die Lösung zu kommen... und nun, da ich sie kenne, überlege ich, ob es nicht doch besser wäre, wenn ich mich einschläfern lasse. 8o

    Es war der BOM!!!


    Folgende Zeile brachte dann endgültig das gewünschte Ergebnis:

    Global $g_aCmdControlOrgTxt = StringRegExp(BinaryToString(BinaryMid(_cmdControl_txt(), 3), 2), '(.+)\R', $STR_REGEXPARRAYGLOBALMATCH)


    So kann man sich den Abend auch totschlagen...

  • 6 Dosen Bier und 21 Zigaretten waren nötig, um auf die Lösung zu kommen...

    Bist Du sicher, dass es nicht 21 Dosen Bier und 6 Zigaretten waren ?

    Dann wäre der Lapsus ja erklärbar und Du könntest auf das 'Einschläfern lassen' verzichten :P.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Bist Du sicher, dass es nicht 21 Dosen Bier und 6 Zigaretten waren ?

    Hihi... nein, ist schon richtig so, wie ich es geschrieben hatte... der Grund für meine heutige zu Null tendierende Problemlösungsfähigkeit scheint wohl zu sein, das ich vorige Nacht nur 3,5 Std. geschlafen habe... wirklich schlimm wäre es ja erst geworden, wenn ich um Hilfe hätte fragen müssen... 8o