XP:Programm verschwindet... GetOpenFileName ist schuld... aber warum? | Vista: alles geht



  • G|---------------------------
    D|---------------------------
    A|--4-6-7--6-5---7-8-9--7-6-4
    E|4------------7-------------
    H|---------------------------
    

    Weißt du ungefähr was es is?

    Sowas soll mein Programm automatisch vervollständigen...

    also aus

    G|
    D|
    A|
    E|
    H|
    

    wird

    G|-
    D|-
    A|-
    E|4
    H|-
    

    sobald die 4 die KEYUP Msg erzeugt.. Das klappt auch alles...

    Nur XP versagt bei dem GetOpenFileName...



  • Hm, naja kurz und knapp: Deine Funktion 'getOpenDlg' ist ja auch falsch: Du definierst innerhalb der Funktion eine Variable des Typs OPENFILENAME. Diese ist lokal. Den Elementen weißt Du dann lokale C-Strings zu. Beim Kopieren der Struktur (return-Wert auf 'myOpenDlg') werden aber nur Zeiger kopiert, und zwar auf Bereiche, die es net mehr gibt (, da ja nur der Default-Assignment-Operator aufgerufen wird). Des Weiteren: wie ist 'openFile' (char*) definiert bzw. initialisiert? Hast Du das beachtet:

    MSDN schrieb:

    lpstrFile
    Pointer to a buffer that contains a file name used to initialize the File Name edit control. The first character of this buffer must be NULL if initialization is not necessary.

    ?
    Sieht nämlich nicht so aus. Und bei der verwurschtelten Funktion, wundert mich der Post auch net mehr: http://www.c-plusplus.net/forum/viewtopic-var-t-is-217979.html 😃 .



  • CodeFinder schrieb:

    Du definierst innerhalb der Funktion eine Variable des Typs OPENFILENAME. Diese ist lokal. Den Elementen weißt Du dann lokale C-Strings zu.

    Nein... Ich übergebe die Pointer auf die "C-Strings" an die Funktion, das heißt, wenn ich dann die OPENFILENAME Variable in die Originalfunktion kopiere, sollte alles richtig sein.. Und bei dem ersten Verwenden klappt ja alles, nur halt wenn ich Projekt öffne und sofort darauf nen TAB... dann schwupps die wupps.. alles weg 😞

    CodeFinder schrieb:

    Beim Kopieren der Struktur (return-Wert auf 'myOpenDlg') werden aber nur Zeiger kopiert, und zwar auf Bereiche, die es net mehr gib

    Naja da ich schon nen Pointer übergebe, wird er beim verlassen der aufgerufenen Funktion ja nich gelöscht... Zumindest sollte das nicht gemacht werden...

    Wie kommst du darauf, dass ich in der Funktion C-Strings anlege...?

    char openFile[300] = { 0 };//steht in der funktion die dann getOpenDlg aufruft
    


  • Vermutlich zerschießt du dir irgendwo beim "Projekt öffnen" den Speicher. Bei deinem etwas strubbeligen Programmierstil würde mich das nicht wundern.

    Benutz doch einfach mal den Debugger.



  • MFK schrieb:

    Vermutlich zerschießt du dir irgendwo beim "Projekt öffnen" den Speicher. Bei deinem etwas strubbeligen Programmierstil würde mich das nicht wundern.

    Benutz doch einfach mal den Debugger.

    Hihi... Ihr kritisiert alle, aber gebt keine Tipps.. das ist toll..

    if( user == lippoliv )
      hasDebugger = FALSE;
    

    ^^Ändert sich diesen oder nächsten Monat.

    [nurlesen]Also: Ich zerschieße glaub ich nichts, weil ich ja ohne Probleme 2mal Projekt öffnen ausführen kann... [/nurlesen]
    ^^der abschnitt ist egal, aber er hat mich zum Testen gebracht, und naja 2mal TAB öffnen ging, 2mal PRJ öffnen nicht...

    Jetzt habe ich die Unterschiede bis ins kleinste durchgegangen und der unterschied war, das ich bei PRJ der beiden den Titel des Progs anders veränder als bei dem TAB... diese Zeilen sind auskommentiert, und schon läuft die kiste...

    Danke werde wohl erstmal den Fehler suchen xD...



  • lippoliv schrieb:

    Hihi... Ihr kritisiert alle, aber gebt keine Tipps.. das ist toll..

    MFK schrieb:

    Benutz doch einfach mal den Debugger.

    Na, wenn das mal kein sinnvoller Tip ist, den du dir echt mal überlegen solltest, weiß ich es auch nicht...



  • Ja sicher das ist ein Tipp, aber mir stehen da keine Mittel zur verfügung...

    Ich kann leider nicht selbst bestimmen was ich nutze... Is ja hier nich mein PC xD

    Aber ich werds mir zu Herzen nehmen und mal einen suchen, der aus C Code was macht xD



  • Ok ich habe mal rumgelesen, wegen "flakern" des Forms, unter anderem Beobachte ich bei mir GDI-Objekt schwankunen (im TaskManager)

    Das ist alles nicht schlimm, es kommen 2 dazu gehen 2 weg, jeh nach aktion. ABER.

    Öffne ich diesen OpenFileName kommen 200 dazu..

    😕 Schließe ich ihn GEHEN NUR 140 WEG??? 😕

    Dann steigt mein Prog von 18 -> 221(oder so) und beim Schließen fällt es auf 75... ja wo kommen die 57 unbekannten her?(Zwischendrinn wird nur da gezeichnet, wo auch vorher gezeichnet wird, wo also die GDIs verschwinden)...

    Hat wer ne ahnung? Welchen Codeabschnitt wollt ihr sehen?



  • wenn dir kein Debugger zur verfügung steht, warum ladest
    du dir dann nicht einfach einen herunter?



  • Melan schrieb:

    wenn dir kein Debugger zur verfügung steht, warum ladest
    du dir dann nicht einfach einen herunter?

    Das währ ne super tolle sache... welchen? Wo gibt es einen Stand-Alone C Debugger?

    Währ echt 👍 wenn du einen wüsstest, ich habe noch keinen gefunden, und es gab einsame Stunden wo ich sehr danach gesucht habe 😉



  • WinDbg



  • sri schrieb:

    WinDbg

    Den kenn ich, hab ich auch, komm aber ur nich drauf fit... Muss wohl noch weiter nach "How-to-use WinDbg" suchen xD


Anmelden zum Antworten