Visual vs Ruski windows

0

No więc tak. Mam polskiego WinXP, program działa bez problemu na wszystkich kompach z podobnym windowsem. Obsługuje unicode i z tłumaczeniem z pl na rosyjski działa super, ale jak napisałem wyżej tylko na win PL. Jak próbuje uruchomić na windołsie ruskim to się wysypuje. Czy ktoś miał kiedyś doczynienia z podobnym przypadkiem? Na koniec dodam, że program piszę w Visual c++ 2008.

0

program szedl lesna sciezka, nagle wyskoczyl wilk, ryknal, a program sie przestraszyl i z koszyka wysypaly mu sie mu pisanki?

zdefiniuj: "wysypuje"

0

No więc przez "wysypuje" na podstawie logera mogę powiedzieć tyle. Dochodzi do momentu aż definiuje własne kontrolki GUI i tam jest błąd dostępu do pamięci. Jak wyłączyłem kontrolki to znowu to samo gdzieś dalej w kodzie. Niestety program jest już zbyt obszerny żeby do każdego obiektu dodać komunikat log. Skusiłem się jednak i zainstalowałem viste ruską i tam jest wszystko ok. Z moich obserwacji wynika, że w xp ru to przez polskie znaki wpisane na sztywno, ale one znajdują się tylko w nawiasach "", już nawet kompilowałem w wersji unicode jak podano w MSDN i też nic. Całe szczęście, że na viscie chodzie. Tak że ten temat można już potraktować jako ciekawostkę.

0

ano, ciekawostka niezla.. ja to widze tak:

wartosci ciagow znakow musza byc w L"" aby byl to typ WCHAR.. jak nie sa, kompilator za pewne potraktowal je jako char*/MBCS. jako ze strony kodowe PL i RU sa deko inne, polski znak po przepuszczeniu przez codepage RU dal jakis smiec. runtimeowi c++ to nie robi, ale juz temu co je chcialo wyswietlic - np. windows common controls - moglo robic. spotkaly jakis dziwny znak, ktorego pierwsze bity np. twierdzily ze jest wielobajtowy (a w istocie taki nie byl albo vice versa), i podczas wyswietlania napisu 'renderer' mogl pomylic granice kolejnych znakw i w efekcie wyjsc poza granice tego napisu i zaczac czytac bzdury przez co moglo dalej pojsc jakies accessviolation czy cos.. acz to jest bajka i luzny domysl.. opisac co dokladnie bylo, to tylko kompilacja debug i odpalic pod debuggerem na xp-ru i obejrzec jakims cudem:) callstack przed wywalką..

jakbys dal rade wyodrebnic jakis minimalistyczny fragment kodu ktory z tego powodu na xp-pl chodzi a na xp-ru nie, to bylby swietny kawalek materialu dla ludzi z klopotami dot. i18n!

0

Tu masz rację, z tym L"". Niemal cały program używa łańcuchów WCHAR. Ale gui pisałem kiedyś pod VS6 i identyfikatory kontrolek (sposób najmniej wydajny) robiłem na łańcuchach znaków CHAR. Na dodatek niektóre kontrolki posiadają w swoim id polskie znaki, i tu będzie pies pogrzebany. Wtedy rzeczywiście np. strcmp czy strcpy może być przyczyną dolegliwości. Niestety próba instalacji mojego visuala nie powiodła się na wersji xp ru. Natomiast wyłączenie całkowicie gui, jedyne miejsce gdzie jeszcze były wykonywane operacje na char, spowodowało że program ruszył.
Dzięki za konsultację.

1 użytkowników online, w tym zalogowanych: 0, gości: 1