WriteProfileString überschreibt nicht?



  • The system keeps a cached version of the most recent registry file mapping to improve performance. If all parameters are NULL, the function flushes the cache. While the system is editing the cached version of the file, processes that edit the file itself will use the original file until the cache has been cleared.



  • Naja, wenn ich weiß, dass eine Funktion tut, was ich will - dann nehme ich die und gucke nicht, ob es eine neue Version gibt.
    Was wäre die neue?
    Oder ist das etwa dieses riesenkomplizierte Geraffel mit HKEY und wasauchimmer? Naja, Copy&Paste macht es etwas einfacher. 🙄

    Den englischen Satz habe ich leider überhaupt nicht verstanden.
    Ich kenne die Worte, aber sie ergeben keinen Sinn den ich mit meinem Problem in Zusammenhang bringen könnte. 😞

    PS: Ich hantiere noch unter Win98, alles muss unter 98 laufen (ein Glück, von DOS konnten wir gleich zu 98 übergehen...)
    Deswegen mache ich mir nicht die Mühe, nach neuen Sachen zu gucken, denn zu oft kann ich die dann doch nicht nutzen. 😞
    Ich weiß auch, dass mir das Mal das Genick bricht, wenn ich in einem anderen Projekt in einer moderneren Firma lande... aber das ist nicht jetzt. 😉



  • Den englischen Satz habe ich leider überhaupt nicht verstanden.

    Die Informationen werden nicht direkt in die Registry geschrieben, sondern erst mal nur in einem Cache zwischengespeichert. Wenn du diesen Cache wirklich in die Registry schreiben willst (flushen), musst du offenbar WriteProfileString(NULL, NULL, NULL) aufrufen.



  • Das habe ich gerade mal versucht.

    VERIFY(WriteProfileString(NULL, NULL, NULL));
    

    Folgender ASSERT meldet sich:

    BOOL CWinApp::WriteProfileString(LPCTSTR lpszSection, LPCTSTR lpszEntry,
    			LPCTSTR lpszValue)
    {
    	ASSERT(lpszSection != NULL); // <----
    //...
    }
    

    Also klappt das so schon mal nicht. 😞

    Wie wird es denn nun eigentlich gemacht, wenn nicht mit diesen Funktionen? 🙂



  • estartu_de schrieb:

    Also klappt das so schon mal nicht. 😞

    Kann auch nicht. Die "Flush"-Version des Aufrufs gibt unter 9x/ME immer FALSE zurück, also darfst du da nicht VERIFY benutzen.

    Wie wird es denn nun eigentlich gemacht, wenn nicht mit diesen Funktionen? 🙂

    Ich nehme an, mit den Reg...-Funktionen.



  • MFK schrieb:

    estartu_de schrieb:

    Also klappt das so schon mal nicht. 😞

    Kann auch nicht. Die "Flush"-Version des Aufrufs gibt unter 9x/ME immer FALSE zurück, also darfst du da nicht VERIFY benutzen.

    Das VERIFY war unschuldig, es geht auch ohne nicht.

    Wie wird es denn nun eigentlich gemacht, wenn nicht mit diesen Funktionen? 🙂

    Ich nehme an, mit den Reg...-Funktionen.

    Also die Teile, die ich so kompliziert finde.
    Schade, dann werde ich das mal komplett umbauen. 🙄



  • Halt, du benutzt ja CWinApp::WriteProfileString!

    Das ist nicht nur aus Kompatibilitätsgründen drin.



  • Kommando zurück, mein Fehler...
    Ich hatte ein Update bzw. einen Knopf zu drücken vergessen.

    Jetzt geht es auch mit den "Oldies". 🙂
    Dann lasse ich das so, denn die nehmen mir wahnsinnig viel Arbeit ab.



  • MFK schrieb:

    Halt, du benutzt ja CWinApp::WriteProfileString!

    Das ist nicht nur aus Kompatibilitätsgründen drin.

    Auf das bin ich umgestiegen, als ich mit dem anderen Castprobleme hatte. 😃
    Danke nochmal, jetzt geht es. 🙂



  • OK, dann nur noch der Vollständigkeit halber:

    ::WriteProfileString(NULL, NULL, NULL);
    

    Das sollte den Cache flushen.


Anmelden zum Antworten