Autor Beitrag
Stevie
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 85

Windows 7
Delphi XE Professional
BeitragVerfasst: Mo 21.07.03 12:40 
Hi Leute,

ich hab ein Problem mit folgender Funktion, die ich im Netz gefunden hab:

ausblenden volle Höhe Quelltext
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:
ausblenden 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?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 21.07.03 13:13 
Öhm, du speicherst im RTF-Format, lädst aber reines Text-Format, somit siehst du die Formatbeschreiben nachher im RichEdit. Stell mal beim RichEdit PlainText auf TRUE.