
Zitat von
himitsu:
Dein Programm wird nur als 2GB-Version erstellt ... du mußt da nachträglich was patchen (in neuen Delphiversionen geht das "glaub ich" auch direkt im QuellCode, mit
{$SetPEFlags ...} ) ... ich weiß zwar grad nicht was, aber such mal nach "3GB" bzw. "
PE-Flags" ... ansonsten wird in deinem Programm, bei diesen Funktionen, alles auf 2 GB (Integergrenzen) runtergerundet.
OK, ich habe da
hier was gefunden. Ich schaue mir das mal mit an. So richtig testen kann ich das aber nicht, habe ja nur 256 MB

.

Zitat von
himitsu:

Zitat von
Regan:
Vollkommen richtig.
dann würde mir da aber eine maximale/durchschnittliche Angabe des Verbrauches besser gefallen, denn den aktuellen wert liefert mir auch der Taskmanager.
Das stimmt, ich habe es mir mit aufgeschrieben und werde das auf jeden Fall umsetzten. Kommt vielleicht sogar schon in der nächsten Version, mal schauen.

Zitat von
sirius:
Gegen das 2GB Problem von GlobalMemorystatus, gibt es auch noch GlobalMemoryStatusEx:
Delphi-Quellcode:
type DWORDLONG=int64; //uint64 passt besser zu DWORDLONG
//bringt aber unter Delphi 7 falsche Werte
type TMemoryStatusEx=packed record
dwLength: DWORD;
dwMemoryLoad: DWORD;
ullTotalPhys: DWORDLONG;
ullAvailPhys: DWORDLONG;
ullTotalPageFile: DWORDLONG;
ullAvailPageFile: DWORDLONG;
ullTotalVirtual: DWORDLONG;
ullAvailVirtual: DWORDLONG;
ullAvailExtendedVirtual: DWORDLONG;
end;
procedure GlobalMemoryStatusEx(var lpBuffer: TMemoryStatusEx); stdcall;
external 'kernel32.dll' name 'GlobalMemoryStatusEx';
procedure TForm1.Button1Click(Sender: TObject);
var mem:TMemoryStatusEx;
begin
mem.dwLength:=sizeof(mem);
GlobalMemoryStatusEx(mem);
showmessage(inttostr(memEx.ullTotalPhys)); // -> 3211505664
end;

Zitat von
sirius:
Ansonsten besteht noch der Fehler mit der Division durch 0 und mein Programm benötigt keinen Speicher (auch wenn es läuft).
Mist, das dachte ich mir. Das Problem dabei ist: Ich kann den Div durch 0-Error nicht reproduzieren. Deshalb ist es auch so schwer den Fehler zu finden.
Zu dem Speicher: Es ist seltsam, aber bei manchen Programmen wird wirklich kein Speicherverbrauch angezeigt (zumindest bei der Funktion, die ich nutze). Deshalb habe ich auch geschrieben, dass es 98% aller Programme sind

.