Funktion gibts char nicht zurück



  • Hallo, ich habe eine Funktion die ich in der Main aufrufe:

    cDIR[100] = ReadINI(sKeyName);
    

    die Funktion gibt mir auch immer eine return wert zurück:

    char ReadINI (String sKey)
    {
      /*
    .
    .
    .
    .*/
    
       return result[100];
    }
    

    Aber leider steht, wenn die Funktion fertig ist und wieder in Main ist der wert nicht in der var : cDIR[100]

    jemand ne idee wieso !?



  • Du versuchst jetzt aber nicht einen ganzen String zu übergeben, oder?
    Denn du gibst da nämlich nur 1 Zeichen zurück.
    Edit: Btw wenn du nen String zurück geben willst dann nimm std::string das ist sicherer

    std::string ReadIni( string const & foobar )
    {
      std::string ret_val;
      /* do foo and assign a value to ret_val*/
      return ret_val;
    }
    


  • evilissimo schrieb:

    Du versuchst jetzt aber nicht einen ganzen String zu übergeben, oder?
    Denn du gibst da nämlich nur 1 Zeichen zurück.

    Ich übergebe doch nur der Funktion ein String.. damit soll es ja arbeiten und ich will später eine char das aber in der Funktion deklariren wird.

    char ReadINI (String sKey)
    {
       String sINIPath = GetCurrentDir()+ String("\\startprocess.ini");
       char result[100];
       ZeroMemory(result,100);
       DWORD destSize =100;
    
       GetPrivateProfileString("Process",sKey.c_str(),result,result,destSize,sINIPath.c_str());
    
       return result[100];
    }
    


  • Mach es doch so:

    String ReadINI (String sKey)
    {
       String sINIPath = GetCurrentDir()+ String("\\startprocess.ini");
       char result[100];
       ZeroMemory(result,100);
       DWORD destSize =100;
    
       GetPrivateProfileString("Process",sKey.c_str(),result,result,destSize,sINIPath.c_str());
    
       return String(result);
    }
    


  • Danke geht wunderbar, aber wieso geht das nicht direkt mit char !?



  • Weil man keine Arrays übergeben kann. Und man darf erst rechte keine Zeiger/Referenzen auf lokale Variablen zurückgeben wie es du versuchst.


Anmelden zum Antworten