Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: MathType einbinden

  Alt 5. Jun 2007, 09:30
Zitat von mjenke:
Die Datentypen scheinen also so in Ordnung zu sein...
Nein, natürlich nicht!
Der Datentyp String (genauer AnsiString) in Delphi ist etwas anderes als der in C/C++ übliche Datentyp "char *".
Die Deklaration müsste also eher so aussehen:TMPProcessHTML = function (inPath, outPath : PChar ): LongInt; stdcall; PChar ist ein Zeiger auf char.
Delphi-Quellcode:
procedure TMathType.ProcessHTML;
var
  ProcHTML: TMPProcessHTML;
  erg : longint;
begin
  // *A
  if FHandleWLL = 0 then
    raise Exception.Create('MathType DLL nicht geladen');

  if self.DLLVersionIsCorrect then
    raise Exception.Create('MathType DLL Version passt nicht zu dieser Anwendung');
  // *B
  // die Sicherheitsabfragen zwischen *A und *B lassen sich hervorragend in einer zentralen Methode
  // unterbringen
  // Durch das Verwenden von Exceptions weiss man genau, was das Problem ist
  // ohne Exceptions tappt man im Dunkeln


  ProcHTML := GetProcAddress(FHandleWLL, 'MPProcessHTML' );
  if not Assigned(ProcHTML) then
    raise Exception.Create('Funktion MPProcessHTML ist MathType DLL nicht gefunden');

  erg := ProcHTML(PChar('Testdokument.htm'), PChar('Testdokument_mt.htm'));
end;
PS: zwischen dem Funktionsnamen und der runden offnenden Klammer gehört kein Leerzeichen.
Man sollte die Konventionen von Borland übernehmen.
Andreas
  Mit Zitat antworten Zitat