Hallo,
ich habe stundenlang gegoogelt und kaum was gefunden. Da ich bei einem Schlag auf den Hinterkopf + Gedächtnisverlust meinerseits immer zuerst hier im Forum suchen würde und vielleicht auch andere danach suchen, stelle ich mal Frage+Antwort rein.
Mit DelphiXE2 funktionieren meine Ravereports nicht mehr, ich übertrage ein Richedit per Custommconnection und erhalte im Ravereport nur chinesische Schriftzeichen oder andere Hyroglyphen.
Ich habe diverse Tipps gelesen, das man noch mit savetostream(xxx,Tendoding.utf8) arbeiten soll, das hat alles nicht funktioniert.
Folgendes ging jetzt:
der Text muß als dtstring (nicht dtmemo) und über den Umweg einer Tstringlist übertragen werden.
Delphi-Quellcode:
procedure TForm1.RvCustomConnectionGetCols(
Connection: TRvCustomConnection);
begin
//als dtstring, nicht dtmemo !!!
Connection.WriteField('RichEditRTF', dtstring, 30, '','');
end;
procedure TForm1.RvCustomConnectionGetRow(Connection: TRvCustomConnection);
Var memstream:Tmemorystream;
sl:Tstrings;
begin
MemStream := TMemoryStream.Create;
try
RichEdit1.Lines.SaveToStream(memstream);
//das hier hätte vorher gereicht (in Verbindung mit dtmemo):
//Connection.WriteBlobData(MemStream.Memory^, MemStream.Size);
//Umweg über eine Stringlist sl.text:=Richedit.lines.text reicht nicht
sl:=TStringList.create;
try
memstream.Position:=0;
sl.LoadFromStream(memstream);
Connection.WriteStrData(sl.Text,'');
finally
sl.Free;
end;
finally
MemStream.Free;
end;
end;
Irgendwo (finde leider die Seite nicht mehr) war noch der Vorschlag, das man das Richedit wie früher (dtmemo+Blobdata) übergibt, im Ravereport eine 2. Datamemo setzt und das erste das auf unsichtbar setzt.
ins onbeforeprint des 2. memos dann
Code:
self.text:=copy( datamemo1.text, 0, round( length( datamemo1.text )/2));
das ist mir aber dann doch zu viel Gefrickel.
Wenn noch jemand einen Hinweis hat, nehme ich den auch dankbar an
Gruß Frank