Stringtable / #define / GetPrivateProfileString()



  • Hallo,
    habe folgendes Problem:
    VS 6.0 / MFC - Dialogfeldbasierend

    Möchte Variablen (z.B. TS_SCHNITTSTELLE) im gesamten Programm ein CSTRING (char) - Wert (z.B. "Data Link") zuweisen.
    Bsp.:

    #define TS_SCHNITTSTELLE           "Data Link"
    #define S_CAN_MODE                 "CAN-Mode"
    .....
    

    Weise ich diese Werte allerdings mit "#define" zu, so kann ich diese dann nicht der Funktion

    GetPrivateProfileString(TS_SCHNITTSTELLE,S_COM_AKTIV, false, (char*)Einstell->C_Bitfeld1.CAN_COM,30,Directory + "\\" + Dateiname + ".ini");
    

    übergeben.

    Übergebe ich der Funktion allerdings per Hand die CSTring-Werte (Data Link & CAN-Mode)

    GetPrivateProfileString("Data Link","CAN-Mode", false, (char*)Einstell->C_Bitfeld1.CAN_COM,30,Directory + "\\" + Dateiname + ".ini");
    

    funktioniert alles perfekt.

    Wie kann ich das lösen? Über Stringtables vielleicht? Allerdings möchte ich den Aufruf über z.B. "TS_SCHNITTSTELLE" und nicht über irgendeine ID (z.B.105) etc. gestalten können.

    Vielen Dank für Eure Hilfe. Bin echt bisschen planlos momentan.

    Gruss
    S. 😕



  • Zunächst einmal definierst Du keine CStrings, sondern char*.

    Bei Deinen defines ersetzt der Compiler lediglich die Angabe TS_SCHNITTSTELLE durch "Data Link". Das ist also völlig identisch. Ansonsten weicht der zweite Code vom ersten durch S_COM_AKTIV ab, definiert ist aber S_CAN_MODE als "CAN-Mode".

    Liegts vielleicht daran?



  • Fehler beim Sprachwechsel...... 🙄

    Trotzdem Danke für die Hilfe.

    Gruss
    S.


Anmelden zum Antworten