@DeddyH: Danke für den Tipp, das verkürzt den Code wesentlich!
Delphi-Quellcode:
procedure GetImageFromVCardPhoto(AText: String; AImage:TImage);
var TmpInStream : TMemoryStream;
TmpOutStream: TMemoryStream;
TmpStrStream: TSTringStream;
begin
TmpInstream := TMemoryStream.Create;
TmpOutstream := TMemoryStream.Create;
TmpStrStream := TStringStream.Create;
try
TmpStrStream.WriteString(AText);
TmpInstream.LoadFromStream(TmpStrStream);
DecodeStream(TmpInstream,TmpOutstream);
AImage.Bitmap.LoadFromStream(TmpOutstream);
finally
TmpOutstream.Free;
TmpInstream.Free;
TmpStrStream.Free;
end;
end;
@Klaus01:
Entschuldige bitte, ich hätte es tatsächlich erläutern sollen.
Im Moment lese ich die vCard doch über die TidVCard-Komponente aus und rufe meine procedure dann folgendermaßen auf:
GetImageFromVCardPhoto(TmpidVCard.Photo.EmbeddedData.Text ,Image1);
Das bedeutet, dass es mir mit dieser procedure lediglich um das anzeigen des Fotos aus der vCard geht.
Der Rest der Daten wird an anderer Stelle ausgelesen!