[DUG] Help - Mime64 insanity !
Robert Martin
rob at chreos.co.nz
Tue Aug 9 17:01:27 NZST 2016
Hi guys
I have been struggling to get some basic Mime encoding working, I have
the following code which I use to Mime64 Encode a picture contained in a
TImage component....
Base64 := TMime64.create;
try
MemoryStream := TMemoryStream.Create;
MemoryStream.Position := 0;
Image.Picture.Graphic.SaveToStream(MemoryStream);
ReportImage.ImageMime :=
Base64.Encode_New(MemoryStream);
.....
Function shown below...
function TMime64.Encode_New(aSourceStream: TMemoryStream): String;
var
IdEncoderMIME : TIdEncoderMIME;
Sl : TStringList;
begin
Result := '';
try
IdEncoderMIME := TIdEncoderMIME.Create(nil);
sl := TStringList.Create;
try
aSourceStream.Position := 0;
Result := IdEncoderMIME.EncodeStream(aSourceStream);
sl.Text := Result;
sl.SaveToFile('d:\d\a.txt', TEncoding.UTF8);
finally
IdEncoderMIME.Free;
sl.Free;
end;
except
on E : Exception do begin
raise EMimeError.Create(E.Message);
end;
end;
end;
The issue is that when I try to save the results in a UTF8 formatted
file (the destination is to be a UTF-8 formatted XML file), there are
'bad' characters in the file which are invisible in Notepad++ but are
present.
If I save without specifying the file encoding (
sl.SaveToFile('d:\d\a.txt') instead of sl.SaveToFile('d:\d\a.txt',
TEncoding.UTF8) ) I have what appears to be a clean ASCII file. My
understanding is that ASCII characters have the same byte value (0-127)
in an ASCII formatted file or a UTF-8 formatted file so I don't
understand why the values would change.
Any suggestions.
p.s. I have to be able to save the file as UTF-8 because that is what
the destination XML is encoded in. Currently it is 'corrupt' because of
the 'bad' characters.
p.p.s TIdEncoderMIME.EncodeStream returns a String. I am using Delphi Xe2.
p.p.p.s I know it is something stupid I am doing !
Thanks
Rob
More information about the Delphi
mailing list