25. april 2009 - 21:56
Der er
13 kommentarer og 1 løsning
Læse .ini fil i C++
Hej. Jeg ønsker at læse indholdet af en .ini fil, hvor jeg selvfølgelig gerne vil gemme de enkelte værdier seperat. Altså hvis jeg fx. har en .ini fil med: NUM_ROWS = 5 NUM_HUL = 23 SK5 = true SK6 = false Vil jeg jo så gerne have en streng med værdien fra hhv. NUM_ROWS, NUM_HUL, SK5 og SK6. Hvordan kan jeg gøre dette mest simpelt? På forhånd tak.
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
25. april 2009 - 23:28
#1
Du skal bruge GetPrivateProfileString og GetPrivateProfileInt. Jeg kan prøve at bixe et eksempel.
25. april 2009 - 23:31
#2
Det ville være super, hvis du kunne bixe et eksempel.
25. april 2009 - 23:47
#3
demo.ini -------- [Demo] NUM_ROWS = 5 NUM_HUL = 23 SK5 = true SK6 = false demo.cpp -------- #include <iostream> using namespace std; #include <windows.h> int main() { cout << GetPrivateProfileInt("Demo", "NUM_ROWS", 1, "C:\\demo.ini") << endl; cout << GetPrivateProfileInt("Demo", "NUM_HUL", 1, "C:\\demo.ini") << endl; char buf[100]; GetPrivateProfileString("Demo", "SK5", "*", buf, sizeof(buf), "C:\\demo.ini"); cout << buf << endl; GetPrivateProfileString("Demo", "SK6", "*", buf, sizeof(buf), "C:\\demo.ini"); cout << buf << endl; return 0; }
25. april 2009 - 23:48
#4
Koden bliver lidt mere tricky hvis du bruger UNICODE !
25. april 2009 - 23:56
#5
Well... Jeg får fejlen: .\test890000.cpp(11) : error C2664: 'GetPrivateProfileIntW' : cannot convert parameter 1 from 'const char [5]' to 'LPCWSTR' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
26. april 2009 - 00:22
#6
Så bruger du unicode .... Jeg kigger på det.
26. april 2009 - 00:30
#7
#include <iostream> using namespace std; #define UNICODE #define _UNICODE #include <windows.h> #include <tchar.h> int main() { cout << GetPrivateProfileInt(_T("Demo"), _T("NUM_ROWS"), 1, _T("C:\\demo.inI")) << endl; cout << GetPrivateProfileInt(_T("Demo"), _T("NUM_HUL"), 1, _T("C:\\demo.inI")) << endl; TCHAR buf[100]; char buf2[100]; GetPrivateProfileString(_T("Demo"), _T("SK5"), _T("*"), buf, sizeof(buf)/sizeof(TCHAR), _T("C:\\demo.inI")); wcstombs(buf2, buf, sizeof(buf2)); cout << buf2 << endl; GetPrivateProfileString(_T("Demo"), _T("SK6"), _T("*"), buf, sizeof(buf)/sizeof(TCHAR), _T("C:\\demo.inI")); wcstombs(buf2, buf, sizeof(buf2)); cout << buf2 << endl; return 0; }
26. april 2009 - 10:42
#8
Ser ud til at virke som det skal. Mange, mange tak. Og smid et svar hvis du vil have lidt point. Dem fortjener du i hvert fald.
26. april 2009 - 14:48
#9
Jeg har desuden lige ét spørgsmål til. Hvordan kan jeg få den til at hente oplysninger fra den .ini fil der ligger i samme mappe som selve .exe filen?
26. april 2009 - 16:47
#10
svar
26. april 2009 - 16:53
#11
char fnm[300]; getcwd(fnm, sizeof(fnm)); strcat(fnm, "\\demo.ini");
26. april 2009 - 16:54
#12
Du skal så eventuel lige konvertere den om fra ANSI til UNICODE med mbstowcs.
26. april 2009 - 16:55
#13
Jeg kigger lige på det sidste lidt senere. Men endnu engang tak :)
26. april 2009 - 17:49
#14
Det virker perfekt. Tak.
Kurser inden for grundlæggende programmering