![]() |
Array base64 codieren
Hallo zusammen!
Ich habe ein Problem, das meine (nicht berauschenden) Delphi-Fähigkeiten übersteigt: Ich habe ein Array, dass ich als Text base64 encoded speichern möchte (in eine XML-Datei). Beim Umschauen im Netz habe ich festegestellt, dass es viele Units für Delphi gibt, die das codieren/encodieren ermöglichen. Allerdings erwarten alle, die ich angeschaut habe, entweder einen (Ansi)String oder einen Stream (zum Beispiel DMime/DMimeStreams von ![]() Ich habe nun ein Array (Integer oder Float) vorliegen und habe keine Ahnung, wie ich das in die entsprechenden Typen umwandeln kann. Als zweite Möglichkeit bliebe, das Array selbst binär auszulesen und zu encodieren/decodieren. Nur habe ich auch keine Ahnung, wie ich das machen könnte - besonders bei Float-Variablen. Hoffentlich könnt ihr mir helfen. Wenn Ihr weitere Infos braucht, liefere ich sie gerne! Vielen Dank schonmal ElThoro |
Re: Array base64 codieren
Dann musst du einfach die Typen umwandeln. Dann musst du außerdem Index für Index das Array an die Funktion an Besten in einer Schleife übergeben
Also so;
Delphi-Quellcode:
Und wenn du als Float vorliegen hast
for i := 0 to High(Array) do begin Text := Encode(IntToStr(Array[i]); end;
Delphi-Quellcode:
Lg
for i := 0 to High(Array) do begin Text := Encode(FloatToStr(Array[i]); end;
|
Re: Array base64 codieren
Hallo! Ich nochmal :hi:
Vielen Dank für die schnelle Antwort. Das Zusammenführen der einzelnen Array-Bestandteile ist ein Weg, der funktioniert. Allerdings kann ich beim Dekodieren/Einlesen nicht mehr feststellen, welche Zahlen in ein Feld eines Arrays gehören. Daher wäre es in meinen Augen sinnvoller, das ganze als Stream zu speichern. Da muss ich mir nur merken, wieviel Bit in einem Feld des Arrays gespeichert werden, um es wiederherstellen zu können... Gibt es auch eine Möglichkeit, ein Array in einen Stream umzuwandeln ohne den Zwischenschritt, es in eine Datei auf die Festplatte zu schreiben? Hier ![]() Was meint Ihr? Vielen Dank ElThoro |
Re: Array base64 codieren
Hallo,
ein Array in ein Stream zu kopieren sollte sich mit TMemoryStream.WriteBuffer bewerkstelligen lassen. Zitat:
Delphi-Quellcode:
Grüße
MemStream.WriteBuffer(Array[0],High(Array))
Klaus |
Re: Array base64 codieren
Hallo nochmal!
Ich wollte nur kurz mitteilen, dass genau das mein Problem gelöst hat! Vielen, vielen Dank dafür sagt ElThoro |
Re: Array base64 codieren
Hi Klaus,
Wenn du das Array in einen Stream speicherst, musst du bei der Größe schon Length(Array) angeben ;) Das letzte Element wird sonst nicht gespeichert. Und man muss die Länge noch mit der Größe des jeweiligen Datentyps multiplizieren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:39 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 by Thomas Breitkreuz