AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Array base64 codieren

Ein Thema von ElThoro · begonnen am 18. Feb 2009 · letzter Beitrag vom 25. Feb 2009
Antwort Antwort
Benutzerbild von ElThoro
ElThoro

Registriert seit: 21. Nov 2008
3 Beiträge
 
#1

Array base64 codieren

  Alt 18. Feb 2009, 17:00
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 http://www.yunqa.de/delphi/doku.php/products/mime/index).
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
~~~~~~~~~~
Wer im Glashaus sitzt,
sollte sich im Keller umziehen!
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Array base64 codieren

  Alt 18. Feb 2009, 17:30
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;

for i := 0 to High(Array) do begin Text := Encode(IntToStr(Array[i]); end; Und wenn du als Float vorliegen hast
for i := 0 to High(Array) do begin Text := Encode(FloatToStr(Array[i]); end; Lg
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von ElThoro
ElThoro

Registriert seit: 21. Nov 2008
3 Beiträge
 
#3

Re: Array base64 codieren

  Alt 19. Feb 2009, 10:31
Hallo! Ich nochmal

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 http://www.delphipraxis.net/internal...t.php?t=113490 geht es nur über eine Datei. Zur Not würde das auch gehen, aber wenn ich das im Speicher halten könnte, fände ich das besser.

Was meint Ihr? Vielen Dank
ElThoro
~~~~~~~~~~
Wer im Glashaus sitzt,
sollte sich im Keller umziehen!
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Array base64 codieren

  Alt 19. Feb 2009, 10:53
Hallo,

ein Array in ein Stream zu kopieren sollte
sich mit TMemoryStream.WriteBuffer bewerkstelligen lassen.

Zitat von DelphiHilfe:
procedure WriteBuffer(const Buffer; Count: Longint);

Description

Use WriteBuffer to save data to a stream. WriteBuffer and ReadBuffer are used in cases where the number of bytes is known and required, for example when reading in structures. Use WriteBuffer for standard file I/O streaming.

WriteBuffer is used internally for writing to a stream and copying from a stream. It is used by other objects, such as strings and lists, for writing strings stored in a buffer.

WriteBuffer calls Write to handle the actual writing. If the stream fails to write all the requested bytes, an EWriteError exception is raised.
MemStream.WriteBuffer(Array[0],High(Array)) Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von ElThoro
ElThoro

Registriert seit: 21. Nov 2008
3 Beiträge
 
#5

Re: Array base64 codieren

  Alt 25. Feb 2009, 12:15
Hallo nochmal!

Ich wollte nur kurz mitteilen, dass genau das mein Problem gelöst hat!
Vielen, vielen Dank dafür
sagt

ElThoro
~~~~~~~~~~
Wer im Glashaus sitzt,
sollte sich im Keller umziehen!
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Array base64 codieren

  Alt 25. Feb 2009, 12:54
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.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz