![]() |
CodeBase64 wirft Fehler auf - Warum?
Hallo Leute,
ich schreibe mit einer Base64 Routine einen String in eine Datei. Wenn ich diesen dann aber zur Kontrolle auslesen will bekomme ich immer wieder die Meldung, dass das StringFormat unkorrekt ist. Ich lasse mir aber den String vorher anzeigen und kann keinen Fehler festellen. '1234' ist doch ein gueltiger String, oder? Hier steigt die Procedure aus: Wenn ich diesen Bereich aber rausremme, funzt die Ueberpruefung nicht.
Code:
Wer hat eine Idee.
if (Length(S) mod 4)<> 0 then
begin raise Exception.Create('Base64: Incorrect string format'); end; Ich schicke auch gern den gesamten Code, wenns nuetzt. |
Re: CodeBase64 wirft Fehler auf - Warum?
Die Routine überprüft, ob die Länge des Strings ein vielfaches von 4 ist. (also '1234' wäre auch da korrekt). Schau mal in die CodeLib, da habe ich auch eine Lösung gepostet.
...:cat:... |
Re: CodeBase64 wirft Fehler auf - Warum?
Hallo Sakura,
vielen Dank fuer die schnelle Hilfe. Leider weiss ich nicht, was Du mit CodeLib meinst. Kannst Du bitte konkreter werden? |
Re: CodeBase64 wirft Fehler auf - Warum?
Zitat:
![]() ![]() ![]() ...:cat:... |
Re: CodeBase64 wirft Fehler auf - Warum?
also ich habe mir mal den code kopiert und natuerlich gleich ausprobiert. die fehlermeldung kommt nun nicht mehr, dafuer aber auch kein inhalt.
folgendes tue ich zum Erstellen:
Code:
und folgendes zum Auslesen
var
FileID:TStringlist; begin FileID := TStringList.Create; FileID.Text := Base64Encode('1234/abcd'); ShowMessage(fileid.Text); FileID.SaveToFile(App_Path + '\license.id'); end;
Code:
Die Messagebox mit dem Inhalt der Datei stimmt.
procedure TForm1.CheckUserID;
var FileID:TStringlist; begin if FileExists(App_Path + '\license.id') then begin FileID := TStringList.Create; FileID.LoadFromFile(App_Path + '\license.id'); ShowMessage((FileID.Text)); ShowMessage(Base64Decode(FileID.Text)); if Base64Decode(FileID.Text) = '1234/abcd' then exit else begin PageControl1.Pages[1].Destroy; PageControl1.Pages[3].Destroy; end; end else begin PageControl1.Pages[1].Destroy; PageControl1.Pages[3].Destroy; end; end; Leider gibt mir die Messagebox mit dem encodeten Inhalt einen Leerstring zurueck. hm, wo liegt das problem??? |
Re: CodeBase64 wirft Fehler auf - Warum?
Eine StringList wird immer durch #13#10 abgeschlossen, egal, wie es gespeichert wurde ;-) Dadurch ist Dein zu dekodierender String inkorrekt. Ändere wie folgend:
Code:
...:cat:...
ShowMessage(Base64Decode([color=#f50000]Trim([/color]FileID.Text[color=#f50000])[/color]));
|
Re: CodeBase64 wirft Fehler auf - Warum?
Vielen herzlichen Dank!
Es funktioniert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz