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