Announcement

Collapse
No announcement yet.

SOS: Mehrere PChar-Parameter über DLL an Excel

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SOS: Mehrere PChar-Parameter über DLL an Excel

    Hallo DLL-Experten!

    Ich möchte die Ergebnisse einer Berechnung aus einer Delphi 5 - Procedure mit mehreren Variablen-Parametern (PChar, Double und LongInt) über eine DLL an Excel 2000 übergeben.

    Dabei habe ich alle mir bekannten Ratschläge des Entwickler-Forums beachtet, dennoch stürzt Excel regelmäßig ab. Manchmal konnte ich einige der Parameter in Excel sehen, jedoch niemals den ersten Text. Seit einigen Stunden kommt nur eine lapidare Fehlermeldung, wonach die Anweisung in „0x778cd91f“ verweist auf den Speicher in „0xc60440c7“ und Excel verabschiedet sich lautlos.

    Das Buch „Delphi Win32 Lösungen“ konnte mir leider auch nicht weiter helfen.

    Wer könnte mir helfen? Ich bin kurz vor der Verzweiflung!

    Danke im Voraus!

    Gruß, Andreas Bittner

    Anbei das komplette Delphi- und Excel-Listing:

    Delphi:
    <PRE>
    library Excel_Test_DLL; <BR>

    uses
    SysUtils, Classes, Windows;

    Procedure StringTransfer1(VAR S1, S2, S3, S4: PChar; Var Z1, Z2 : Double; VAR I1, I2 : LongInt); stdcall;
    Begin
    S1 := 'Das ist der erste Text als PChar';
    S2 := 'Das ist der zweite Text als PChar';
    S3 := 'Das ist der drittre Text als PChar';
    S4 := 'Das ist der vierte Text als PChar';
    Z1 := 1111.11111;
    Z2 := -0.2222222;
    I1 := 504;
    I2 := 2050;
    end;

    exports
    StringTransfer1 ;

    begin
    end.

    Excel:

    Declare Sub StringTransfer1 Lib "D:\Eigene Dateien\DELPHI\MyDLLs\Excel_Test_DLL.dll" _
    (S1 As String, _
    S2 As String, _
    S3 As String, _
    S4 As String, _
    Z1 As Double, _
    Z2 As Double, _
    I1 As Long, _
    I2 As Long)

    Sub TestStringTransfer1()
    Dim SS1 As String
    Dim SS2 As String
    Dim SS3 As String
    Dim SS4 As String
    Dim ZZ1 As Double
    Dim ZZ2 As Double
    Dim II1 As Long
    Dim II2 As Long

    StringTransfer1 SS1, SS2, SS3, SS4, ZZ1, ZZ2, II1, II2
    MsgBox SS1
    MsgBox SS2
    MsgBox SS3
    MsgBox SS4
    MsgBox ZZ1
    MsgBox ZZ2
    MsgBox II1
    MsgBox II2
    End Sub

    </PRE>

  • #2
    Hallo,

    &gt;Das Buch „Delphi Win32 Lösungen“ konnte mir leider auch nicht weiter helfen.

    für diesen Fall ist das Buch <i>COM/DCOM/COM+ mit Delphi</i> besser geeignet. Die ganzen Probleme mit den unterschiedlichen Datentypen (speziell für Strings) verschwinden, wenn der komplette Aufwand der Datentyps-Konvertierung an den Standard-Marshaler von Windows delegiert wird. Anstelle einer DLL wird ein COM-Objekt als In-Process-Server in Gestalt einer DLL kompiliert.

    Speziell für alle Anwendungen der MS Office-Produktreihe hat Microsoft mit dem COM-Interface <b>IDTExtensiblity2</b> (in Delphi: _IDTExtensibility2) einen einfachen Anbindungsweg zur Verfügung gestellt, so dass die eigene DLL (COM-Objektinstanz) direkt auf die Excel-Objekte zugreifen kann

    Comment


    • #3
      Hallo,

      danke für den Tipp, das Buch habe ich bereits bestellt und werde mein Glück erneut versuchen.

      Gruß, A. B

      Comment

      Working...
      X