Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Arbeitsspeicher sparen (https://www.delphipraxis.net/50533-arbeitsspeicher-sparen.html)

Kompon Ente 27. Jul 2005 10:37


Arbeitsspeicher sparen
 
Hallo,

ich habe eine Prozedur, die dann aufgerufen wird, wenn das Interval vom Timer vorbei ist.

Dort werden immer die Werte aus der Registry ausgelesen. Dies möchte ich nun nur noch einmal im FormCreate machen und ansonsten soll nur beim synchronisieren die Pfäde miteinander verglichen werden.

So kann ich Arbeitsspeicher sparen.

Wie mach ich das?

Delphi-Quellcode:
procedure TFrmTimesynchro.synchronisieren;
var start, stop, i, x: Integer;
    izeit: TDateTime;
    k: TSystemTime;
    Registry: TRegistry;
    s: String;
begin
  {Auslesen der Registry, um festzustellen, ob der Rechner
   einen Proxyserver verwendet}
  Registry := TRegistry.Create;
  Registry.RootKey := HKEY_CURRENT_USER;
  Registry.OpenKey('Software\Microsoft\Windows\CurrentVersion\Internet Settings\',True);
  i := Registry.ReadInteger('ProxyEnable');
  Registry.Free;

  Registry := TRegistry.Create;
  s := '\Software\Tisy Zeitermittlung\ProxyServer';

  if Registry.ValueExists(s) then
  begin
    Registry.RootKey := HKEY_LOCAL_MACHINE;
    Registry.OpenKey('\Software\Tisy Zeitermittlung\',True);
    s := Registry.ReadString('ProxyServer');
    Registry.Free;
  end
  else
    // ansonsten den Standard
  begin
    Registry.RootKey := HKEY_CURRENT_USER;
    Registry.OpenKey('Software\Microsoft\Windows\CurrentVersion\Internet Settings\',True);
    s := Registry.ReadString('ProxyServer');
    Registry.Free;
  end;
Das sollte nur einmal ins FormCreate, aber wie vergleiche ich dann die Pfäde? Mit Publikvariablen?

Danke schon mal.

barf00s 27. Jul 2005 10:42

Re: Arbeitsspeicher sparen
 
was denn daran _nicht_ ressourcensparend? für deine zwecke reichts wohl - so wies ist

Kompon Ente 27. Jul 2005 10:44

Tja, aber ich möchte es trotzdem so machen. Also bitte hilfreiche und vernünftige Antworten und nicht so Müllposts! ;)

barf00s 27. Jul 2005 10:46

Re: Arbeitsspeicher sparen
 
dann mach dich mit der winapi variante des registry zugriffs vertraut (TRegistry macht nichts weiter als das)
MSDN ist dein Freund

Kompon Ente 27. Jul 2005 10:48

Der Code dort oben soll lediglich EINMAL ins FormCreate und beim Synchronisieren soll's einfach per Variable abgefragt werden.

Aber ich weiß nicht, wie ich frage..

barf00s 27. Jul 2005 10:53

Re: Arbeitsspeicher sparen
 
dann schreib dir ne funktion die den Zeitstring oder was auch immer du aus der registry brauchst zurückgibt.

so kannst du die dann im formcreate und bei deinem synchronisieren wiederaufrufen

Kompon Ente 27. Jul 2005 10:54

Wozu einen Zeitstring? :gruebel:

barf00s 27. Jul 2005 10:59

Re: Arbeitsspeicher sparen
 
maaaaaaaaaaaan
oder was auch immer du brauchst... das war _nur_ ein beispeil ......

btw hat diese frage nichts mit dem titel zu tun

Olli 27. Jul 2005 11:09

Re: Arbeitsspeicher sparen
 
Moin,

lies doch mal über Delphi-Referenz durchsuchenProperties (Klassenattribute/-eigenschaften) nach.

Matze 27. Jul 2005 11:25

Re: Arbeitsspeicher sparen
 
Noch etwas nebenbei zu deinem Code:

Nutze immer Resourcen-Schutzblöcke à la:

Delphi-Quellcode:
Registry := TRegistry.Create;
try
  Registry.RootKey := HKEY_CURRENT_USER;
  Registry.OpenKey('Software\Microsoft\Windows\CurrentVersion\Internet Settings\',True);
  i := Registry.ReadInteger('ProxyEnable');
  Registry.CloseKey;
finally
  Registry.Free;
end;
Du siehst, ich habe auch ein CloseKey eingefügt, was generell nach einem Aufruf von OpenKey erfolgen sollte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:42 Uhr.
Seite 1 von 2  1 2      

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