Capacidade de Hard Disk e Memória
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
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
Curtidas 0
Respostas
Sremulador
08/03/2004
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:
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:
GOSTEI 0
Bysnaga
08/03/2004
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
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
GOSTEI 0