AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Arbeitsspeicher sparen

Ein Thema von Kompon Ente · begonnen am 27. Jul 2005 · letzter Beitrag vom 27. Jul 2005
Antwort Antwort
Seite 1 von 2  1 2      
Kompon Ente
(Gast)

n/a Beiträge
 
#1

Arbeitsspeicher sparen

  Alt 27. Jul 2005, 10:37
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.
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#2

Re: Arbeitsspeicher sparen

  Alt 27. Jul 2005, 10:42
was denn daran _nicht_ ressourcensparend? für deine zwecke reichts wohl - so wies ist
  Mit Zitat antworten Zitat
Kompon Ente
(Gast)

n/a Beiträge
 
#3
  Alt 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!
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#4

Re: Arbeitsspeicher sparen

  Alt 27. Jul 2005, 10:46
dann mach dich mit der winapi variante des registry zugriffs vertraut (TRegistry macht nichts weiter als das)
MSDN ist dein Freund
  Mit Zitat antworten Zitat
Kompon Ente
(Gast)

n/a Beiträge
 
#5
  Alt 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..
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#6

Re: Arbeitsspeicher sparen

  Alt 27. Jul 2005, 10:53
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
  Mit Zitat antworten Zitat
Kompon Ente
(Gast)

n/a Beiträge
 
#7
  Alt 27. Jul 2005, 10:54
Wozu einen Zeitstring?
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#8

Re: Arbeitsspeicher sparen

  Alt 27. Jul 2005, 10:59
maaaaaaaaaaaan
oder was auch immer du brauchst... das war _nur_ ein beispeil ......

btw hat diese frage nichts mit dem titel zu tun
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#9

Re: Arbeitsspeicher sparen

  Alt 27. Jul 2005, 11:09
Moin,

lies doch mal über Delphi-Referenz durchsuchenProperties (Klassenattribute/-eigenschaften) nach.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Arbeitsspeicher sparen

  Alt 27. Jul 2005, 11:25
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 19:28 Uhr.
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