Pobranie danych systemu operacyjnego

dział ogólny

Pobranie danych systemu operacyjnego

Nowy postprzez mckri » piÄ…tek, 28 listopada 2008, 10:00

Witam.
Szukajac kodu na pobranie informacji o wersji systemu operacyjnego natknąłem sie na ciekawy komponent (a raczej zbór funkcji)
http://www.magsys.co.uk/delphi/magwmi.asp
Biblioteka dostarcza informacji praktycznie na kazdy temat (wersje softu, sprzętu), wszystko to co system operacyjny przechowuje w sobie.
Jednak przy próbie dołączenia biblioteki do wlasnego programu a potem kompilacji programu pojawia się sporo błedów z funkcjami występującymi w tej bibliotece.
Może ktoś byłby zainsteresowany i podzieli się swoimi spostrzerzeniami. Albo od razu powie, ze to nie będzie działac na Builderze w C++
Avatar użytkownika
mckri
Intelektryk
Intelektryk
 
Posty: 160
Dołączył(a): piątek, 15 sierpnia 2008, 13:48
PodziÄ™kowaÅ‚ : 10
OtrzymaÅ‚ podziÄ™kowaÅ„: 2
System operacyjny: Windows Vista SP2
Kompilator: BCB 5/2007/2009
    NieznanyNieznana

Re: Pobranie danych systemu operacyjnego

Nowy postprzez Cyfrowy Baron » piÄ…tek, 28 listopada 2008, 10:22

Nie mogę tego zainstalować i użyć u siebie gdyż biblioteka jest niezgodna z BDS 2006.
Gdybyś uważnie przeczytał informację pod adresem, który wskazałeś, to zobaczyłbyś coś takiego:

Compatible with Delphi 5/6/7/2005/2006/2007/2009, tested with Windows 2000, XP, 2003, Vista and 2008.

czyli z C++ Builder nie jest kompatybilna.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Pobranie danych systemu operacyjnego

Nowy postprzez mckri » piÄ…tek, 28 listopada 2008, 13:49

Owszem czytałem to. Autor jednak NIE pisze, że biblioteka jest NIEkompatybilna z Builderem.
Jak wiadomo z plikami *.pas równiez bywa z ich wykorzystaniem pod Builderem.
Avatar użytkownika
mckri
Intelektryk
Intelektryk
 
Posty: 160
Dołączył(a): piątek, 15 sierpnia 2008, 13:48
PodziÄ™kowaÅ‚ : 10
OtrzymaÅ‚ podziÄ™kowaÅ„: 2
System operacyjny: Windows Vista SP2
Kompilator: BCB 5/2007/2009
    NieznanyNieznana

Re: Pobranie danych systemu operacyjnego

Nowy postprzez Cyfrowy Baron » piÄ…tek, 28 listopada 2008, 14:26

To, że nie pisze iż nie jest kompatybilna z C++ Builder, nie oznacza, że jest kompatybilna.

O tym, że jest niekompatybilna świadczy po pierwsze fakt iż autor nie wymienia środowiska C++ Builder jako kompatybilnego, a po drugie fakt iż próba wykorzystania biblioteki w C++ Builder kończy się niepowodzeniem, o czym chociażby świadczą Twoje słowa:

Jednak przy próbie dołączenia biblioteki do własnego programu a potem kompilacji programu pojawia się sporo błedów z funkcjami występującymi w tej bibliotece.


Pliki PAS mogą być dołączane do projektów napisanych w C++, jednak muszą być w pełni zgodne z bibliotekami C++. Gdy biblioteki PAS korzystają tylko z funkcji zawartych w bibliotekach Delphi, wtedy nie są zgodne z C++. Istnieje pewien zbiór bibliotek wspólnych dla Delphi i C++, jednak nie dotyczy to wszystkich bibliotek.
Biblioteki napisane w Delphi dla C++ mogą korzystać tylko z tych bibliotek wspólnych, jeżeli jednak korzystają z bibliotek zgodnych tylko z Delphi, wtedy nie są zgodne z C++ Builder.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Pobranie danych systemu operacyjnego

Nowy postprzez wargo » piÄ…tek, 28 listopada 2008, 14:29

Podaj choć część błędów, może coś da się zrobić pomimo wszystko ale nie jestem pewnien.
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana

Re: Pobranie danych systemu operacyjnego

Nowy postprzez mckri » sobota, 29 listopada 2008, 15:26

Pewnie CB ma racjÄ™.
Oto wykaz błedów po podpięciu do projektu pliku magwmi.pas

[DCC Warning] WbemScripting_TLB.pas(413): W1025 Unsupported language feature: 'dispinterface'
[DCC Warning] WbemScripting_TLB.pas(415): W1025 Unsupported language feature: 'dispinterface'
[DCC Warning] WbemScripting_TLB.pas(417): W1025 Unsupported language feature: 'dispinterface'
[DCC Warning] WbemScripting_TLB.pas(419): W1025 Unsupported language feature: 'dispinterface'
[DCC Warning] WbemScripting_TLB.pas(421): W1025 Unsupported language feature: 'dispinterface'
[DCC Warning] WbemScripting_TLB.pas(423): W1025 Unsupported language feature: 'dispinterface'
[DCC Warning] WbemScripting_TLB.pas(425): W1025 Unsupported language feature: 'dispinterface'
[DCC Warning] WbemScripting_TLB.pas(427): W1025 Unsupported language feature: 'dispinterface'
[DCC Warning] WbemScripting_TLB.pas(429): W1025 Unsupported language feature: 'dispinterface'
[DCC Warning] WbemScripting_TLB.pas(431): W1025 Unsupported language feature: 'dispinterface'
[DCC Warning] WbemScripting_TLB.pas(433): W1025 Unsupported language feature: 'dispinterface'
[DCC Warning] WbemScripting_TLB.pas(435): W1025 Unsupported language feature: 'dispinterface'
[DCC Warning] WbemScripting_TLB.pas(437): W1025 Unsupported language feature: 'dispinterface'
[DCC Warning] WbemScripting_TLB.pas(439): W1025 Unsupported language feature: 'dispinterface'
[DCC Warning] WbemScripting_TLB.pas(441): W1025 Unsupported language feature: 'dispinterface'
[DCC Warning] WbemScripting_TLB.pas(443): W1025 Unsupported language feature: 'dispinterface'
[DCC Warning] WbemScripting_TLB.pas(445): W1025 Unsupported language feature: 'dispinterface'
[DCC Warning] WbemScripting_TLB.pas(447): W1025 Unsupported language feature: 'dispinterface'
[DCC Warning] WbemScripting_TLB.pas(448): W1025 Unsupported language feature: 'dispinterface'
[DCC Warning] WbemScripting_TLB.pas(450): W1025 Unsupported language feature: 'dispinterface'
[DCC Warning] WbemScripting_TLB.pas(452): W1025 Unsupported language feature: 'dispinterface'
[DCC Warning] WbemScripting_TLB.pas(454): W1025 Unsupported language feature: 'dispinterface'
[DCC Warning] WbemScripting_TLB.pas(456): W1025 Unsupported language feature: 'dispinterface'
[DCC Warning] WbemScripting_TLB.pas(458): W1025 Unsupported language feature: 'dispinterface'
[DCC Warning] WbemScripting_TLB.pas(460): W1025 Unsupported language feature: 'dispinterface'
[DCC Error] magsubs1.pas(1757): E2003 Undeclared identifier: 'VER_SUITE_EMBEDDEDNT'
[DCC Error] magsubs1.pas(1758): E2003 Undeclared identifier: 'VER_SUITE_EMBEDDED_RESTRICTED'
[DCC Error] magsubs1.pas(1771): E2003 Undeclared identifier: 'VER_NT_WORKSTATION'
[DCC Warning] magsubs1.pas(1771): W1023 Comparing signed and unsigned types - widened both operands
[DCC Error] magsubs1.pas(1778): E2003 Undeclared identifier: 'VER_NT_WORKSTATION'
[DCC Warning] magsubs1.pas(1778): W1023 Comparing signed and unsigned types - widened both operands
[DCC Error] magsubs1.pas(1797): E2003 Undeclared identifier: 'VER_NT_WORKSTATION'
[DCC Warning] magsubs1.pas(1797): W1023 Comparing signed and unsigned types - widened both operands
[DCC Error] magsubs1.pas(1798): E2003 Undeclared identifier: 'VER_NT_DOMAIN_CONTROLLER'
[DCC Warning] magsubs1.pas(1798): W1023 Comparing signed and unsigned types - widened both operands
[DCC Error] magsubs1.pas(1799): E2003 Undeclared identifier: 'VER_NT_SERVER'
[DCC Warning] magsubs1.pas(1799): W1023 Comparing signed and unsigned types - widened both operands
[DCC Error] magsubs1.pas(1800): E2003 Undeclared identifier: 'VER_SUITE_SMALLBUSINESS'
[DCC Error] magsubs1.pas(1801): E2003 Undeclared identifier: 'VER_SUITE_ENTERPRISE'
[DCC Error] magsubs1.pas(1802): E2003 Undeclared identifier: 'VER_SUITE_DATACENTER'
[DCC Error] magsubs1.pas(1803): E2003 Undeclared identifier: 'VER_SUITE_BLADE'
[DCC Error] magsubs1.pas(1804): E2003 Undeclared identifier: 'VER_SUITE_STORAGE_SERVER'
[DCC Error] magsubs1.pas(1805): E2003 Undeclared identifier: 'VER_SUITE_COMPUTE_SERVER'
[DCC Warning] magsubs1.pas(1812): W1023 Comparing signed and unsigned types - widened both operands
[DCC Error] magsubs1.pas(1814): E2003 Undeclared identifier: 'VER_SUITE_PERSONAL'
[DCC Error] magsubs1.pas(1816): E2003 Undeclared identifier: 'SM_MEDIACENTER'
[DCC Error] magsubs1.pas(1818): E2003 Undeclared identifier: 'SM_STARTER'
[DCC Error] magsubs1.pas(1820): E2003 Undeclared identifier: 'SM_TABLETPC'
[DCC Error] magsubs1.pas(1825): E2003 Undeclared identifier: 'VER_SUITE_EMBEDDEDNT'
[DCC Error] magsubs1.pas(1826): E2003 Undeclared identifier: 'VER_SUITE_EMBEDDED_RESTRICTED'
[DCC Error] magsubs1.pas(1828): E2003 Undeclared identifier: 'VER_SUITE_WH_SERVER'
[DCC Error] magsubs1.pas(1836): E2003 Undeclared identifier: 'SM_SERVERR2'
[DCC Warning] magsubs1.pas(1849): W1023 Comparing signed and unsigned types - widened both operands
[DCC Error] magsubs1.pas(1888): E2003 Undeclared identifier: 'null'
[DCC Error] magsubs1.pas(1888): E2015 Operator not applicable to this operand type
[DCC Error] magsubs1.pas(4451): E2003 Undeclared identifier: 'SHERB_NOCONFIRMATION'
[DCC Error] magsubs1.pas(4451): E2003 Undeclared identifier: 'SHERB_NOPROGRESSUI'
[DCC Error] magwmi.pas(59): F2063 Could not compile used unit 'magsubs1.pas'


Dzieki za starania, ale pewnie nic z tego.
Avatar użytkownika
mckri
Intelektryk
Intelektryk
 
Posty: 160
Dołączył(a): piątek, 15 sierpnia 2008, 13:48
PodziÄ™kowaÅ‚ : 10
OtrzymaÅ‚ podziÄ™kowaÅ„: 2
System operacyjny: Windows Vista SP2
Kompilator: BCB 5/2007/2009
    NieznanyNieznana

Re: Pobranie danych systemu operacyjnego

Nowy postprzez Witold » niedziela, 30 listopada 2008, 16:05

Blędy typu: Undeclared identifier w magsubs1.pas np.
[DCC Error] magsubs1.pas(1757): E2003 Undeclared identifier: 'VER_SUITE_EMBEDDEDNT'
Itd.

są spowodowane przez wyłączenia kawałków kodu przez dyrektywę DELPHI:

Kod: Zaznacz cały
{$IFNDEF BCB}
CONST
…
    VER_SUITE_EMBEDDEDNT    = $00000040 ;
….
{$ENDIF}


Gdy weźmie się w komentarz // wszystkie {$IFNDEF BCB} i {$ENDIF} te błędy znikają (testowałem w Turbo C++ 2006 Explorer).

Wygląda jakby BCB był brany pod uwagę, w czasie pisania tego modułu. Ale jak to się powinno prawidłowo kompilować (z jakimi ustawieniami) nie mam pojęcia.
Avatar użytkownika
Witold
Konstrukcjonista
Konstrukcjonista
 
Posty: 223
Dołączył(a): piątek, 29 sierpnia 2008, 10:53
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 14
Kompilator: bcb6, Turbo C++ Explorer
    NieznanyNieznana

Re: Pobranie danych systemu operacyjnego

Nowy postprzez Cyfrowy Baron » poniedziaÅ‚ek, 1 grudnia 2008, 10:38

Problem polega na tym, że biblioteki korzystają z deklaracji i funkcji, których brak w bibliotekach C++. Mamy tutaj takie komunikaty jak:

    Unsupported language feature
    Undeclared identifier

i to stanowi problem, żeby go rozwiązać należałoby dołączyć do C++ Builder biblioteki zawierające brakujące funkcje i deklaracje, ale to błędne koło, gdyż te biblioteki korzystają również z innych i trzeba by było dołączać kolejne, a tu dochodzi jeszcze błąd z dyrektywami o którym Ty piszesz, niestety wyłączenie tych dyrektyw nie rozwiąże problemy, konieczne byłoby dodanie dyrektyw odpowiednich dla C++, a to wymagałoby dogłębnej analizy bibliotek, więc w efekcie można by stworzyć własne.



W C++ istnieją odpowiednie funkcje do pobierania do pobierania informacji o systemie, kilka nawet opisałem w serwisie Cyfrowy Baron.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Pobranie danych systemu operacyjnego

Nowy postprzez Witold » poniedziaÅ‚ek, 1 grudnia 2008, 19:07

Cyfrowy Baron napisał(a):...niestety wyłączenie tych dyrektyw nie rozwiąże problemy...


Gdy się to zrobi, można skompilować program. Testowałem chwilkę kilka funkcji (MagWmiSmartDiskInfo, MagWmiGetBaseBoard, MagWmiGetOSInfo, MagWmiGetMemory) działały bez problemu.
Avatar użytkownika
Witold
Konstrukcjonista
Konstrukcjonista
 
Posty: 223
Dołączył(a): piątek, 29 sierpnia 2008, 10:53
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 14
Kompilator: bcb6, Turbo C++ Explorer
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 68 gości

cron