Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Ram auslastungs Progressbar (https://www.delphipraxis.net/25061-ram-auslastungs-progressbar.html)

HW764 30. Jun 2004 15:48


Ram auslastungs Progressbar
 
Wie kann ich bei Delphi (Logisch oder^^) eine Progressbar so einstellen,
dass sie die Prozentauslastung des Ram's zeigt? :?:

Gruss HW764

StefanDP 30. Jun 2004 16:24

Re: Ram auslastungs Progressbar
 
Delphi-Quellcode:
var
    memory: TMemoryStatus;
...
memory.dwLength := SizeOf(memory);
GlobalMemoryStatus(memory);
...
memory.dwAvailPhys // verfügbar!
memory.dwTotalPhys // insgesamt
stefan

HW764 30. Jun 2004 16:27

Re: Ram auslastungs Progressbar
 
Kann mir nicht jemand ein Stück coden?

Matze 30. Jun 2004 16:34

Re: Ram auslastungs Progressbar
 
Stefan hat dich schon alles geschrieben.

Hier nochmal inkl. ProgressBar-Code:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  x, y : real;
  memory: TMemoryStatus;
  Auslastung: integer;
begin
  memory.dwLength := SizeOf(memory);
  GlobalMemoryStatus(memory);
  x := memory.dwTotalPhys - memory.dwAvailPhys;
  y := memory.dwTotalPhys;
  Auslastung := round(((x/y)*100));
  ProgressBar1.Position := Auslastung;
end;

Ultimator 30. Jun 2004 16:35

Re: Ram auslastungs Progressbar
 
*Codelib-Alarm* :mrgreen:

Alexander 1. Jul 2004 15:07

Re: Ram auslastungs Progressbar
 
Ich wette das steht da schon drin ;-)

Matze 1. Jul 2004 17:18

Re: Ram auslastungs Progressbar
 
Zitat:

Zitat von Alexander
Ich wette das steht da schon drin ;-)

Falsch gewettet ;)
Aber ich gebe es rein, ich muss mich nur nochmal vergewissern, ob's auch wirklich net drinsteht. ;)

APP 1. Jul 2004 18:23

Re: Ram auslastungs Progressbar
 
Halllo Matze,
Delphi-Quellcode:
memory: TMemoryStatus;
ist in Delphi 5 noch nicht enthalten, da GlobalMemoryStatus() aber eine Win32-API Funktion ist,
dürften die API-Profis wohl kein Problem mit dem Nachbau der MEMORYSTATUS structure haben.
(Wink mit dem Zaunpfahl :mrgreen: )

MrKnogge 1. Jul 2004 18:28

Re: Ram auslastungs Progressbar
 
Zitat:

Zitat von APP
...
dürften die API-Profis wohl kein Problem mit dem Nachbau der MEMORYSTATUS structure haben.
(Wink mit dem Zaunpfahl :mrgreen: )

Hör ich da etwa ein leises "Luckie" ?

APP 1. Jul 2004 18:49

Re: Ram auslastungs Progressbar
 
Naja,
wirklich nur ein ganz leises *LUCKIEEE* :mrgreen: :mrgreen:

Alexander 1. Jul 2004 20:11

Re: Ram auslastungs Progressbar
 
Zitat:

Zitat von Matze
Zitat:

Zitat von Alexander
Ich wette das steht da schon drin ;-)

Falsch gewettet ;)
Aber ich gebe es rein, ich muss mich nur nochmal vergewissern, ob's auch wirklich net drinsteht. ;)

:duck: Naja dann steht es halt demnächst drin ;-)

NicoDE 1. Jul 2004 20:51

Re: Ram auslastungs Progressbar
 
Zitat:

Zitat von APP
(Wink mit dem Zaunpfahl :mrgreen: )

Delphi-Quellcode:
type
  SIZE_T = Cardinal;
  {$EXTERNALSYM SIZE_T}
  DWORDLONG = Int64; // ULONGLONG
  {$EXTERNALSYM DWORDLONG}

type
  PMemoryStatus = ^TMemoryStatus;
  LPMEMORYSTATUS = PMemoryStatus;
  {$EXTERNALSYM LPMEMORYSTATUS}
  _MEMORYSTATUS = packed record
    dwLength      : DWORD;
    dwMemoryLoad  : DWORD;
    dwTotalPhys   : SIZE_T;
    dwAvailPhys   : SIZE_T;
    dwTotalPageFile: SIZE_T;
    dwAvailPageFile: SIZE_T;
    dwTotalVirtual : SIZE_T;
    dwAvailVirtual : SIZE_T;
  end;
  {$EXTERNALSYM _MEMORYSTATUS}
  TMemoryStatus = _MEMORYSTATUS;
  MEMORYSTATUS = _MEMORYSTATUS;
  {$EXTERNALSYM MEMORYSTATUS}

type
  PMemoryStatusEx = ^TMemoryStatusEx;
  LPMEMORYSTATUSEX = PMemoryStatusEx;
  {$EXTERNALSYM LPMEMORYSTATUSEX}
  _MEMORYSTATUSEX = packed record
    dwLength       : DWORD;
    dwMemoryLoad   : DWORD;
    ullTotalPhys   : DWORDLONG;
    ullAvailPhys   : DWORDLONG;
    ullTotalPageFile: DWORDLONG;
    ullAvailPageFile: DWORDLONG;
    ullTotalVirtual : DWORDLONG;
    ullAvailVirtual : DWORDLONG;
  end;
  {$EXTERNALSYM _MEMORYSTATUSEX}
  TMemoryStatusEx = _MEMORYSTATUSEX;
  MEMORYSTATUSEX = _MEMORYSTATUSEX;
  {$EXTERNALSYM MEMORYSTATUSEX}

//---

procedure GlobalMemoryStatus(var lpBuffer: TMemoryStatus); stdcall;
  external kernel32;
{$EXTERNALSYM GlobalMemoryStatus}

function GlobalMemoryStatusEx(var lpBuffer: TMemoryStatusEx): BOOL; stdcall;
type
  TFNGlobalMemoryStatusEx = function(var msx: TMemoryStatusEx): BOOL; stdcall;
var
  FNGlobalMemoryStatusEx: TFNGlobalMemoryStatusEx;
begin
  FNGlobalMemoryStatusEx := TFNGlobalMemoryStatusEx(
    GetProcAddress(GetModuleHandle(kernel32), 'GlobalMemoryStatusEx'));
  if not Assigned(FNGlobalMemoryStatusEx) then
  begin
    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
    Result := False;
  end
  else
    Result := FNGlobalMemoryStatusEx(lpBuffer);
end;

APP 2. Jul 2004 05:44

Re: Ram auslastungs Progressbar
 
Wow Nico,
das war aber schnell :thuimb:.

@Matze, bitte nimm auch Nicos Code in die Library mit auf.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz