Daten werden falsch in der Ini Datei ausgegeben
-
Hallo! Ich hab ein kleines Problem! Und zwar was muss ich tun um die Daten in einer Inidatei ändern zu können! Ich schreibe das Programm mit Visual C++ 6 Autoren Edition. Ich habe mit WriteProfileString die Daten eingelesen und mit GetProfileString die Daten Ausgeben wollen! Den er schreibt die Strings immer am Ende der Datei dazu. Ich weiß, dass der Befehl fopen schuld daran ist! Aber ich brauch den Befehl um in die Ini Datei mit dem Befehl fprintf reinzuschreiben! Wisst ihr wie ich das meine? Wenn nicht! Hier ein kleines Beispiel:
[GLOBALS]
GPIB=DUMMYso das "DUMMY" möchte ich jetzt in einen anderen Wert umändern z.b. in Monitor. Das er das so in der Inidatei ausgibt!
[GLOBALS]
GPIB=MonitorIch schicke euch einen Teil des Codes den ich geschrieben habe!
case WM_COMMAND:
TCHAR szText [1024];GetWindowText (hEdit, szText, strlen (szText));
// Druch Drücken der Schaltfäche werden
// die Daten in die Datei geschrieben
if (LOWORD (wParam) == ID_BUTTON)
{
file = fopen ("utm.ini", "a");
if (file == NULL)
{
MessageBox (NULL, "Die Datei konnte nicht geöffnet werden!", szAppName, MB_ICONERROR);
}
else
{WritePrivateProfileString ("GLOBALS", "GPIB", szText, "utm.ini");
GetPrivateProfileString ("GLOBALS", "GPIB", "DUMMY", szText, strlen (szText) + 1, "utm.ini");
fprintf (file, "%s", szText);
}}
return 0;
-
Irgendwie versteh ich dich nicht. Wieso fopen Inidatei?
WritePrivateProfileString beschreibt doch die ini Datei. Du schreibst also 2mal rein.
Ausserdem könnt ich mir vorstellen, dassfile = fopen ("utm.ini", "a"); WritePrivateProfileString ("GLOBALS", "GPIB", szText, "utm.ini");gar net geht, da die Datei bereits geöffnet und somit zum schreiben blockiert ist.
-
Und wie mach ich das? Gibt es dafür eine Lösung? Wenn ich jetzt den Befehl fopen und fprintf auskommentiere dann schreibt er überhaupt nix heinein, wenn ich aber dem Compiler diese Befehle mitgebe schreibt er die Daten am Schluss der Datei dazu und das ist mein Problem!
Bin also Typischer Anfänger in der Windows Programmierung!
Ich bin für jeden Vorschlag zu haben! Lg. Thomas
-
Guck dir doch mal die Datei utm.ini in deinem Windows-Verzeichnis an.
-
Nun ja mit einbisschen Herumprobieren hab ich es doch noch geschaft! Bin jetzt vier lange Tage kurz vorm Verzweifeln gewesen jetzt hab ich einfach die Ini Datei in das Wurtzelverzeichniss kopiert und den letzten Parameter mit "c:\\utm.ini" die Datei Freigegeben das mit fopen war ein völliger Plötsinn von mir
Aber was will man von einem Windows Porgarmmier anfänger anders erwarten. Danke für deinen Beitrag
Hat mir auch sehr weitergeholfen! Lg. Thomas
-
Hallo noch mal
Ich hab gesehen das ich noch immer Hilfe brauche! Jetzt muss ich ein int in char umwandwandeln damit ich auch in den zweiten Parameter von GetPrivateProfileString schreiben kann! das geht doch mit einem cast oder nicht.
Bitte um Antwort!
Danke im Voraus Lg. Thomas
-
CString.Format
printf()
sprintf()kuckst du MSDN!!
-
Ich schick dir den code mit! Einmal schaun ob du mir eventuel Helfen kannst. Wie gesagt ich bin noch ein Anfänger in der Windows Programmierung!
Damit du weißt was ich meine.
case WM_COMMAND:
TCHAR szText [1024];
int i;GetWindowText (hEdit, szText, strlen (szText));
// Druch Drücken der Schaltfäche werden
// die Daten in die Datei geschrieben
if (LOWORD (wParam) == ID_WRITEBUTTON)
{
for (i = 1; i < 10; i++);
{
WritePrivateProfileString ("EDC", i, szText, "c:\\utm.ini");
GetPrivateProfileString ("EDC", i, "NONE1", szText, strlen (szText) + 1, "c:\\utm.ini");
}
}
return 0;Weißt du wie ich das meine?
Lg. Thomas
-
Ich weiß aber auch, dass das nicht geht. Denn Write bzw. GetPrivateProfileString erwartet im zweiten Parameter einen String. Ich hab mal gelesen das man Datentypen auch Konvertieren kann. Hab das auch schon versucht aber halt ohne Erfolg! Lg. Thomas
-
-
Danke jetzt gibt es keine Fehlermeldung mehr aus! Sorry das ich einwenig Quengle aber ihr müsst verstehen ich bin noch in der Ausbilung!
Hab ein Problem noch aber das werde ich jetzt mal selber lösen! Falls ich nicht draufkomme melde ich mich wieder! Danke nochmal für die Unterstützung! Lg. Thomas
-
Hy alle miteinander wollte nur wissen wie man eine Datei Speichern kann! Geht das mit einem Befehl oder muss man eine Klasse aufrufen? Dann hätte ich noch ne Frage: Wie kann man die Datei danach wieder Aktualisieren. Gruß Thomas