Delphi-PRAXiS

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

Die Muhkuh 28. Jul 2005 09:50

Zitat:

Zitat von Kompon Ente
Ich bin Administrator am PC -> ergo hab ich Schreibrechte! ;)

Daran liegt's schon mal net..

Ja, dann gibst du dein Programm an einen "normalen" Benutzer weiter und wunderst dich, warum es dort nicht geht. Schreib es einfach in HKCU rein, dort gehört es einfach hin.

[edit] barf00s! [/edit]

Luckie 28. Jul 2005 09:54

Re: Registry übernimmt die Werte nicht
 
Wie sehen denn in dieser Zeile
Delphi-Quellcode:
if (FMyProxy <> FCheckProxy) or (FMyProxyPort <>FCheckProxyPort) then
die Werte aus? Wohl so dass die Bedingung nicht erfüllt ist. Stehen sie denn richtig in der Registry (Guck auch mal mit dem Registry Editor nach.) und werden sie richtig gelesen?

Kompon Ente 28. Jul 2005 11:07

Hab's nun bisschen umgeändert, jetzt geht's.

Allerdings habe ich nun folgende Probleme:
1. Ich kann nicht in HKCU schreiben
2. Die Werte werden nicht mehr eingelesen

Matze 28. Jul 2005 12:11

Re: Registry übernimmt die Werte nicht
 
Hat jetzt nichts mit deinem aktuellen Problem zu tun, aber ich sagte dir hier bereits, wie eine Registry-Abfrage generell auszusehen hat. Ich würde mich an deiner Stelle wirklich daran halten, sonst kracht's evtl. mal.

Sharky 28. Jul 2005 14:26

Re: Registry übernimmt die Werte nicht
 
Zitat:

Zitat von barf00s
auch hier wieder HKLM ... -.-°

Hai barf00s,

unter Berücksichtigung deiner anderen Postings bitte ich dich doch um eines:
Zitat:

Gebe Antworten auf Fragen die einem weiterhelfen.
Der kurze Verweiss auf Funktionen hilft sicher niemandem der sich nicht auskennt.
Jeder! Und damit meine ich auch Dich hat einmal ganz klein angefangen. Und daran solltest Du immer denken wenn Du hier einenn Beitrag schreibst!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:06 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-2025 by Thomas Breitkreuz