Folgendes Problem: In meiner delphi
dll kommen einfach nicht alle drei Parameter an. Entweder es kommen docid und arcid an oder nur notiztx.
Wenn ich erst die Zuweisung mit GetChar mache und danach die einzelnen Werte aus der Tabelle auslese - dann kommen die Werte aus der Tabelle an (notiztx)
Wenn ich nun erst die Werte aus der Tabelle auslese und dann die beiden Zuweisungen mit GetChar mache - dann kommen docid und arcid an
Der jeweils fehlende Wert ist leer und das verstehe ich einfach nicht. Man sieht ja, wenn man beide Varianten ausprobiert, dass er richtige Werte übergibt, nur nicht alle drei. Hat jemand irgendeine Ahnung, woran das liegen könnte? Das Programm an sich läuft ohne Probleme durch und bricht auch nicht ab.
relevante übergebene Parameter
ITAB_H thItNotiz - das ist das
Handle auf eine interne Tabelle
ZRWF_INV1_ARCHIV_ID *iIArchivId - Typ RFC_CHAR
ZRWF_INV1_ARC_DOC_ID *iIArchivDocId - Typ RFC_CHAR
Code:
RFC_RC WIN_DLL_EXPORT_FLAGS z_zrwf_notizen(RFC_HANDLE hRfc
,ZRWF_INV1_ARC_DOC_ID *iIArchivDocId
,ZRWF_INV1_ARCHIV_ID *iIArchivId
,ITAB_H thItNotiz)
{
unsigned int crow;
char * lpt;
int i;
int len;
//an die Variablen kommen, um diese zu übergeben
char docId[100];
char arcId[100];
char notiz[1024];
char notiztx[1024];
//leer initialisieren
notiztx[0] = '\0';
notiz[0] = '\0';
docid[0] = '\0';
arcID[0] = '\0';
//von RFC_CHAR nach CHAR umwandeln
GETCHAR(*iIArchivDocId, docId);
GETCHAR(*iIArchivId, arcId);
//die Tabelle auslesen
for (crow = 1;crow <= ItFill(thItNotiz); crow++) {
lpt = (char *) ItGetLine(thItNotiz, crow);
len = strlen(lpt)+1;
memcpy( notiztx, (char *) ItGetLine( thItNotiz, crow ), len);
notiztx[len] = '\0';
}
//
dll laden und benutzen
HMODULE
handle;
handle = LoadLibrary("notiz.dll");
if (
handle != NULL)
{
typedef char (*DLLFUNC)(char*, char*, char*);
DLLFUNC func = (DLLFUNC)GetProcAddress(
handle, "anhaengen");
if (func != NULL)
{
i = func(docId, arcId, notiztx);
}
}
FreeLibrary(
handle);
//
dll ist wieder freigegeben
}