Avatar billede aphandersen Juniormester
12. juli 2005 - 18:24 Der er 5 kommentarer og
2 løsninger

Program der ændrer værdi i regeristreringsdatabasen

Jeg vil gerne lave et program i Delphi (Jeg har kun Delphi Personal 7), hvor jeg har en knap. Når man trykker på knappen ændrer programmet en værdi i databasen. Når man så trykker på knappen igen ændres værdien tilbage.

Den værdi jeg skal ændre i, er den værdi der findes under [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\URL\Prefixes] under "www".

Jeg vil gerne ændre værdien http:// til http://localhost/. Hvordan laver jeg sådan et program i Delphi? Problemet er at jeg ikke har voldsomt meget styr på Delphi, så jeg ved ikke hvordan man ændrer værdier i registreringsdatabasen. Kan nogle give et hint, eller måske oven i købet lave en Demo (Med kilde) til mig?
Avatar billede arne_v Ekspert
12. juli 2005 - 18:30 #1
har du kigget i nogle af de mange eksmepler på nettet ?
Avatar billede arne_v Ekspert
12. juli 2005 - 18:30 #2
Avatar billede arne_v Ekspert
12. juli 2005 - 18:30 #3
Avatar billede kroning Nybegynder
12. juli 2005 - 19:00 #5
Her er et kode eks., unden nogen form for fejl check (try except):

Husk at tilføje Registry til din uses:

-----------------

function GetKeyValue(keyname : string) : string;
var
  Reg : TRegistry;
begin
  Reg:=TRegistry.Create;
  Reg.Rootkey:=HKey_Local_machine;
  Reg.Openkey('SOFTWARE\Microsoft\Windows\CurrentVersion\URL\Prefixes',true);
    if Reg.ValueExists(keyname) then
      result:=Reg.ReadString(keyname)
  else
      result:='';
  Reg.Free;
end;

function SetKeyValue(keyname,value : string) : string;
var
  Reg : TRegistry;
begin
  Reg:=TRegistry.Create;
  Reg.Rootkey:=HKey_Local_machine;
  Reg.Openkey('SOFTWARE\Microsoft\Windows\CurrentVersion\URL\Prefixes',true);
  Reg.WriteString(keyname,value);
  Reg.Free;
end;

---------------------

var
    Temp : string;

begin
//sætter Temp til den aktuelle værdi
    Temp:=GetKeyValue('www');

//sætter www til http://localhost/
    SetKeyValue('www','http://localhost/');

//sætter www til den tidligere værdi
    SetKeyValue('www',Temp);
end;
Avatar billede kroning Nybegynder
19. juli 2005 - 19:54 #6
Kunne du bruge noget af det?
Avatar billede hrc Mester
26. juli 2005 - 11:29 #7
Nu er det ikke kun een værdi du vil ændre, er det? I min database har jeg "mosaic", "www" og "home". Nedenstående laver det du spurgte om.

procedure ToggleHTTPValue;
const
  RegKey = 'SOFTWARE\Microsoft\Windows\CurrentVersion\URL\Prefixes';
  HTTPPrefix = 'http://';
  HTTPIdefix = 'localhost/';
var
  i : integer;
  Value : string;
  Reg : TRegistry;
  ValNames : TStringList;
begin
  ValNames := TStringList.Create;
  Reg := TRegistry.Create;
  try
    Reg.Rootkey := HKey_Local_machine;
    if Reg.Openkey(RegKey,false) then begin
      Reg.GetValueNames(ValNames);
      for i := 0 to ValNames.Count - 1 do
        if Reg.GetDataType(ValNames[i]) = rdString then begin
          Value := Reg.ReadString(ValNames[i]);
          if pos(HTTPPrefix,Value) = 1 then
            if SameText(Value,HTTPPrefix) then
              Reg.WriteString(ValNames[i],HTTPPrefix + HTTPIdefix)
            else
              Reg.WriteString(ValNames[i],HTTPPrefix);
        end;
    end;
  finally
    Reg.Free;
    ValNames.Free;
  end;
end;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester