Dateipfad aus einer INI Datei auslesen



  • Hallo!!

    Ich habe folgendes Problem:

    Ich versuche einen Dateipfad der in einer INI Datei abgelegt ist zu lesen und in einer Variablen zu speichern. Später muss ich den Pfad wieder als String vorliegen haben.

    Code aus der INI Datei:

    [filename]
    
    dB_File  = MSCGR1.DIR\\M2SS_X_0.MS1		  ; Dateipfad der Messdaten Frequenzgang
    deg_File = MSCGR2.DIR\\M2SS_X_0.MS2		  ; Dateipfad der Messdaten Phasengang
    

    Die Variablen des folgenden C-CodesDB_FILE_NAME und DEG_FILE_NAME werden später als Zeichenfolge benötigt. Ein weiteres Problem ist, dass er das Kommentar in der INI Datei mitliest. Entweder es gibt einen Weg das Komentar abzuschneiden oder gar nicht erst einzulesen.

    Code im C-Programm:

    char	*pDefault			= "33";
            char	*pIniPath			= "C:\\defines.ini";
    	char	*pFilename			= "filename";
    	char	*pKp				= "kp";
    	char	*pPhaseshift		        = "phaseshift";
    	char	*pCalcKp			= "calcKp";
    	char	*pFilter			= "filter";
    
    	char	*pValue				= (char*) malloc(30);
    	int     iSizeValue			= 30;
    
    GetPrivateProfileString (pFilename, "dB_File", pDefault, pValue, iSizeValue, pIniPath);
     :warning: 	DB_FILE_NAME  = pValue; // hier soll PValue dauerhaft gespeichert werden
    
    GetPrivateProfileString (pFilename, "deg_File", pDefault, pValue, iSizeValue, pIniPath);
    :warning:  DEG_FILE_NAME = pValue; // hier soll PValue dauerhaft gespeichert werden
    
    // [Kp]
    	GetPrivateProfileString (pKp, "UNDER_MAX_DB", pDefault, pValue, iSizeValue, pIniPath);
    	UNDER_MAX_DB   = atof(pValue);
    
    	GetPrivateProfileString (pKp, "UPPER_MAX_DB", pDefault, pValue, iSizeValue, pIniPath);
    	UPPER_MAX_DB   = atof(pValue);
    
    ...
    

    Anschließend sollen die globalen Variablen mit den Dateipfaden an eine Funktion mit folgendem Prototyp übergeben werden:

    bool readFile (char *ein_datei);
    
    //Funktionsaufruf:
    
    bool readFile(DB_FILE_NAME)
    {
    
        ....
    }
    

    Danke für Eure Hilfe!!!



  • hi,
    bin nicht ganz sicher ob ich dich richtig verstanden hab...

    1. wie sind DB_FILE_NAME und DEG_FILE_NAME definiert?
    wenn das strings sind versuchs mal so:

    GetPrivateProfileString (pFilename, "dB_File", pDefault, pValue, iSizeValue, pIniPath);
          DB_FILE_NAME  = *pValue; // inhalt des pointers zuweisen
    
    GetPrivateProfileString (pFilename, "deg_File", pDefault, pValue, iSizeValue, pIniPath);
      DEG_FILE_NAME = *pValue; // ohne '*' übergibst du die speicheradresse
    

    2. ob es ein zeichen für den kommentar gibt weiß ich nich,
    ich schreib den immer eine zeile tiefer ^^

    [filename]
    
    dB_File  = MSCGR1.DIR\\M2SS_X_0.MS1          
        # Dateipfad der Messdaten Frequenzgang
    deg_File = MSCGR2.DIR\\M2SS_X_0.MS2          
        # Dateipfad der Messdaten Phasengang
    

    oder du bearbeitest den str vorm verwenden nochmal
    "strchr" zum suchen von zeichen...

    mfg


Anmelden zum Antworten