2017-01-04 2 views
1

Je souhaite récupérer la mémoire des emplacements de mémoire vive et la convertir en Go. J'utilise WMI, classe Win32_PhysicalMemory avec la propriété Capacity.Problème de conversion des types WMI

code:

QString userRAMCapacity = QString::fromWCharArray(ramCapacity.bstrVal); 

Lorsque vous utilisez la fonction Qt -

QString::fromWCharArray(ramCapacity.bstrVal); 

Je reçois la capacité slots de RAM de mémoire appropriée en octets, mais je ne peux pas le convertir en GB. J'ai essayé d'utiliser une autre fonction -

QString::number(ramCapacity.uintVal), 

cela fonctionne mais affiche une mauvaise quantité de mémoire. S'il vous plaît, aidez à résoudre ce problème. Merci d'avance.

+1

', mais je ne peux pas le convertir en GB' pourquoi? –

+0

Lors de la conversion en GB: userRAMCapacity = QString :: fromWCharArray (ramCapacity.bstrVal)/(1024)/(1024)/(1024); Erreur: erreur: C2678: binaire '/': aucun opérateur trouvé qui prend un opérande de gauche de type 'QString' (ou il n'y a pas de conversion acceptable) – Cobra91151

+0

exactement, parce que vous essayez de convertir une piqûre, la convertir à un certain nombre d'abord, puis faire le reste des mathématiques –

Répondre

1

QString a méthode toInt() que vous devrez appliquer avant de faire un calcul:

auto result = QString::fromWCharArray(ramCapacity.bstrVal). toLongLong()/(1024)/(1024)/(1024); 
+0

j'ai essayé votre code, mais dans la console quand j'imprimer en utilisant la fonction qDebug(), le résultat est « \ u0000 » « \ u0000 » « \ u0000 » « \ u0000 » – Cobra91151

+0

lorsque vous imprimez ce ? –

+0

Code: QString userRAMCapacity = QString :: fromWCharArray (ramCapacity.bstrVal) .toInt()/(1024)/(1024)/(1024); qDebug() << userRAMCapacity; – Cobra91151