Bei meinem Delphi wird in der ComCtrls.pas der
VCL in
procedure TCustomRichEdit.CreateParams(var Params: TCreateParams);
die
RichEditModuleName = 'RICHED32.DLL';
geladen, unabhängig davon, was sonst noch so vorhanden ist.
Mit der Routine aus dem Eingangspost kann man also prüfen, was vorhanden ist, aber nicht, was vom RichEdit in Delphi genutzt wird. (Es sei denn, das Laden der benötigten
DLL wird in anderen Delphiversionen anders gelöst.) Und obige Routine "erwischt" das, was im Suchpfad zu finden ist, dass muss nicht zwingend mit dem übereinstimmen, was ein Programm letztlich nutzt.
Oder (um auf den anderen Thread zum Thema zu verweisen -
RichEdit: Seiten-Umbruch erkennen/auswerten/drucken): LibreOffice kann durchaus eine andere RichEdit-Version für die Erstellung von RTF-Dateien nutzen (oder einen vollkommen anderen Weg zur Erstellung), als das eigene Programm. Dadurch sind Inkompabilitäten möglich.
Man müsste (vermutlich) herausfinden, was tatsächlich genutzt wird und nicht, was vorhanden ist. Bin mir nicht ganz sicher: TJvRichEdit scheint in der globalen Variabel RichEditVersion die genutzte Version anzugeben. Einfach mal in der JvRichEdit.pas die Routine InitRichEditDll anschauen. Eventuell sind daraus weitere Erkenntnisse zu ziehen.
Die neueste RTF-Spezifikation, die ich habe finden können, gibt es hier:
Microsoft: Word 2007: Rich Text Format (RTF) Specification, version 1.9.1