Tetris - Bitte testen II



  • 17832	20:54:23,4046316	Tetrissimo.exe	3352	CreateFile	C:\Windows\Prefetch\TETRISSIMO.EXE-89595503.pf	NAME NOT FOUND	Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Attributes: n/a, ShareMode: , AllocationSize: n/a
    17882	20:54:23,4069482	Tetrissimo.exe	3352	QueryOpen	D:\Profildaten\Michael\Desktop\Tetrissimo.exe.Local	NAME NOT FOUND	
    17997	20:54:23,4122957	Tetrissimo.exe	3352	QueryOpen	D:\Profildaten\Michael\Desktop\WINMM.DLL	NAME NOT FOUND	
    18038	20:54:23,4138437	Tetrissimo.exe	3352	QueryOpen	D:\Profildaten\Michael\Desktop\OLEACC.dll	NAME NOT FOUND	
    18358	20:54:23,4241427	Tetrissimo.exe	3352	QueryOpen	D:\Profildaten\Michael\Desktop\Tetrissimo.exe.Local	NAME NOT FOUND	
    18424	20:54:23,4266134	Tetrissimo.exe	3352	QueryOpen	D:\Profildaten\Michael\Desktop\Tetrissimo.exe.Local	NAME NOT FOUND	
    18489	20:54:23,4290398	Tetrissimo.exe	3352	QueryOpen	D:\Profildaten\Michael\Desktop\OLEACCRC.DLL	NAME NOT FOUND	
    18884	20:54:23,4427266	Tetrissimo.exe	3352	QueryOpen	D:\Profildaten\Michael\Desktop\Tetrissimo.DEU	NAME NOT FOUND	
    18886	20:54:23,4428253	Tetrissimo.exe	3352	QueryOpen	D:\Profildaten\Michael\Desktop\Tetrissimo.DEU	NAME NOT FOUND	
    18893	20:54:23,4429154	Tetrissimo.exe	3352	QueryOpen	D:\Profildaten\Michael\Desktop\Tetrissimo.DEU.DLL	NAME NOT FOUND	
    18896	20:54:23,4430198	Tetrissimo.exe	3352	QueryOpen	D:\Profildaten\Michael\Desktop\Tetrissimo.DE	NAME NOT FOUND	
    18898	20:54:23,4431104	Tetrissimo.exe	3352	QueryOpen	D:\Profildaten\Michael\Desktop\Tetrissimo.DE	NAME NOT FOUND	
    18901	20:54:23,4431979	Tetrissimo.exe	3352	QueryOpen	D:\Profildaten\Michael\Desktop\Tetrissimo.DE.DLL	NAME NOT FOUND	
    18924	20:54:23,4439969	Tetrissimo.exe	3352	QueryOpen	D:\Profildaten\Michael\Desktop\uxtheme.dll	NAME NOT FOUND	
    19308	20:54:23,4587081	Tetrissimo.exe	3352	CreateFile	C:\Windows\System32\uxtheme.dll.Config	NAME NOT FOUND	Desired Access: Generic Read/Execute, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: n/a, ShareMode: Read, Delete, AllocationSize: n/a
    19316	20:54:23,4593677	Tetrissimo.exe	3352	QueryOpen	D:\Profildaten\Michael\Desktop\Tetrissimo.exe.Local	NAME NOT FOUND	
    23019	20:54:24,9582999	Tetrissimo.exe	3352	QueryOpen	D:\Profildaten\Michael\Desktop\Tetrissimo.exe.Local	NAME NOT FOUND	
    23748	20:54:29,3331138	Tetrissimo.exe	3352	QueryOpen	D:\Profildaten\Michael\Desktop\imageres.dll	NAME NOT FOUND
    

    Keine Ahnung ich seh hier nichts von Midi-Dateien. Wie sollen die dann heißen?



  • Optimizer schrieb:

    die access violation solltest du IMHO trotdem verhindern

    Ja, klar.

    Optimizer schrieb:

    Keine Ahnung ich seh hier nichts von Midi-Dateien. Wie sollen die dann heißen?

    Sind zwei Stück. Die eine heißt Tetrissimo - TITLE_MIDI und die andere Tetrissimo - HIGHSCORE_MIDI. Aber da ja eh vorher ein Fehler passiert, ist schon irgendwie klar, warum keine Dateien erstellt werden. Wann genau kommt denn die AccessViolation? Evtl. beim Klicken auf Game->New? Das einzige mal, dass ich eine Funktion aus shlwapi.dll benutze, ist hier:

    BOOL CMidiFile::LoadFromResource(LPCTSTR res_name, LPCTSTR str_id)
    {  // str_id is a string id which. Choose one per song.
       TCHAR fn[MAX_PATH];
       GetTempPath(MAX_PATH, fn);
       strcpy(fn + lstrlen(fn), str_id);
    
       if( !PathFileExists(fn) ) // <-- das ist die Funktion
       {
          ...
    


  • Ja, beim Klicken auf Game -> New.



  • Kann das evtl. mit fehlenden Admin-Rechten zusammenhängen?



  • TCHAR fn[MAX_PATH];
    GetTempPath(MAX_PATH, fn);
    strcpy(fn + lstrlen(fn), str_id);

    Das läuft über wenn der Pfad länger als MAX_PATH/2 ist.



  • DrGreenthumb schrieb:

    TCHAR fn[MAX_PATH];
    GetTempPath(MAX_PATH, fn);
    strcpy(fn + lstrlen(fn), str_id);

    Das läuft über wenn der Pfad länger als MAX_PATH/2 ist.

    Wieso das? 😕

    @Optimizer: Wo liegt denn dein TEMP-Pfad?



  • Wird bei GetTempPath eigentlich auf MAX_PATH gekürzt?



  • WebFritzi schrieb:

    DrGreenthumb schrieb:

    TCHAR fn[MAX_PATH];
    GetTempPath(MAX_PATH, fn);
    strcpy(fn + lstrlen(fn), str_id);

    Das läuft über wenn der Pfad länger als MAX_PATH/2 ist.

    Wieso das? 😕

    @Optimizer: Wo liegt denn dein TEMP-Pfad?

    C:\Users\Michael\AppData\Local\Temp\
    Da drin hast du alle Rechte, die du dir nur wünschen kannst.

    WebFritzi schrieb:

    Kann das evtl. mit fehlenden Admin-Rechten zusammenhängen?

    Ich weiß nicht, was du sonst noch so machst. Als Admin führe ich das Programm nicht aus, ich habe jetzt aber auch keine besonders restriktiven Rechte. Du kannst mir ja mal dein Programm komplett schicken, dann sag ich dir die Code-Zeile. Amsonsten ist mir im ProcessMonitor auch nichts ungewöhnliches aufgefallen, aber ich kenn mich mit dem Teil auch nicht aus.



  • WebFritzi schrieb:

    DrGreenthumb schrieb:

    TCHAR fn[MAX_PATH];
    GetTempPath(MAX_PATH, fn);
    strcpy(fn + lstrlen(fn), str_id);

    Das läuft über wenn der Pfad länger als MAX_PATH/2 ist.

    Wieso das? 😕

    Wie ich da auf MAX_PATH/2 gekommen bin weiß ich jetzt auch nicht mehr; war schon spät.

    Kann aber trotzdem überlaufen. GetTempPath schreibt u.U. den ganzen Buffer voll und dann schreibst du noch die str_id dahinter.



  • DrGreenthumb schrieb:

    WebFritzi schrieb:

    DrGreenthumb schrieb:

    TCHAR fn[MAX_PATH];
    GetTempPath(MAX_PATH, fn);
    strcpy(fn + lstrlen(fn), str_id);

    Das läuft über wenn der Pfad länger als MAX_PATH/2 ist.

    Wieso das? 😕

    Wie ich da auf MAX_PATH/2 gekommen bin weiß ich jetzt auch nicht mehr; war schon spät.

    Kann aber trotzdem überlaufen. GetTempPath schreibt u.U. den ganzen Buffer voll und dann schreibst du noch die str_id dahinter.

    Ja, stimmt. Ist nicht bombensicher. Ich habe es angepasst:

    BOOL CMidiFile::LoadFromResource(LPCTSTR res_name, LPCTSTR str_id)
    {  // str_id is a string id which. Choose one per song.
       LPTSTR fn;
       DWORD buf_len = GetTempPath(0, NULL);
       fn = new TCHAR[buf_len + lstrlen(str_id) + 1];
       GetTempPath(buf_len, fn);
       lstrcpy(fn + lstrlen(fn), str_id);
    
       if( !PathFileExists(fn) )
       {
          ...
    

    EDIT: Habe die EXE geupdatet. Könntest du die neue EXE nochmal bitte bei dir testen, Optimizer.



  • Ist nicht behoben.



  • @Opti: Hätte nicht damit gerechnet, dass du so schnell bist. Hab es da noch nicht raufgeladen gehabt. Bitte bitte nochmal. 🙄

    EDIT: Du erkennst die neue EXE daran, dass sie größer ist als vorher.



  • Ok, ist aber immer noch.
    Größe der .exe: 297.984 Bytes



  • Optimizer schrieb:

    Größe der .exe: 297.984 Bytes

    Äh, nö. Wo hast du die denn her? Wenn ich mir das ZIP-File runterlade und dann entpacke, hat die entpackte EXE eine Größe von 692.736 Bytes. 😮



  • Von deiner Seite und da krieg ich immer noch genau die selbe her.





  • Hä? Wenn ich auf deinen geposteten Link gehe, die Datei herunterlade und dann entpacke, hat die EXE die von mir oben angegebene Größe. Hat das was mit deinem Cache zu tun oder so? 😕 Auf dem Server ist nur noch diese eine Tetrissimo-Datei. Die neue halt. 😕 😕 😕



  • Frickelfox halt. Die access violation ist jetzt eine andere: Zugriff auf Adresse 00000002. Wieder beim Starten des Spiels, wie vorher.



  • Danke für's Testen. Auch in der SHLWAPI.DLL? Ich würd dir ja gerne mein ganzes Projekt schicken, aber ich habe deine Email-Addi nicht. Meine ist webfritzi[bei]gmx.de.



  • Hallo

    WebFritzi schrieb:

    webfritzi[bei]gmx.de.

    Wie sieht denn das Zeichen für "[bei]" aus? 😃

    chrische


Anmelden zum Antworten