Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Stream mit Base64 kodieren


LittleBen - Di 26.08.14 14:51
Titel: Stream mit Base64 kodieren
Hallo zusammen,
mein neustes Problem sieht so aus, dass ich ein Stream in eine Zeichenkette packen muss.
Genauer gesagt muss ich den Stream über ein Indy Socket senden,darf aber nicht die methode Write(AStream: TMemoryStream)benutzen. Das ist vom Admin so vorgegeben und lässt sich auch nicht ändern.
Jetzt hatte ich die Idee, den Stream einfach Base64 zu kodieren und dann als Zeichenkette wegzuschicken.
Da ich Delphi 7 benutze, kann ich folgende Funktion leider nicht benutzen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
function EncodeFile(const FileName: string): AnsiString;
var
  stream: TMemoryStream;
begin
  stream := TMemoryStream.Create;
  try
    stream.LoadFromFile(Filename);
    result := EncodeBase64(stream.Memory, stream.Size);
  finally
    stream.Free;
  end;
end;

Habt ihr Ideen, wie man das hier in D7 umsetzen kann?

Vielen Dank und Grüße
Littleben


Narses - Di 26.08.14 22:23

Moin!

Ich sehe keinen "Vorteil" (genauer: nicht mal einen Unterschied) darin, einen Datenblock raw oder base64-codiert zu senden - ausser dass es bei letzterem (unnütz) mehr Daten werden... :nixweiss:

Und warum sollte D7 kein base64 können? :gruebel: (also meins kann´s, wobei ich mir zugegebenermaßen nicht sicher bin, ob das von-hause-aus geht :?) Zumindest bei den Indies gibt´s definitiv einen Encoder, sollte Delphi das nicht an Bord haben oder keine simple Funktion dafür googlebar sein.

cu
Narses


Mathematiker - Di 26.08.14 22:34

Hallo,
siehe http://stackoverflow.com/questions/14942269/how-to-encode-base64-in-delphi-6

Beste Grüße
Mathematiker