Hi Leute,
ich hab ein Problem mit folgender Funktion, die ich im Netz gefunden hab:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47:
| function BitmapToRtf(Bitmap:TBitmap):string; var BitmapInfo, BitmapBytes, Text: string; BitmapInfoSize, BitmapBytesSize: cardinal; Temp: shortstring; HexDIB: string; i: integer; begin GetDIBSizes(Bitmap.Handle, BitmapInfoSize, BitmapBytesSize); SetLength(BitmapInfo, BitmapInfoSize); SetLength(BitmapBytes, BitmapBytesSize); GetDIB(Bitmap.Handle, Bitmap.Palette, PChar(BitmapInfo)^, PChar(BitmapBytes)^); Text := '{\rtf1 {\pict\dibitmap0 '; SetLength(HexDIB, (Length(BitmapBytes) + Length(BitmapInfo)) * 2); i := 2;
for BitmapInfoSize := 1 to Length(BitmapInfo) do begin
Temp := Format('%x', [Integer(BitmapInfo[BitmapInfoSize])]);
if Length(Temp) = 1 then Temp := '0' + Temp;
HexDIB[i - 1] := Temp[1]; HexDIB[i] := Temp[2]; Inc(i, 2);
end;
for BitmapBytesSize := 1 to Length(BitmapBytes) do begin
Temp := Format('%x',[Integer(BitmapBytes[BitmapBytesSize])]);
if Length(Temp) = 1 then Temp := '0' + Temp;
HexDIB[i - 1] := Temp[1]; HexDIB[i] := Temp[2]; Inc(i, 2);
end;
Text := Text + HexDIB + ' }}'; Result := Text; end; |
Wenn ich diese Funktion in Verbindung mit einem RxRichEdit mindestens zweimal folgendermaßen benutze:
Quelltext
1: 2: 3: 4:
| Bitmap := TBitmap.Create; Bitmap.LoadFromFile('C:\2.bmp'); edText.Lines.Add(BitmapToRtf(Bitmap)); Bitmap.Free; |
kommt, wenn ich RxRichEdit.Lines.SaveToFile ausführe, folgendes raus:
| Zitat: |
{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil Tahoma;}}
\viewkind4\uc1\pard\f0\fs16{\pict\wmetafile8\picw396\pich396\picwgoal225\pichgoal225
010009000003a001000000008a0100000000050000000b0200000000050000000c028c018c018a
010000430f2000cc0000000f000f00000000008c018c0100000000280000000f0000000f000000
0100180000000000d0020000c40e0000c40e00000000000000000000ffffffffffffffffffffff
ffffffff454545454545454545454545454545ffffffffffffffffffffffffffffff000000ffff
ffffffffffffff45454545454500b4ff00b4ff00b4ff00b4ff009dfe454545454545ffffffffff
ffffffff000000ffffffffffff45454500ceff00ceff00c9ff00c9ff00c9ff00c9ff00c9ff00ce
ff009dfe454545ffffffffffff000000ffffff45454500ceff00ceff00e5ff0000000000000000
0000000000000000c9ff00ceff009dfe454545ffffff000000ffffff45454500ceff00eaff0000
00ffffffffffffffffffffffffffffff00000000c9ff00ceff454545ffffff00000045454500ce
ff00eaff00000000000000000000000000000000000000000000000000000000c9ff009dfe4545
4500000045454513fdff00eaff33333300eaff00eaff00eaff00eaff00eaff00eaff00eaff3333
3300c9ff00b4ff45454500000045454593feff00eaff00eaff00eaff00eaff00eaff00eaff00ea
ff00eaff00eaff00eaff00c9ff00b4ff45454500000045454593feff13fdff00eaff00eaff0000
0000eaff00eaff00eaff00000000eaff00eaff00c9ff00b4ff454545000000454545c7ffff13fd
ff00eaff00eaff00000000eaff00eaff00eaff00000000eaff00eaff00c9ff009dfe4545450000
00ffffff45454593feff13fdff00eaff00eaff00eaff00eaff00eaff00eaff00eaff00eaff00ce
ff454545ffffff000000ffffff454545c7ffff93feff00000000000000eaff00eaff00eaff0000
0000000000ceff009dfe454545ffffff000000ffffffffffff454545ebffffc7ffff13fdff13fd
ff00eaff00eaff00eaff00ceff009dfe454545ffffffffffff000000ffffffffffffffffff4545
45454545ebffffc7ffff93feff93feff00ceff454545454545ffffffffffffffffff000000ffff
ffffffffffffffffffffffffff454545454545454545454545454545ffffffffffffffffffffff
ffffffff000000030000000000
}\par
\{\\rtf1 \{\\pict\\dibitmap0
280000000F0000000F00000001002000000000008403000000000000000000000000000000000000
FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004545450045454500454545004545450045454500
FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004545450045454500
00B4FF0000B4FF0000B4FF0000B4FF00009DFE004545450045454500FFFFFF00FFFFFF00FFFFFF00
FFFFFF00FFFFFF004545450000CEFF0000CEFF0000C9FF0000C9FF0000C9FF0000C9FF0000C9FF00
00CEFF00009DFE0045454500FFFFFF00FFFFFF00FFFFFF004545450000CEFF0000CEFF0000E5FF00
000000000000000000000000000000000000000000C9FF0000CEFF00009DFE0045454500FFFFFF00
FFFFFF004545450000CEFF0000EAFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
0000000000C9FF0000CEFF0045454500FFFFFF004545450000CEFF0000EAFF000000000000000000
0000000000000000000000000000000000000000000000000000000000C9FF00009DFE0045454500
4545450013FDFF0000EAFF003333330000EAFF0000EAFF0000EAFF0000EAFF0000EAFF0000EAFF00
00EAFF003333330000C9FF0000B4FF00454545004545450093FEFF0000EAFF0000EAFF0000EAFF00
00EAFF0000EAFF0000EAFF0000EAFF0000EAFF0000EAFF0000EAFF0000C9FF0000B4FF0045454500
4545450093FEFF0013FDFF0000EAFF0000EAFF000000000000EAFF0000EAFF0000EAFF0000000000
00EAFF0000EAFF0000C9FF0000B4FF004545450045454500C7FFFF0013FDFF0000EAFF0000EAFF00
0000000000EAFF0000EAFF0000EAFF000000000000EAFF0000EAFF0000C9FF00009DFE0045454500
FFFFFF004545450093FEFF0013FDFF0000EAFF0000EAFF0000EAFF0000EAFF0000EAFF0000EAFF00
00EAFF0000EAFF0000CEFF0045454500FFFFFF00FFFFFF0045454500C7FFFF0093FEFF0000000000
0000000000EAFF0000EAFF0000EAFF00000000000000000000CEFF00009DFE0045454500FFFFFF00
FFFFFF00FFFFFF0045454500EBFFFF00C7FFFF0013FDFF0013FDFF0000EAFF0000EAFF0000EAFF00
00CEFF00009DFE0045454500FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004545450045454500
EBFFFF00C7FFFF0093FEFF0093FEFF0000CEFF004545450045454500FFFFFF00FFFFFF00FFFFFF00
FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004545450045454500454545004545450045454500
FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 \}\}\par
} |
Das heißt, beim ersten mal, funktioniert alles richtig (wobei ich mich wundere, dass aus dibitmap metafile wird) aber beim zweiten Versuch, kommt es nicht richtig raus, sondern der rtf-Text steht in der Anzeige.
Hat jemand eine Ahnung, was ich falsch mache und kann mir helfen?