[delphi] ITextServices

Pagina: 1
Acties:

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 15-05 14:44

_Thanatos_

Ja, en kaal

Topicstarter
Volgens mij heb ik die interface nodig als ik dingen met RTF wil doen zonder dat ik daarvoor een richedit control wil gebruiken. In mijn geval moet RTF in platte tekst omgezet worden en volgens mij moet dat met die interface.

Het probleem dat hierop volgt is eigenlijk dat ik em in Delphi niet geïmporteerd krijg. Volgens MSDN moet de interface (evenals ITextHost en de function CreateTextServices) in riched20.dll zitten, maar daar zit dus alleen maar ITextDocument en aanverwanten in.

Weet iemand hoe ik dit in Delphi voor elkaar krijg?

日本!🎌


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Je kan m niet importeren in Delphi omdat het geen volwaardig Active X Library is. Ik ben bang dat je de interfaces zelf zult moeten vertalen van C naar Delphi. Vanwege dit artikel denk ik dat de interface in textserv.h staat. Misschien vind je bij Delphi-Jedi al een kant en klare vertaling.

We adore chaos because we like to restore order - M.C. Escher


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 15-05 14:44

_Thanatos_

Ja, en kaal

Topicstarter
Niets te vinden bij JEDI... Dan maar zelf die header vertalen. Maar dan stuit ik toch op een vaag iets:
C:
1
EXTERN_C const IID IID_ITextServices;

Wat is daar nou de waarde van :?

日本!🎌


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Die haalt ie uit de riched20.dll. Kijk maar wat die dll allemaal exporteerd. Overgens stond in dat artikel dat je die regel maar moest uitcommenten.

We adore chaos because we like to restore order - M.C. Escher


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 15-05 14:44

_Thanatos_

Ja, en kaal

Topicstarter
pff, ik moet dus een hele class om die interface heen schrijven, allerlei methodes implementeren... Terwijl ik eigenlijk alleen maar RTF naar platte tekst moet omzetten.

Ik doe het dus maar mooi op de "klassieke" manier :+
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
{In FormCreate:}
RichEdit := TRichEdit98.Create(Self);
RichEdit.Visible := False;
RichEdit.Parent := Self;

{In een andere methode:}
Stream := TStringStream.Create(RTF);
try
  RichEdit.Lines.LoadFromStream(Stream);
finally
  Stream.Free;
 end;
Result := RichEdit.Lines.Text;

TRichEdit98? Ja, een ding dat riched20.dll gebruikt en unicode ondersteunt. RTF is een variabele waarin de RTF-code staat en Stream is gewoon een TStringStream.

Dit is trouwens wel een goed voorbeeld van luiheid van programmeurs ;)

日本!🎌