Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Registry übernimmt die Werte nicht (https://www.delphipraxis.net/50605-registry-uebernimmt-die-werte-nicht.html)

Kompon Ente 28. Jul 2005 09:11


Registry übernimmt die Werte nicht
 
Hallo,

die unten stehende Prozedur soll die Werte in die Registry schreiben.

Funktioniert aber nicht, warum auch immer.

Delphi-Quellcode:
procedure WriteRegistry;
var
  Reg: TRegistry;
  line: String;
begin
  if (FMyProxy = '') or (FMyProxyPort = '') then
    MessageDlg('Sie müssen einen Proxyserver angeben, über den Sie' + #13#10 + 'eine korrekte Internetverbindung herstellen können!', mtWarning, [mbOK], 0)
  else
  if (FMyProxy <> FCheckProxy) or (FMyProxyPort <> FCheckProxyPort) then
  begin
    line := FMyProxy + ':' + FMyProxyPort;

    Reg := TRegistry.Create;
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    Reg.OpenKey('\Software\Tisy Zeitermittlung\',True);

    if FProxyArt = 2 then
      Reg.WriteString('ProxyServer',line);

    Reg.WriteInteger('ProxyEnable',FProxyArt);
    Reg.WriteInteger('Synctime',FSynctime);
    Reg.CloseKey;
    Reg.Free;
  end;
end;
Diese wird aufgerufen, wenn man beim Speichern die Option "Ja" gewählt hat.

Neelix 28. Jul 2005 09:16

Re: Registry übernimmt die Werte nicht
 
Beschreibe doch mal bitte etwas genauer, was nicht funktioniert. Hast Du das Programm schon einmal zeilenweise debugt, um festzustellen, ob die einzelnen Anweisungen überhaupt angesprungen und ausgeführt werden?

Sharky 28. Jul 2005 09:16

Re: Registry übernimmt die Werte nicht
 
Hai Ente,

unabhängig warum es bei Dir nicht geht ;-)
Solche Einträge gehören nicht in HKEY_LOCAL_MACHINE ein "normaler" Benutzer hat dort nämlich überhaupt keine Schreibrechte.

Kompon Ente 28. Jul 2005 09:34

Sie werden nicht ausgeführt, obwohl es eigentlich passieren müsste.

Ich hab noch eine Prozedur ReadRegistry und dort speichere ich mir die Werte in den Variablen FCheckProxy und FCheckProxyPort, um sie in der WriteRegistry vergleichen zu können.

Aber es funktioniert nicht, obwohl ich die Werte verändere! :shock:

Luckie 28. Jul 2005 09:38

Zitat:

Zitat von Kompon Ente
Sie werden nicht ausgeführt, obwohl es eigentlich passieren müsste.

Heißt das, es wird gar nicht in den if-Zweig verzweigt? Dann stimmt wohl die Bedingung nicht.

barf00s 28. Jul 2005 09:39

Re: Registry übernimmt die Werte nicht
 
Brechpunkte & F7/F8 sind deine Freunde

Kompon Ente 28. Jul 2005 09:40

Er kommt dahin, dass gefragt wird if (FMyProxy <> FCheckProxy) or (FMyProxyPort <>FCheckProxyPort) then aber dann springt er direkt zum end;

Das darf gar nicht sein, hier mal die ReadRegistry:

Delphi-Quellcode:
procedure ReadRegistry;
var
  Reg: TRegistry;
  line: String;
begin
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_CURRENT_USER;
  Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Internet Settings\',True);
  line := Reg.ReadString('ProxyServer');
  if line <> '' then
  begin
    if not ((Ord(line[1])>=48) and (Ord(line[1])<=57)) then
    begin
      if pos('http=',line) > 0 then
      begin
        Delete(line,1,pos('http=',line)-1);
        line := copy(line,6,pos(';',line)-6);
      end
    end;
    FSystemProxy := copy(line,1,pos(':',line)-1);
    FSystemProxyPort := copy(line,pos(':',line)+1,length(line)-1);
  end
  else
  begin
    FSystemProxy := '';
    FSystemProxyPort := '0';
  end;

  Reg.RootKey := HKEY_LOCAL_MACHINE;
  Reg.OpenKey('Software\Tisy Zeitermittlung\',True);
  if Reg.ValueExists('ProxyServer') then
  begin
    line := Reg.ReadString('ProxyServer');
    FMyProxy := copy(line,1,pos(':',line)-1);
    FMyProxyPort := copy(line,pos(':',line)+1,length(line)-1);
  end
  else
  begin
    FMyProxy := '';
    FMyProxyPort := '0';
  end;

  if not (Reg.ValueExists('Synctime')) then
    Reg.WriteInteger('Synctime',60000);

  FSynctime := Reg.ReadInteger('Synctime');
  FProxyArt := Reg.ReadInteger('ProxyEnable');
  Reg.Free;

  FCheckProxy := FMyProxy;
  FCheckProxyPort := FMyProxyPort;

end;

barf00s 28. Jul 2005 09:41

Re: Registry übernimmt die Werte nicht
 
auch hier wieder HKLM ... -.-°

Kompon Ente 28. Jul 2005 09:48

Ich bin Administrator am PC -> ergo hab ich Schreibrechte! ;)

Daran liegt's schon mal net..

barf00s 28. Jul 2005 09:49

Re: Registry übernimmt die Werte nicht
 
du solltest es dennoch umstellen, denn nicht jeder benutzer deines programms wird über administrator rechte verfügen (wennses richtig machen) denk ich mal

und probiers mit dem was ich dir vor zehn minuten schon geraten habe


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:31 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