Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

BCB GetVersionEx -anomalija ?

[es] :: C/C++ programiranje :: BCB GetVersionEx -anomalija ?

[ Pregleda: 3703 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Duke Nukem
Miroslav Mitic
dipl.mas.ing - tehnolog za hidrauliku/
REL, MAG panciranje i zavarivanje bla
bla...
Lazarevac

Član broj: 38933
Poruke: 143
*.DIALUP-SMIN.neobee.net.



+1 Profil

icon BCB GetVersionEx -anomalija ?26.03.2007. u 12:34 - pre 207 meseci
Koritim BCB6 i XP
Primetio sam sledecu anomaliju

API poziv GetVersionEx( OSVERSIONINFO )
OSVERSIONINFO - dwPlatformId daje vredost VER_PLATFORM_WIN32s
sto odgovara Win32s on Windows 3.1 , a ne na primer Win32 on Windows 95.
ili Win32 on Windows NT sto je malo logicnije.
Da li je to normalno ?
if! Da li greska u MS API funkciji ?
if !
Da li su sve MS API funkcije 100% pouzdane (bug free) ?

;-s Nadam se da sam nasao dobru temu za diskusiju.
Tape loading error
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
*.metrored.net.ar.

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: BCB GetVersionEx -anomalija ?26.03.2007. u 17:33 - pre 207 meseci
http://msdn2.microsoft.com/en-us/library/ms724429.aspx
Tko leti vrijedi
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4901
*.dynamic.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: BCB GetVersionEx -anomalija ?26.03.2007. u 17:41 - pre 207 meseci
Pozdrav,

Pokaži kod koji dovodi do tog problema. To mi je uvek radilo bez problema. Verovatno si
nešto prevideo u samom kodu...

Ovde je originalni M$ primer:
http://msdn2.microsoft.com/en-us/library/ms724429.aspx

Maločas sam ga isprobao u BCB6 (malo sam ga modifikovao da proradi), i sve je OK.



 
Odgovor na temu

Duke Nukem
Miroslav Mitic
dipl.mas.ing - tehnolog za hidrauliku/
REL, MAG panciranje i zavarivanje bla
bla...
Lazarevac

Član broj: 38933
Poruke: 143
*.dialup.neobee.net.



+1 Profil

icon Re: BCB GetVersionEx -anomalija ?26.03.2007. u 22:45 - pre 207 meseci
evo resenja:
OSVERSIONINFO osv;
ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); // ova linija je bila izostavljena
GetVersionEx(&osvi);
......

opet rupa na saksiji

Tape loading error
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
*.fibertel.com.ar.

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: BCB GetVersionEx -anomalija ?28.03.2007. u 02:17 - pre 207 meseci
Citat:
Duke Nukem: evo resenja:
OSVERSIONINFO osv;
ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); // ova linija je bila izostavljena
GetVersionEx(&osvi);
......

opet rupa na saksiji


Prosto je neverovatno da vecina ljudi automatski radi copy&paste primera iz MSDN-a. Navedeni kod bi znacajno mogao da se skrati ovako (vazi samo za c++):
Code:

OSVERSIONINFO osv = {sizeof(OSVERSIONINFO)};  
GetVersionEx(&osv);


Tko leti vrijedi
 
Odgovor na temu

vlaiv
Vladimir Vlaisavljevic
Novi Sad

Član broj: 15993
Poruke: 352
212.200.249.*



+1 Profil

icon Re: BCB GetVersionEx -anomalija ?30.03.2007. u 12:14 - pre 206 meseci
Citat:
kiklop74: Prosto je neverovatno da vecina ljudi automatski radi copy&paste primera iz MSDN-a. Navedeni kod bi znacajno mogao da se skrati ovako (vazi samo za c++):
Code:

OSVERSIONINFO osv = {sizeof(OSVERSIONINFO)};  
GetVersionEx(&osv);


Da, ali pod uslovom

1. Da je polje koje windows funkciji govori size strukture uvek na prvom mestu i 32bit-a ... (koliko ljudi to zna i vodi racuna o tome)
2. da kompajler automatski dodeli nule svuda (koliko ljudi to zna i vodi racuna o tome, i da li je sa svakim kompajlerom to slucaj)
3. Sta ako neko dinamicki alocira memoriju za strukturu pa proba taj kod? (za funkcije koje u odredjenim slucajevima ne popunjavaju
default 0 polja sa 0 pa ostane recimo 13 :) - znas na sta mislim)
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
*.fibertel.com.ar.

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: BCB GetVersionEx -anomalija ?31.03.2007. u 18:03 - pre 206 meseci
Citat:
vlaiv: Da, ali pod uslovom

1. Da je polje koje windows funkciji govori size strukture uvek na prvom mestu i 32bit-a ... (koliko ljudi to zna i vodi racuna o tome)
2. da kompajler automatski dodeli nule svuda (koliko ljudi to zna i vodi racuna o tome, i da li je sa svakim kompajlerom to slucaj)
3. Sta ako neko dinamicki alocira memoriju za strukturu pa proba taj kod? (za funkcije koje u odredjenim slucajevima ne popunjavaju
default 0 polja sa 0 pa ostane recimo 13 :) - znas na sta mislim)


1. U ovom slučaju polje jeste prvo i jeste 32-bit.
2. Standard c++ kaže da u slučaju delimične inicijalizacije strukture alocirane na steku - ostala neinicijalizovana polja se GARANTOVANO popunjavaju nulama.
3. Ako neko dinamički alocira neku strukturu i pokuša da je inicijalizuje na takav način onda je nedovoljlno upućen u c++ i treba da se lati neke pristojne knjige. A ako ipak to i uradi svaki kompajler će prijaviti da je to nedozvoljena operacija.

Treba da shvatiš da je moj primer namenjen samo konkretnom slučaju OSVERSIONINFO strukture i to samo u slučaju da je alocirana na steku.

Generalizovano pravilo bi glasilo ovako za bilo koju strukturu:

Code:

<NEKASTRUKTURA> <promenjiva> = {}; //inicijalizuje celu strukturu nulama
<promenjiva>.<veličina_strukture> = sizeof(<NEKASTRUKTURA>);


Tko leti vrijedi
 
Odgovor na temu

vlaiv
Vladimir Vlaisavljevic
Novi Sad

Član broj: 15993
Poruke: 352
212.200.249.*



+1 Profil

icon Re: BCB GetVersionEx -anomalija ?31.03.2007. u 18:33 - pre 206 meseci
@kiklop74

Slazem se sa tobom, no poenta je bila u sledecem:


Citat:
Prosto je neverovatno da vecina ljudi automatski radi copy&paste primera iz MSDN-a.


Citat:
... (koliko ljudi to zna i vodi racuna o tome)


:) Shvatas sta hocu da kazem ...
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
*.fibertel.com.ar.

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: BCB GetVersionEx -anomalija ?01.04.2007. u 11:47 - pre 206 meseci
Citat:
vlaiv: @kiklop74
:) Shvatas sta hocu da kazem ...


OK. Shvatam. Ipak nije lose napomenuti. Mozda nekad, negde i pomogne nekom.

:)
Tko leti vrijedi
 
Odgovor na temu

[es] :: C/C++ programiranje :: BCB GetVersionEx -anomalija ?

[ Pregleda: 3703 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.