Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Funktion aus ActiveX verwenden (https://www.delphipraxis.net/93958-funktion-aus-activex-verwenden.html)

Helmi 13. Jun 2007 20:58


Funktion aus ActiveX verwenden
 
Hallo,

ich möcht eine Funktion des MWS Reader 4 verwenden.

Das ActiveX-Control schaut so aus:
Delphi-Quellcode:
unit MWSReader4_TLB;

// ************************************************************************ //
// WARNUNG                                                                  
// -------                                                                   
// Die in dieser Datei deklarierten Typen wurden aus Daten einer Typbibliothek
// generiert. Wenn diese Typbibliothek explizit oder indirekt (über eine    
// andere Typbibliothek) reimportiert wird oder wenn die Anweisung          
// 'Aktualisieren' im Typbibliotheks-Editor während des Bearbeitens der    
// Typbibliothek aktiviert ist, wird der Inhalt dieser Datei neu generiert und
// alle manuell vorgenommenen Änderungen gehen verloren.                          
// ************************************************************************ //

// PASTLWTR : 1.2
// Datei generiert am 13.06.2007 21:31:12 aus der unten beschriebenen Typbibliothek.

// ************************************************************************  //
// Typbib: C:\Programme\MWS Reader 4\mwsr4.ocx (1)
// LIBID: {422BFDC4-5760-4AD5-A84A-EFF408FF5639}
// LCID: 0
// Hilfedatei:
// Hilfe-String: MWS Reader 4
// DepndLst:
//   (1) v2.0 stdole, (C:\WINDOWS\system32\stdole2.tlb)
// ************************************************************************ //
{$TYPEDADDRESS OFF} // Unit muß ohne Typüberprüfung für Zeiger compiliert werden.
{$WARN SYMBOL_PLATFORM OFF}
{$WRITEABLECONST ON}
{$VARPROPSETTER ON}
interface

uses Windows, ActiveX, Classes, Graphics, OleCtrls, OleServer, StdVCL, Variants;
 


// *********************************************************************//
// In dieser Typbibliothek deklarierte GUIDS . Es werden folgende        
// Präfixe verwendet:                                                    
//   Typbibliotheken    : LIBID_xxxx                                    
//   CoClasses          : CLASS_xxxx                                    
//   DISPInterfaces     : DIID_xxxx                                    
//   Nicht-DISP-Schnittstellen: IID_xxxx                                      
// *********************************************************************//
const
  // Haupt- und Nebenversionen der Typbibliothek
  MWSReader4MajorVersion = 1;
  MWSReader4MinorVersion = 0;

  LIBID_MWSReader4: TGUID = '{422BFDC4-5760-4AD5-A84A-EFF408FF5639}';

  IID__SendString: TGUID = '{1B9A00ED-48E9-484B-93AA-F9B4CA08D10C}';
  DIID___SendString: TGUID = '{8740BD71-F829-4968-9BB9-B05520040384}';
  CLASS_SendString: TGUID = '{0A53FDBA-2FF3-4DF5-968E-47ADC5A7A7E0}';
type

// *********************************************************************//
// Forward-Deklaration von in der Typbibliothek definierten Typen        
// *********************************************************************//
  _SendString = interface;
  _SendStringDisp = dispinterface;
  __SendString = dispinterface;

// *********************************************************************//
// Deklaration von in der Typbibliothek definierten CoClasses            
// (HINWEIS: Hier wird jede CoClass zu ihrer Standardschnittstelle      
// zugewiesen)                                                          
// *********************************************************************//
  SendString = _SendString;


// *********************************************************************//
// Schnittstelle: _SendString
// Flags:    (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:     {1B9A00ED-48E9-484B-93AA-F9B4CA08D10C}
// *********************************************************************//
  _SendString = interface(IDispatch)
    ['{1B9A00ED-48E9-484B-93AA-F9B4CA08D10C}']
    function SendString(const Text: WideString): WordBool; safecall;
  end;

// *********************************************************************//
// DispIntf: _SendStringDisp
// Flags:    (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:     {1B9A00ED-48E9-484B-93AA-F9B4CA08D10C}
// *********************************************************************//
  _SendStringDisp = dispinterface
    ['{1B9A00ED-48E9-484B-93AA-F9B4CA08D10C}']
    function SendString(const Text: WideString): WordBool; dispid 1610809344;
  end;

// *********************************************************************//
// DispIntf: __SendString
// Flags:    (4240) Hidden NonExtensible Dispatchable
// GUID:     {8740BD71-F829-4968-9BB9-B05520040384}
// *********************************************************************//
  __SendString = dispinterface
    ['{8740BD71-F829-4968-9BB9-B05520040384}']
  end;

implementation

uses ComObj;

end.
Nur hab ich jetzt das Problem, dass ich die "SendString"-Funktion nicht verwenden.

Wenn ich z. B. die Funktion so aufrufe:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  SendString(Edit1.Text);
end;
bekomm ich diese Meldung:
Zitat:

[Fehler] Unit1.pas(29): Anweisung erforderlich, aber Ausdruck vom Typ '_SendString' gefunden
Wie muss ich die Funktion aufrufen?

mkinzler 13. Jun 2007 21:01

Re: Funktion aus ActiveX verwenden
 
Es handelt sich ja nicht um eine (freie) Funktion, sondern um ein COM-Objekt mit einer gleichlautender Methode

Helmi 13. Jun 2007 21:02

Re: Funktion aus ActiveX verwenden
 
heisst das man kann sie nicht verwenden?

mkinzler 13. Jun 2007 21:04

Re: Funktion aus ActiveX verwenden
 
Doch, aber nicht so, wie du es probiert hast.

Helmi 13. Jun 2007 21:05

Re: Funktion aus ActiveX verwenden
 
Zitat:

Zitat von mkinzler
Doch, aber nicht so, wie du es probiert hast.

Dann verrate mir doch bitte wie man das macht :roll:

mkinzler 13. Jun 2007 21:15

Re: Funktion aus ActiveX verwenden
 
So ähnlich
Delphi-Quellcode:
var
    send: SendString;
...

    send := CLASS_SendString.Create;
    send.sendstring( ...

Helmi 13. Jun 2007 21:21

Re: Funktion aus ActiveX verwenden
 
Leider hängts an dem Create

mkinzler 13. Jun 2007 21:29

Re: Funktion aus ActiveX verwenden
 
Dann versuch es mal ohne Create

Helmi 13. Jun 2007 21:34

Re: Funktion aus ActiveX verwenden
 
Hier mal mein Code:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  send: SendString;
  s: string;

begin
  send := CLASS_SendString;

  s := edit1.Text;

  send.SendString(s);
end;
Aber bei "send := ClASS_SendString" erhalt ich folgende Meldung:
Zitat:

[Fehler] Unit1.pas(33): Inkompatible Typen: 'TGUID' und '_SendString'

mkinzler 13. Jun 2007 21:35

Re: Funktion aus ActiveX verwenden
 
Ich meinte die Zeile.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:40 Uhr.
Seite 1 von 2  1 2      

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