Erläuterung einer Funktion
-
Hallo,
habe folgende Funktionchar IO1388_GetCardNumber(unsigned char *Anzahl)
Dazu folgende Beschreibung
Diese Funktion liefert die Anzahl der installierten Karten in der Variablen Anzahl zurück.Meine Frage: Der Rückgabewert ist ein char-Typ, aber was muß ich übergeben?
Muß ich einen Pointer deklarieren der *Anzahl lautet?
Kann mir einer nen Beispiel geben wie ich diese Funtkion aufrufe in meinen
Programm?Gruß
_bob_
-
Du musst einen Zeiger auf eine unsigned char Variable übergeben, also etwa wie:
unsigned char anz; IO1388_GetCardNumber(&anz);
Ansonsten würde ich dir noch ans Herz legen, dich etwas mit den C/C++ - Grundlagen zu beschäftigen, da Zeiger ein grundlegendes Element davon sind.
-
Pointer-Variablen sind mir schon ein Begriff, aber wenn du seit Tagen vor ein und dem selben Problem sitzt, fragst du dich irgendwann ob du es auch richtig verstanden hast? Deswegen auch hier die einfache Frage und Dank für jede Antwort.
unsigned char Anzahl; Edit1->Text=IO1388_GetCardCount(&Anzahl);
jetzt bekomme ich folgende Fehlermedldung vom Compiler?
[Linker Fehler] Unresolved external 'IO1388_GetCardCount' referenced from E:\BORLAND-TEST\UUNIT1.OBJich habe wohl irgendwie die Funktion nicht richtig deklariert?
so habe ich sie in mein Projekt eingebunden!
[/cpp]extern "C" __declspec (dllimport) char __stdcall IO1388_GetCardCount (unsigned char *Anzahl);[/cpp]In der Header-Datei zur DLL ist die Funktiuon folgend beschrieben.
#ifndef _IO1388_ #define _IO1388_ /********************************************************** *** Functions *** **********************************************************/ #ifdef __cplusplus extern "C" { #endif __declspec (dllimport) char __stdcall IO1388_GetCardCount (unsigned char *Anzahl);
Kannst du mir noach einen Tip geben, bin für jede Hilfe dankbar
-
Hast du die DLL richtig zu deinem Projekt hinzugefügt? Ansonsten musst du alle .obj Dateien löschen und komplett neu kompilieren, das hilft manchmal.
Und wenn ich es richtig verstanden habe, steht die Anzahl jetzt in der Variablen "Anzahl", du brauchst den Rückgabewert also keinem Text zuzuweisen. Ich vermute mal, dass es sich dabei um irgendeine Art Fehlercode handelt, aber so genau kenne ich deine DLLs nun auch wieder nicht.
-
Hallo
unsigned char anz; IO1388_GetCardNumber(&anz);
besser waere doch so etwas
unsigned char *anz = "uebergabe Text an 1388_GetCardNumber "; IO1388_GetCardNumber(&anz);
darauf deutet doch
__declspec (dllimport) char __stdcall IO1388_GetCardCount (unsigned char *Anzahl);
ganz klar hin
(oder irre ich mich daMfG
Klaus
-
@KlausB: Ich glaube du irrst... Der Trick des Zeigers ist ein Call by Reference und hat in diesem Fall nxi mit nem String zu tun. Daher auch unsigned char. Offensichtlich ist die maximale Anzahl 255.
@_bob_: Hast du keine Framework Doku oder sowas?
-junix