Probleme mit WritePrivateProfileString



  • Hi,

    ich nutze Visual Studio 5 (komme aus der Delphi Ecke und habe von C++ sehr wenig Ahnung)

    Ich habe diesen Code ausprobiert um etwas in eine INI Datei zu schreiben.
    Kompiliert wird anstandslos. Egal ob test.ini vorhanden ist oder nicht, der Befehl wir einfach ignoriert.

    WritePrivateProfileString((LPCWSTR)"common",(LPCWSTR)"EinPfad",(LPCWSTR)"c:\\lol\",(LPCWSTR)"c:\test.ini");

    Kann mir jemand helfen?

    Grüsse
    Rainer



  • r2009 schrieb:

    ich nutze Visual Studio 5 (komme aus der Delphi Ecke und habe von C++ sehr wenig Ahnung)

    Ich hoffe du hast einen guten Grund dafür ein völlig veraltetes VS zu verwenden... Zudem ist WritePrivateProfileString kein Ansi C++ Code, sondern wenn wohl Win32 API (wofür es ein eigenes Unterforum gibt). Und grundsätzlich sollte man hier in zuerst die Onlinehilfe oder MSDN (Tip: Nach der ersten Suche auf die Programmiersprache einschränken UND Englische Ergebnisse einbeziehen) anschauen, wo der Befehl garantiert erklärt wird, und dann konkrete Fragen stellen.

    P.S: Nachdem ich die englischen Ergebnisse in der MSDN einbezogen habe (Den Punkt hatte ich erst übersehen) kommt als erster Treffer folgende Funktionerklärung mit Beispielen



  • Hi asc,

    Ich hoffe du hast einen guten Grund dafür ein völlig veraltetes VS zu verwenden... Zudem ist WritePrivateProfileString kein Ansi C++ Code, sondern wenn wohl Win32 API (wofür es ein eigenes Unterforum gibt). Und grundsätzlich sollte man hier in zuerst die Onlinehilfe oder MSDN (Tip: Nach der ersten Suche auf die Programmiersprache einschränken UND Englische Ergebnisse einbeziehen) anschauen, wo der Befehl garantiert erklärt wird, und dann konkrete Fragen stellen.

    Ich glaube nicht, dass es sehr höflich von Dir ist einen Newbi in diesem Forum auf diese Art und Weise anzumachen!
    1.) Ich habe durchaus überall, auch bei MS, (auch in englisch) gesucht gefunden und nicht verstanden.
    2.) Ich habe eine ganz einfache Frage gestellt! Vielleicht gibt es daruf auch eine ganz einfache Antwort.
    Dein Beitrag bringt mich keinen Schritt weiter.

    Grüsse
    Rainer





  • r2009 schrieb:

    Ich glaube nicht, dass es sehr höflich von Dir ist einen Newbi in diesem Forum auf diese Art und Weise anzumachen!
    1.) Ich habe durchaus überall, auch bei MS, (auch in englisch) gesucht gefunden und nicht verstanden.
    2.) Ich habe eine ganz einfache Frage gestellt! Vielleicht gibt es daruf auch eine ganz einfache Antwort.

    Das war durchaus keine Anmache sondern ein konstruktiver Beitrag, der dir vor allem einige Fehler aufgezeigt hat die eine zufriedenstellende Antwort erschweren:
    - du hast im falschen Forum gefragt
    - du hast nirgendwo erwähnt dass du die MSDN bereits zu Rate gezogen hast und nicht verstanden hast
    Du hast zwar eine einfache Frage gestellt, in dem Fall sogar zu einfach. Aus der einen Zeile kann man nicht entnehmen warum der Aufruf nicht funktionieren sollte. Also gibts auch keine (eifnache) Antwort.

    Lies dir am Besten den Thread "Du brauchst Hilfe" einmal durch. Es gehört sowieso nicht nur hier sondern überall im Internet zum guten Ton, sich erstmal zu informieren, das heißt insbesondere die mit wichtig gekennzeichneten Threads in Foren durchlesen, bevor man etwas schreibt. Die Kennzeichnung kommt nicht von ungefähr.
    Nachdem du das getan hast frag im richtigen Forum nochmal mit etwas mehr Informationen. Ich bin sicher, dass dir dort dann sehr viel besser geholfen werden kann.



  • Hallo pumuckl,

    ich empfinde ein solches Verhalten als völlig unkonstruktiv!
    Man kann doch nicht einfach davon ausgehen, dass jemand sich nicht informiert hat nur weil man das nicht hinausposaunt.

    Ebenso die Aussage, dass die Frage im falschen Forum sei!
    Das seh ich anders.

    Man kann doch auch, wenn jemand seinen ersten Beitrag in diesem Forum schreibt, etwas höflicher sein oder gehört es hier zum guten Ton, dass man erstmal angeschnauzt wird.

    Ein nettes "hallo neuer user" oder soetwas wäre viel angebrachter gewesen.

    Nebenbei bemerkt funktionieren alle diese schlauen Links nicht.

    Grüsse
    Rainer



  • r2009 schrieb:

    Ich glaube nicht, dass es sehr höflich von Dir ist einen Newbi in diesem Forum auf diese Art und Weise anzumachen!

    1. Habe ich keinen angemacht.
    Ich glaube du solltest erstmal sehen wie hier einige mit Anfängern in der Vergangenheit verfahren sind (es gibt einige Threads mit Beleidigungen etc.).

    2. Fragen können nur beantwortet werden, wenn man zum einen die Problemstellung versteht, und zum Anderen auch eine Frage gestellt bekommt, die man sinnvoll beantworten kann.

    Dies wird durch 3 Faktoren stark vereinfacht:
    a) Wahl des richtigen Forums/Unterforums. Den in der Regel kennen sich die am besten mit einem Problem aus, die sich auch mit der Thematik beschäftigen.
    b) Problem zwar knapp, aber dennoch so ausführlich wie nötig beschreiben.
    c) Konkrete Fragen stellen.

    r2009 schrieb:

    1.) Ich habe durchaus überall, auch bei MS, (auch in englisch) gesucht gefunden und nicht verstanden.

    Du hast dir aber scheinbar nicht die Mühe gemacht mal das Beispiel anzuschauen - zumindest erscheint dies mir so.

    Zum anderen, und das ist wirklich nicht böse gemeint:
    Wenn du ein Anfänger bist, kann ich dir nur vor der Win32 API abraten, und dir empfehlen, erst einmal die C++ Grundlagen soweit wie möglich zu verinnerlichen.

    Dafür gibt es zwei Gründe:
    a) Die Win32 API ist schlechter C-Code, die Gefahr ist nicht gering das man sich diesen Stil angewöhnt.
    b) Die Win32 API ist komplex, man sollte sich bereits sicher auf den Beinen bewegen, bevor man zu Laufen anfängt.

    r2009 schrieb:

    2.) Ich habe eine ganz einfache Frage gestellt! Vielleicht gibt es daruf auch eine ganz einfache Antwort.

    Ungetestet:

    WritePrivateProfileString(
      TEXT("common"),
      TEXT("EinPfad"),
      TEXT("c:\\lol\\"),
      TEXT("c:\\test.ini"));
    


  • r2009 schrieb:

    Ebenso die Aussage, dass die Frage im falschen Forum sei!
    Das seh ich anders.

    So, jetzt werde ich wirklich pampig. Lesen sollte man schon können, eine Kritik wegstecken auch. Und wenn man dich darauf hinweist, das du im falschen Forum bist, dir auch noch das richtige nennt, brauchst du darauf auch nicht herum zu reiten, da es der Tatsache entspircht.

    Aus dem Einleitungstext dieses Unterforums:

    Hier könnt ihr Fragen rund um Standard-C++ stellen. Dazu gehören auch Fragen zur STL bzw. zur Standardbibliothek. Compiler- und betriebssystemspezifische Fragen bitte in den jeweiligen Foren posten. Bevor ihr ein neues Thema startet, benutzt bitte die Suchfunktion und werft einen Blick in die FAQs.

    1. WritePrivateProfileString gehört WEDER zu Standard-C++, noch zur Standardbibliothek, ist zudem betriebssystemspezifisch.
    2. Was ist bitte an "Fragen bitte in den jeweiligen Foren posten" nicht zu verstehen?

    Ich verstehe wenn dir dies anfangs schwer fällt, aber dann akzeptiere auch die Kritik wenn du im falschen Forum postest.

    P.S: Und normalerweise sind meine Antworten durchaus brauchbar, und meist auch sehr ausführlich - wenn die Voraussetzungen stimmen (auch wenn - da C++ sehr komplex ist - selbst einer mit 10 Jahren C++ Erfahrung mal etwas falsch macht).



  • Hi alle,

    es scheint zu funktionieren:

    extern "C" __declspec( dllexport ) int QtTestINI()
    {
    int r;
    //r = WritePrivateProfileString((WCHAR*)"test",(WCHAR*)"EinPfad",(WCHAR*)"huhu",(WCHAR*)"D:\\tester.ini");
    r = WritePrivateProfileString(TEXT("common"), TEXT("EinPfad"), TEXT("huhu"), TEXT("c:\\test.ini"));
    return(r);
    }

    Ursache für das Ganze ist der \\ im Dateinamen. Ohne diese geht das Ganze schief.
    Bei der Variante mit (WCHAR*) legt er zwar das File an schreibt aber keinen Inhalt rein.
    Interssant ist, dass er bei beiden Varianten eine 1 zurück gibt.
    Das heisst also die Funktion meint alles korrekt gemacht zu haben.

    Grüsse
    Rainer

    PS: an asc Etwas freundlicher wäre das doch auch gegangen oder?
    Bitte macht den Thread zu. Ich habe die Lösung für mein Problem gefunden.



  • Bevor das hier jetzt in endlose Diskussionen ausartet:

    1. Du warst (und bist immernoch) im falschen Forum, WinAPI-Fragen gehören nicht hier rein.
    2. Wenn dir jemand sagt was du falsch gemacht hast fass das nicht gleich als blöde Anmache auf sondern siehs als Chance das beim nächsten Mal besser zu machen.

    Ich werde diesen Thread jetzt nicht wie sonst auch ins WinAPI-Forum verschieben, um einerseits den dortigen Helfern die anderthalb Seiten Diskussionen zu ersparen und andererseits dir die Möglichkeit zu geben, nochmal einen saubereren Anfang zu versuchen.
    Diesen Thread werde ich im Laufe des Nachmittags schließen.

    Auch auf die Gefahr dass ich mich wiederhole, es darf von dir (wie von allen anderen Neulingen auch) dnnoch erwartet werden, dass du dir die wichtigen Threads durchliest und zu Herzen nimmst, ferner sei dir der Text "Wie man Fragen richtig stellt" ans Herz gelegt.


Anmelden zum Antworten