Fórum Capacidade de Hard Disk e Memória #219007

08/03/2004

0

e ai galera beleza?

bem é o seguinte estou precisando saver se existe alguma função que me retorne a capacidade do disco (hd) e da memória instalada em um micro se possivel e também a velocidade da cpu em Mhz..


valeu pela força


Bysnaga

Bysnaga

Responder

Posts

08/03/2004

Sremulador

var
MemoryStatus: TMemoryStatus;
begin
MemoryStatus.dwLength:= sizeof(MemoryStatus);
GlobalMemoryStatus(MemoryStatus);
Label1.Caption := ´Total de memória física : ´ + IntToStr(MemoryStatus.dwTotalPhys);
end;

{typedef struct _MEMORYSTATUS}
DWORD dwLength; // sizeof(MEMORYSTATUS)
DWORD dwMemoryLoad; // percentual de memória em uso
DWORD dwTotalPhys; // bytes de memória física
DWORD dwAvailPhys; // bytes livres de memória física
DWORD dwTotalPageFile; // bytes de paginação de arquivo
DWORD dwAvailPageFile; // bytes livres de paginação de arquivo
DWORD dwTotalVirtual; // bytes em uso de espaço de endereço
DWORD dwAvailVirtual; // bytes livres}


Para a frequencia

const
ID_BIT=$200000; // EFLAGS ID bit

function GetCPUSpeed: Double;
const
DelayTime = 500;
var
TimerHi, TimerLo: DWORD;
PriorityClass, Priority: Integer;
begin
try
PriorityClass := GetPriorityClass(GetCurrentProcess);
Priority := GetThreadPriority(GetCurrentThread);

SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread,THREAD_PRIORITY_TIME_CRITICAL);

Sleep(10);
asm
dw 310Fh // rdtsc
mov TimerLo, eax
mov TimerHi, edx
end;
Sleep(DelayTime);
asm
dw 310Fh // rdtsc
sub eax, TimerLo
sbb edx, TimerHi
mov TimerLo, eax
mov TimerHi, edx
end;

SetThreadPriority(GetCurrentThread, Priority);
SetPriorityClass(GetCurrentProcess, PriorityClass);

Result := TimerLo / (1000.0 * DelayTime);
except end;
end;
No evento OnClick, basta atribuir a saída da função a uma string:

procedure TForm1.Button1Click(Sender: TObject);
var cpuspeed:string;
begin
cpuspeed:=Format(´¬f MHz´, [GetCPUSpeed]);
edit1.text := cpuspeed;
end;
:wink:


Responder

Gostei + 0

12/03/2004

Bysnaga

e ai sremulador blz?

valeu pela dica consegui fazer, mas tenho outra duvida?

usei estes comandos em um botton para ver a quantidade de memoria fisica instalada, mas queria saber como que eu arredondo um valor float, tipo quero mostrar apenas oque está antes da virgula.??

codigo

procedure TForm1.Button2Click(Sender: TObject);
var
MemoryStatus: TMemoryStatus;
m: integer;
r:extended;
begin
MemoryStatus.dwLength:= sizeof(MemoryStatus);
GlobalMemoryStatus(MemoryStatus);
m:=MemoryStatus.dwTotalPhys;

r:= ((m / 1024)/1024)+1; //esta linha me mostra no caso de um micro com 128 isso: 128,4375 , como faço para mostrar só os 128???

edit2.Text:= floattostr(r) + ´ MB´;
end;


valeu


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar