Hallo,
ich habe damals einen Code gehabt, der mit Hilfe der Windows
API mehrere RTF-Texte in einem RichView (o.Ä) darstellen kann. Diesen Code verwende ich jetzt in meinem neuen Programm auch wieder, allerdings kommt immer die Fehlermeldung "Ungültige Zeigeroperation". Ich kann mir den Grund des Fehlers aber nicht herleiten. Gut, was Zeigeroperationen sind, weiß ich - aber da dürfte kein Fehler kommen. Hier mal mein QuellText:
Delphi-Quellcode:
function _AddRtfCallback(dwCookie: Longint; pbBuff: PByte;
cb: Longint;
var pcb: Longint): Longint;
stdcall;
begin
try
Result := 0;
pcb := TStream(dwCookie).
Read(pbBuff^, cb);
except
Result := 1;
end;
end;
procedure AddRtfFromStream(RichEditHandle: THandle; Stream: TStream);
var EditStream: TEditStream;
begin
EditStream.dwCookie := LongInt(Stream);
EditStream.dwError := 0;
EditStream.pfnCallback := @_AddRtfCallback;
SendMessage(RichEditHandle, EM_STREAMIN, SF_RTF + SFF_SELECTION, LongInt(@EditStream));
if EditStream.dwError <> 0
then
raise Exception.Create('
RichEdit operation fehlgeschlagen!');
end;
procedure TForm1.LoadRTF;
var
ss: TStringStream;
begin
ss:=TStringStream.Create('
');
try
ss.WriteString(utf8decode(Form1.ZQuery1.FieldByName('
definition').AsString));
ss.Position:=0;
AddRTFFromStream(ncTBMS.Handle, ss);
finally
ss.Free;
end;
end;
Wo konnte der Fehler liegen? Der Wert von "EditStream.dwError" ist -16. Das war er zumindest gestern.
Vielen Dank im Voraus