AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Zwei RTFs in einem RichEdit-Control - Ungültige Zeigerop.
Thema durchsuchen
Ansicht
Themen-Optionen

Zwei RTFs in einem RichEdit-Control - Ungültige Zeigerop.

Ein Thema von TheMiller · begonnen am 21. Nov 2009 · letzter Beitrag vom 25. Nov 2009
Antwort Antwort
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

Zwei RTFs in einem RichEdit-Control - Ungültige Zeigerop.

  Alt 21. Nov 2009, 11:28
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
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#2

Re: Zwei RTFs in einem RichEdit-Control - Ungültige Zeigerop

  Alt 25. Nov 2009, 13:29
Kann mir jemand helfen? Der Fehler besteht immernoch - ich finde einfach keine Lösung...
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Zwei RTFs in einem RichEdit-Control - Ungültige Zeigerop

  Alt 25. Nov 2009, 16:21
Hallo,

in diesem Thread wird unter anderem eine ShowErrorStr Funktion gezeigt, mit der man den Fehler in 'Klartext' übersetzen lassen kann:

http://www.codeguru.com/forum/showthread.php?t=458778

Das Beispiel ist zwar in C, aber im Thread geht es auch um die (undokumentierten?) EM_STREAMIN Errorcodes.

Cheers,
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#4

Re: Zwei RTFs in einem RichEdit-Control - Ungültige Zeigerop

  Alt 25. Nov 2009, 17:19
Hey Leute,

ehm... was soll ich sagen.. Jetzt funktioniert's. Es war meine Schuld. Ich habe die zu ladenden Texte NICHT im RFT-Format gespeichert.

Sorry und trotzdem Danke!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz