Das Notes Forum
Domino 9 und frühere Versionen => Administration & Userprobleme => Thema gestartet von: Bullpack am 25.10.02 - 16:29:31
-
Hallo !
Ich habe unerwartete Probleme eine String Übergabe an eine Dll sauber umzusetzen!
Hat jemand von Euch Erfahrung in solchen Dingen ? Oder gibt es eine gute Onlinebeschreibung für solch ein Themengebiet ?
Hintergrund ist eine Anbindung an ein Archivsystem. Ich möchte aus Lotus Notes einige Parameter inclusive einer Datei (oder mehrerer) an eine Dll weitergeben, die eine Archivierung durchführt, und mir als Antwort einen Success Code und eine DokumentenID liefert.
Nur leider liefert mir die Dll (sie funktioniert in einem Simulierten C++ Umfeld tadellos !) nur Schrott.
Scheinbar liegt es an der Formatierung der Stringausgabe ...
Grüße
BullPack :'(
-
Normalerweise kommt sowas bei einer Typenunverträglichkeit zwischen DLL Prozedur und übergebenem Wert vor.
Prüfe noch mal, wie der Parameter in der DLL declariert ist.
eknori
-
Hi,
Stringvariablen, die an ein DLL übergeben werden sollen, müssen meines Wissens mit fester Länge in Script deklariert werden.
Ich hab so was vor längerer Zeit mal mit einer DLL, die mit Delphi erstellt wurde, gemacht.
Ich kram' mal ein bisschen auf meiner Platte, vielleciht finde ich den LotusScript-Code noch.
Axel
-
Hi,
ich bin fündig geworden. Hier die entsprechenden Stellen aus dem Code eines Agenten:
(Declaration)
Declare Function LieferungNeu Lib "Bestellung.dll" (Byval Lieferant As String, Byval LNr As String, Byval LDatum As String, Byval Bemerkung As String) As Integer
Initialize
...
Dim LNr As String * 20
Dim LDatum As String * 12
Dim Bemerkung As String * 100
Dim Nummer As String * 10
Dim Position As String * 10
Dim Bezeichnung As String * 100
Dim Menge As String *10
Dim GMenge As String *10
Dim LMenge As String * 10
REM ** Initialisierung der Übergabevariablen für DLL**
Nummer = ""
Position = ""
Bezeichnung = ""
Menge = ""
GMenge = ""
LMenge = ""
LNr = ""
LDatum = ""
Bemerkung = ""
...
REM ** Anlegen eines neuen Dokumentes (Lieferschein) und füllen der Felder **
res = LieferungNeu(Lieferant, LNr, LDatum, Bemerkung) 'Funktion aus DLL aufrufen.
If res = 0 Then
Set newdoc = New NotesDocument(db)
newdoc.Form = "Lieferungen"
newdoc.LScheinNummer = Rtrim(LNr)
newdoc.LDatum = Rtrim(LDatum)
newdoc.LLieferant = Lieferant
newdoc.LBemerkungen = Rtrim(Bemerkung)
Call newdoc.Save(True, True)
Else
Exit Sub
End If
...
Axel
-
;D
Danke Vielmals!
Ich denke das sollte jetzt klappen !
THX!
BullPack