Récupération des informations de SMBIOS - page 4

 
Vitaly Muzichenko:

J'aurais aimé que quelqu'un vérifie le vin.

C'est moi qui l'ai téléchargé.

 
JRandomTrader:

J'étais juste en train de télécharger depuis le Win.

Eh bien, vous ne vouliez pas vérifier avec hwinfo si l'uuid était correct.

 

Voici les corrections.

Pour une utilisation réelle, lorsque vous n'avez pas besoin d'informations supplémentaires, commentez/non définissez #define SMBIOS_DEBUG

Dossiers :
SMBIOS.mqh  6 kb
 
Edgar Akhmadeev:

Voici les corrections.

Pour une utilisation réelle, lorsque vous n'avez pas besoin d'informations supplémentaires, commentez/non définissez #define SMBIOS_DEBUG

Et comment nettoyer mqh du code inutile, de sorte que seulPrint("UUID : ", uuid) reste ;

 
Vitaly Muzichenko:

Et comment nettoyer mqh de l'excès de code pour qu'il ne reste quePrint("UUID : ", uuid) ;

Enlever tous les wrappers #ifdef SMBIOS_DEBUG / #endif

Ne pas effacer les parties dans #else

 
Edgar Akhmadeev:

Effacer tous les wraps #ifdef SMBIOS_DEBUG / #endif

N'effacez pas les parties dans #else.

Je ne peux pas lire le code du tout, c'est tellement tordu. En supprimant quelque chose, je casse tout.

Je veux laisser quelques lignes avec le transfert au script lui-même

Voici le code pour obtenir le numéro de la partition C, il est court et précis.

#import "kernel32.dll"
   bool GetVolumeInformationW(const string root_path_name,
                              string volume_name_buffer,
                              uint volume_name_size,
                              uint &volume_serial_number[],
                              uint maximum_component_length,
                              uint file_system_flags,
                              string file_system_name_buffer,
                              uint file_system_name_size
);
#import

string SystemDriveSerialNumber() {
   int iVolumeSerialNumber[1]= {0};
   string sVolumeSerialNumber="";
   if(GetVolumeInformationW("C:\\",NULL,15,iVolumeSerialNumber,0,0,NULL,15)) {
      sVolumeSerialNumber=IntegerToHexString(iVolumeSerialNumber[0]);
      sVolumeSerialNumber=StringSubstr(sVolumeSerialNumber,0,4)+"-"+StringSubstr(sVolumeSerialNumber,4);
   }
  return(sVolumeSerialNumber);
}

---

Vous pouvez le faire comme ça, s'il vous plaît ?

 
Vitaly Muzichenko:

Je ne peux pas lire le code du tout, c'est trop compliqué. Si je supprime quelque chose, je casse tout.

Je voudrais laisser quelques lignes dans le script lui-même

Voici le code pour obtenir le numéro de la partition C, il est court et précis.

---

Vous pouvez le faire comme ça, s'il vous plaît ?

Quel est l'intérêt de nettoyer le code de la bibliothèque, de le modifier pour répondre à des besoins privés ? Ces morceaux de code ne sont pas compilés lorsqu'ils ne sont pas nécessaires. Juste pour inclure la bibliothèque, et elle est appelée par une seule ligne.

string uuid = SMBIOS::Read();

Dans le but de donner un sens au code ? La fonction est petite selon mes critères. Si vous le supprimez soigneusement, comme je l'ai expliqué - tout dans l'enveloppe #ifdef/#endif, mais en laissant entre #else/#endif - rien ne sera cassé. La moitié du code sera toujours là. Il ne s'agit pas seulement d'une requête et d'une sortie, mais d'une séquence de blocs de données, de traitement et de recodage.

 
Edgar Akhmadeev:

Quel est l'intérêt de nettoyer le code de la bibliothèque, de le modifier pour répondre à des besoins privés ? Ces morceaux de code ne sont pas compilés lorsqu'ils ne sont pas nécessaires. Juste une bibliothèque en ligne, et elle est appelée avec une seule ligne de code ?

Dans le but de donner un sens au code ? La fonction est petite selon mes critères. Si vous le supprimez soigneusement, comme je l'ai expliqué - tout dans l'enveloppe #ifdef/#endif, mais en laissant entre #else/#endif - rien ne sera cassé. La moitié du code sera toujours là. Il ne s'agit pas seulement d'une requête et d'une sortie, mais d'une séquence de blocs de données, de traitement et de recodage.

Je vais essayer d'une autre manière, peut-être que quelque chose va marcher.

La dernière tentative a abouti à ceci, mais bien sûr, je n'ai pas vu de données non plus.


 

Correction cosmétique, pas besoin de retélécharger.

#define  SIG(a, b, c, d) ((a << 24) + (b << 16) + (c << 8) + d)

const uint SMBIOS_signature = SIG('R','S','M','B');

J'aimerais que ce soit comme en c++

const uint SMBIOS_signature = 'RSMB';

Il y en a un dans MQL

datetime d = D'2020.07.06';

Peut-être que je ne connais pas certaines subtilités ?

Dossiers :
SMBIOS.mqh  6 kb
 
Edgar Akhmadeev:

Correction cosmétique, pas besoin de retélécharger.

J'aimerais que ce soit comme en c++

Il y en a un dans MQL

Peut-être que je ne connais aucune subtilité ?

Merci beaucoup, ça a marché !