Einzelnen Beitrag anzeigen

Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#1

DLL Einbindung in VB, VBA bzw. Lotus-Script

  Alt 7. Okt 2003, 10:03
Ich habe eine dll mit Delphi erstellt und will diese nun z.B. in VBA nutzen,

Exports meiner dll
Delphi-Quellcode:
...
exports
  GetMails(Mails: PChar; KillDuplicates, RealNameEnabled, RealNameSimulated,
    FromOutlook, FromOpera, FromNetscape, FromLotusNotes, FromEudora, FromPegasus:
    boolean)name 'GetMails',
  GetMails(Mailfile: string; KillDuplicates, RealNameEnabled, RealNameSimulated,
    FromOutlook, FromOpera, FromNetscape, FromLotusNotes, FromEudora, FromPegasus:
    boolean)name 'GetMails_File';
...
GetMails_File habe ich momentan als Work-Around für VB in meinem Projekt, da ich keien Plan habe wie ich in VB mit Pointern (Mails: PChar) umgehen soll. Deshalb schreibe ich den text jetzt in eine Datei die man nach dem Aufruf einlesen kann:
Code:
Declare Function GetMails Lib "localmail.dll" Alias "GetMails_File" (ByVal Mialfile As String, ByVal KillDuplicates As Integer, ByVal RealNameEnabled As Integer, ByVal RealNameSimulated As Integer, ByVal FromOutlook As Integer, ByVal FromOpera As Integer, ByVal FromNetscape As Integer, ByVal FromLotusNotes As Integer, ByVal FromEudora As Integer, ByVal FromPegasus As Integer) As Integer

Sub ReadMails()
    Dim txt As String
    Dim fileName As String
    Dim fileNum As Integer
    Dim counter As Integer
    ReDim Mails(0) As String
   
    txt$ = ""
    fileName = "MyMails.txt"
    fileNum% = FreeFile()
    counter% = 0
   
    GetMails fileName, 1, 1, 1, 1, 1, 1, 1, 1, 1
    Open fileName For Input As fileNum%
    Do While Not EOF(fileNum%)
        ReDim Preserve Mails(counter%) As String
        Line Input #fileNum%, txt$
        Mails(counter%) = txt$
        counter% = counter% + 1
    Loop
    Close fileNum%
   
    For n = 0 To counter - 1
        MsgBox Mails(n)
    Next

    Kill fileName
End Sub
Hat jemand eine Idee, wie ich die Sache ohne die Textdatei lösen könnte (also über PChar -> 1. Export der dll)? Wenn ich versuche die Funktion mit dem Pointer aufzurufen crasht mir jedenfalls VBA bzw. Lotus-Notes ...
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat