Writeprivateprofilestring



  • #include "stdafx.h"
    
    #include <windows.h>
    #include <stdio.h>
    #include <iostream.h>
    int main() {
    char str[256];
    char bla[256];
    GetModuleFileName(NULL, bla, sizeof(bla));
    if (strchr(strchr(bla,46),46) != NULL) *strrchr(bla,46) = '\0';
    sprintf(str, "%s\\settings.ini", bla);
    WritePrivateProfileString("Offsets", "bla", "0x01e89298", str);
    return 0;
    }
    

    der code ist richtig, wieso erstellt sich keine ini?



  • strstr schrieb:

    der code ist richtig

    Soso.

    wieso erstellt sich keine ini?

    Weil der Code nicht richtig ist.

    Du suchst nach einem Punkt, und da, wo du einen gefunden hast, suchst du nochmal. Wenn ein Punkt da ist, ist das komplett sinnlos. Ist keiner da - das ist zugegebenermaßen ziemlich unwahrscheinlich bei GetModuleFileName - stürzt es vermutlich ab. Aber das ist nicht das Problem.

    Dann terminierst du den String am letzten Punkt, schneidest also effektiv die ".exe"-Dateiendung ab. Und daran hängst du deinen Ini-Dateinamen. Dabei bleibt der Name deiner exe-Datei natürlich als Pfadbestandteilteil stehen. Und ich vermute, diesen Pfad gibt es bei dir gar nicht. Aber da du die elementarsten Fehlersuchmethode wie "Rückgabewert prüfen" und "GetLastError" nicht benutzt, oder dir wenigstens mal den fertigen Pfad ausgeben lässt oder im Debugger anschaust, würdest du da allein im Leben nicht drauf kommen.

    Dann lieber behaupten, der Code sei richtig - die Schuld niemals bei sich selbst suchen - und die anderen im Forum denken lassen. Traurig.

    Ach ja, falsches Forum, das ist WINAPI. Zu <iostream.h> sage ich jetzt mal nichts mehr.



  • Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • MFK schrieb:

    strstr schrieb:

    der code ist richtig

    Soso.

    wieso erstellt sich keine ini?

    Weil der Code nicht richtig ist.

    Du suchst nach einem Punkt, und da, wo du einen gefunden hast, suchst du nochmal. Wenn ein Punkt da ist, ist das komplett sinnlos. Ist keiner da - das ist zugegebenermaßen ziemlich unwahrscheinlich bei GetModuleFileName - stürzt es vermutlich ab. Aber das ist nicht das Problem.

    Dann terminierst du den String am letzten Punkt, schneidest also effektiv die ".exe"-Dateiendung ab. Und daran hängst du deinen Ini-Dateinamen. Dabei bleibt der Name deiner exe-Datei natürlich als Pfadbestandteilteil stehen. Und ich vermute, diesen Pfad gibt es bei dir gar nicht. Aber da du die elementarsten Fehlersuchmethode wie "Rückgabewert prüfen" und "GetLastError" nicht benutzt, oder dir wenigstens mal den fertigen Pfad ausgeben lässt oder im Debugger anschaust, würdest du da allein im Leben nicht drauf kommen.

    Dann lieber behaupten, der Code sei richtig - die Schuld niemals bei sich selbst suchen - und die anderen im Forum denken lassen. Traurig.

    Ach ja, falsches Forum, das ist WINAPI. Zu <iostream.h> sage ich jetzt mal nichts mehr.

    Der Code ist sehr wohl richtig. Nur ich hatte einen falschen chr..



  • keni schrieb:

    Der Code ist sehr wohl richtig. Nur ich hatte einen falschen chr..

    Ich nehme an, du meinst diese 46? Warum benutzt du eigentlich keine Zeichenliterale? Ist '.' nicht viel besser zu lesen als 46?

    Übrigens, was die Richtigkeit des Codes angeht: Das Sinnlos-oder-Crash-Problem mit dem verschachtelten strstr bleibt bestehen, auch wenn du jetzt nach einem anderen Zeichen suchst.


Anmelden zum Antworten