2021.03.23 14:33:50.492 array out of range in 'SMBIOS.mqh' (170,8)
fxsaber :
다른 수의 필드가 발행되고 있는 것 같습니다. 여백이 있는 배열을 만들려고 했습니다. 밖으로 이동하는지 보겠습니다. SMBIOS.mqh를 다시 업로드했습니다.
추신: 내가 말했듯이, 나는 한 대의 컴퓨터에서만 확인했습니다. 다른 사람은 액세스할 수 없습니다. 그러니 판단하지 마세요.
파일:
SMBIOS.mqh
5 kb
Edgar Akhmadeev :
여기에서 아름답게 만드는 방법:
template < typename T> T StringToInteger2( const string Str ) { T Res = 0 ; // const int Size = MathMin(StringLen(Str), sizeof(T)); const int Size = StringLen (Str); for ( int i = 0 ; i < Size; i++) Res = (Res << 8 ) + Str[i]; return (Res); } //const uint SMBIOS_signature = 'RSMB'; const uint SMBIOS_signature = StringToInteger2< uint >( "RSMB" );
Edgar Akhmadeev :
다른 수의 필드가 발행되고 있는 것 같습니다. 여백이 있는 배열을 만들려고 했습니다. 밖으로 이동하는지 보겠습니다. SMBIOS.mqh를 다시 업로드했습니다.
2021.03 . 23 14 : 49 : 24.516 Location in chassis: 2021.03 . 23 14 : 49 : 24.516 array out of range in 'SMBIOS.mqh' ( 192 , 24 )
fxsaber :
고맙습니다. 더 아름답지만 어떻게 든 중복됩니다. 실행 코드가 없으면 바람직할 것입니다.
윈7 x64
적립, 4ke에 고정이 필요합니다,
로그인되지 않은 계정으로 작업했습니다.
2021.03.23 15:40:24.109 단말기 Windows 7 서비스 팩 1 빌드 7601, Intel Core i3-3220 @ 3.30GHz, 0/7 Gb 메모리, 11/298 Gb 디스크, IE 11, UAC, GMT+3
FM 0 15 : 51 : 26.042 Test_SMBIOS (USDSEK,M1) System Management BIOS Version: 2.7 GF 0 15 : 51 : 26.043 Test_SMBIOS (USDSEK,M1) System BIOS Version: 4.6 RM 0 15 : 51 : 26.043 Test_SMBIOS (USDSEK,M1) Embedded Controller Firmware Version: 255.255 LJ 0 15 : 51 : 26.043 Test_SMBIOS (USDSEK,M1) BIOS Vendor: American Megatrends Inc. QN 0 15 : 51 : 26.043 Test_SMBIOS (USDSEK,M1) BIOS Version: V1. 6 DI 0 15 : 51 : 26.043 Test_SMBIOS (USDSEK,M1) BIOS Release Date: 04 / 17 / 2012 RE 0 15 : 51 : 26.043 Test_SMBIOS (USDSEK,M1) UUID: { 0000 - 00 - 00 - 00 - 8 c89a5ffbfb6} FL 0 15 : 51 : 26.043 Test_SMBIOS (USDSEK,M1) System Manufacturer: MSI DE 0 15 : 51 : 26.043 Test_SMBIOS (USDSEK,M1) Product Name: MS- 7788 QR 0 15 : 51 : 26.043 Test_SMBIOS (USDSEK,M1) Product Version: 1.0 KK 0 15 : 51 : 26.043 Test_SMBIOS (USDSEK,M1) Product Serial Number: To be filled by O.E.M. ON 0 15 : 51 : 26.043 Test_SMBIOS (USDSEK,M1) SKU Number: To be filled by O.E.M. KH 0 15 : 51 : 26.043 Test_SMBIOS (USDSEK,M1) Family: To be filled by O.E.M. FH 0 15 : 51 : 26.043 Test_SMBIOS (USDSEK,M1) Mainboard Manufacturer: MSI OL 0 15 : 51 : 26.043 Test_SMBIOS (USDSEK,M1) Mainboard Name: H61M-P20 (G3) (MS- 7788 ) ED 0 15 : 51 : 26.043 Test_SMBIOS (USDSEK,M1) Mainboard Version: 1.0 KM 0 15 : 51 : 26.043 Test_SMBIOS (USDSEK,M1) Mainboard Serial Number: To be filled by O.E.M. EN 0 15 : 51 : 26.043 Test_SMBIOS (USDSEK,M1) Asset Tag: To be filled by O.E.M. CI 0 15 : 51 : 26.043 Test_SMBIOS (USDSEK,M1) Location in chassis: To be filled by O.E.M. MP 0 15 : 51 : 26.043 Test_SMBIOS (USDSEK,M1) { 0000 - 00 - 00 - 00 - 8 c89a5ffbfb6} EH 0 15 : 51 : 26.043 Test_SMBIOS (USDSEK,M1) To be filled by O.E.M. IP 0 15 : 51 : 26.043 Test_SMBIOS (USDSEK,M1) To be filled by O.E.M.
Edgar Akhmadeev :
해결 방법을 찾고 있습니다.
Vitaly Muzichenko :
윈7 x64
ALL 배기인가요?
SMBIOS에서 하드웨어 정보(마더보드 및 플랫폼)를 읽는 코드를 작성했습니다. 당연히 WinAPI가 사용됩니다. 제품을 철에 묶는 데 사용할 수 있습니다. 제 생각에는 마더보드 이외의 다른 것에 묶는 것은 의미가 없습니다. 디스크, 비디오 카드 - 가변.
SMBIOS.mqh를 Include에 넣습니다.
스크립트에서 SMBIOS.mq5를 테스트합니다.
실제 사용을 위해 추가 정보가 필요하지 않은 경우 주석 처리/#define SMBIOS_DEBUG 정의하지 않음
저는 한 대의 노트북과 VPS에서만 테스트했으며 제대로 작동하지 않으면 커뮤니티 검토 및 보고가 필요합니다. hwinfo 프로그램으로 데이터를 확인하십시오.
1. 코드는 SMBIOS의 데이터가 고정된 순서로 발행된다고 가정합니다. 따라서 불일치가 있는 경우 BIOS, 시스템, 메인보드 및 시스템 인클로저 탭의 마더보드/SMBIOS DMI 트리에서 hwinfo의 전체 테스트 및 스크린샷을 제공하는 것이 좋습니다. 그렇지 않으면 디버그할 수 없습니다.
2. 여기를 아름답게 만드는 방법에 대해 잘생긴 프로그래머의 조언이 필요합니다.