AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte ETS - Der ExeTimeSaver #30
Thema durchsuchen
Ansicht
Themen-Optionen

ETS - Der ExeTimeSaver #30

Ein Thema von Regan · begonnen am 17. Feb 2009 · letzter Beitrag vom 13. Apr 2009
Antwort Antwort
Regan

Registriert seit: 27. Apr 2007
48 Beiträge
 
Turbo Delphi für Win32
 
#1

Re: ETS - Der ExeTimeSaver #28

  Alt 18. Feb 2009, 16:17
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.dllname '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 .
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:20 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 by Thomas Breitkreuz