Erläuterung einer Funktion



  • Hallo,
    habe folgende Funktion

    char 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.OBJ

    ich 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.


  • Mod

    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 da 😕

    MfG
    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


Anmelden zum Antworten