AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Wie kann ich das Registry mit API lesen und schreiben?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie kann ich das Registry mit API lesen und schreiben?

Ein Thema von TopDogg · begonnen am 28. Jun 2002 · letzter Beitrag vom 1. Jul 2002
Antwort Antwort
Seite 1 von 3  1 23      
TopDogg

Registriert seit: 28. Jun 2002
51 Beiträge
 
#1

Wie kann ich das Registry mit API lesen und schreiben?

  Alt 28. Jun 2002, 19:27
Hi leute,
sehr gut hab ihr hier.
zuers aber danke an Luckie fuer den link in deiner page.

ich habe eine "dumme" frage.
wie kann ich einen string aus der registry lesen und in einem Edit-Text anzeigen und
aus einer ComboBox denn string rein schreiben?

ich weiss dass wenn ich luckies tutis noch mal durch arbeite und sehr viel denke das ich es dann auch hinkriege, aber ich hoffe das es hier schneller geht.
mir der VCL ist das lesen und schreiben kein thema, aber ich weiss leider nich wie ich den string aus der registry dem Edit-Tex zuweisen und den string aus der ComboBox in die registry schreiben kann.
wenn ihr mir weiter helfen koennt waehre net.
danke
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#2
  Alt 28. Jun 2002, 19:32
Hallo toppDog --->


fachlich kann ich Dir leider nicht weiterhelfen - aber ich kann Dir versichern, dass Deine Frage keineswegs "dumm" ist. Schliesslich ist ein Forum zum Fragen da!


Grüße aus Hamburg,
Daniel
Delphi-PRAXiS Administrator
Daniel R. Wolf
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#3
  Alt 28. Jun 2002, 19:40
Zitat von Daniel:
dass Deine Frage keineswegs "dumm" ist. Schliesslich ist ein Forum zum Fragen da!
So ist es. Da sieht man wieder was passiert wenn man in anderen Foren, die "anfänger" mit dummen Sprüchen abschmettert, wie, hast du denn die Tuts nciht gelesen, oder die Suche benutzt, du.......
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#4
  Alt 28. Jun 2002, 19:47
@DanielB:
Schön, dass wir uns einig sind. Aber toppDog weiss immer noch nicht weiter


Grüße,
Daniel
Daniel R. Wolf
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 28. Jun 2002, 20:03
Bevor ich mir jetzt das Leben schwer mache, wollte ich erst einmal fragen was das Problem genau ist.
  1. Zugriff auf die Registry ohne VCL mit API
  2. Übergeben eines Wertes an ein nonVCL Edit Feld / auslesen einer nonVCL Comobobox


Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von RomanK
RomanK

Registriert seit: 7. Jun 2002
Ort: Kirchheim unter Teck
1.036 Beiträge
 
Delphi 7 Personal
 
#6
  Alt 28. Jun 2002, 20:24
Zieh dir mal das rein http://www.delphipraxis.de/viewtopic.php?t=113
Roman Keller
Krieg ist Gottes Art den Amerikanern Geographie beizubringen!
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#7
  Alt 28. Jun 2002, 20:25
Hier ist mal meine Prozedur um Daten aus der Reg zu Lesen. Ich lade sie aber in eine Stringlist und weise sie dann der einen Combo zu. Du musst es halt noch anpassen. Vielleicht bringts dir ja was.

Code:
procedure TEinstellungen.FormShow(Sender: TObject);
//ComPorts ermitteln und in ComboBox Anzeigen
var
  reg: TRegistry;
  st: TStrings;
  i: integer;
  ini: TIniFile;
  s: string;
begin
  ShowMessage('Bei änderungen, kann gleich mit den neuen Werten weiter gearbeitet'
    + #13 + 'werden. Das Programm muss nicht neu gestartet werden!');
  reg := TRegistry.Create;
  reg.RootKey := HKEY_LOCAL_MACHINE;
  reg.OpenKey('hardware\devicemap\serialcomm', False);
  st := TStringList.Create;
  reg.GetValueNames(st);
  ComboBoxPort.Items.Clear;
  for i := 0 to st.Count -1 do
    begin
      ComboBoxPort.Items.Add(reg.ReadString(st.Strings[i]));
    end;
  st.Free;
  reg.CloseKey;
  reg.free;
  if MainFormMC2004.ComPort.Port = 'COM1' then
  begin
    ComboBoxPort.ItemIndex := 0;
  end
  else if MainFormMC2004.ComPort.Port = 'COM2' then
  begin
    ComboBoxPort.ItemIndex := 1;
  end
  else if MainFormMC2004.ComPort.Port = 'COM3' then
  begin
    ComboBoxPort.ItemIndex := 2;
  end
  else if MainFormMC2004.ComPort.Port = 'COM4' then
  begin
    ComboBoxPort.ItemIndex := 3;
  end
  else if MainFormMC2004.ComPort.Port = 'COM5' then
  begin
    ComboBoxPort.ItemIndex := 4;
  end
  else if MainFormMC2004.ComPort.Port = 'COM6' then
  begin
    ComboBoxPort.ItemIndex := 5;
  end
  else if MainFormMC2004.ComPort.Port = 'COM7' then
  begin
    ComboBoxPort.ItemIndex := 6;
  end
  else if MainFormMC2004.ComPort.Port = 'COM8' then
  begin
    ComboBoxPort.ItemIndex := 7;
  end;
  ini:=TIniFile.Create(ChangeFileExt(ParamStr(0), '.ini'));
  try
    s := ini.ReadString('Einstellungen', 'Baud', '');
  finally
    ini.Free;
  end;
  if s = '2400' then
  begin
    ComboBoxBaud.ItemIndex := 0;
  end
  else if s = '4800' then
  begin
    ComboBoxBaud.ItemIndex := 1;
  end
  else if s = '9600' then
  begin
    ComboBoxBaud.ItemIndex := 2;
  end
  else if s = '14400' then
  begin
    ComboBoxBaud.ItemIndex := 3;
  end
  else if s = '19200' then
  begin
    ComboBoxBaud.ItemIndex := 4;
  end
  else if s = '28800' then
  begin
    ComboBoxBaud.ItemIndex := 5;
  end
  else if s = '38400' then
  begin
    ComboBoxBaud.ItemIndex := 6;
  end;  
end;
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#8
  Alt 28. Jun 2002, 20:28
Moin ToppDog,

hier hab' ich mal ein kleines Beispiel wie's gehen könnte.
Bislang nur mit gültigen Werten getestet, aber eigentlich sollten auch fehlerhafte Werte nur für entsprechende Rückgabewerte der Funktionen sorgen.

Code:
function WriteStringToRegAPI(const p_sSubKey : string;const p_sValueName : string;const p_sValue : string) : integer;

var
  hResult : HKEY;

begin
  // Es ginge auch RegOpenKeyEx, so wird ein nicht existenter Key aber angelegt.
  // Existiert der SubKey, wird er geöffnet
  Result := RegCreateKeyEx(HKEY_CURRENT_USER,PChar(p_sSubKey),0,nil,0,KEY_ALL_ACCESS,nil,hResult,nil);
  if Result <> ERROR_SUCCESS then
  begin
    exit;
  end;
  try
    Result := RegSetValueEx(hResult,PChar(p_sValueName),0,REG_SZ,@p_sValue[1],Length(p_sValue)+1);
  finally
    RegCloseKey(hResult);
  end;
end;

function ReadStringFromRegAPI(const p_sSubKey : string; const p_sValueName : string;var p_sResult : string) : integer;

var
  hResult      : HKEY;
  dwMaxValueLen : DWORD;
  szResult     : PChar;

begin
  Result := RegOpenKeyEx(HKEY_CURRENT_USER,PChar(p_sSubKey),0,KEY_ALL_ACCESS,hResult);
  if Result <> ERROR_SUCCESS then
  begin
    exit;
  end;
  try
    Result := RegQueryInfoKey(hResult,nil,nil,nil,nil,nil,nil,nil,nil,@dwMaxValueLen,nil,nil);
    if Result <> ERROR_SUCCESS then
    begin
      exit;
    end;
    inc(dwMaxValueLen);
    szResult := StrAlloc(dwMaxValueLen);
    try
      Result := RegQueryValueEx(hResult,PChar(p_sValueName),nil,nil,PByte(szResult),@dwMaxValueLen);
      if Result <> ERROR_SUCCESS then
      begin
        exit;
      end;
      p_sResult := trim(szResult);
    finally
      StrDispose(szResult);
    end;
  finally
    RegCloseKey(hResult);
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);

var
  iResult : integer;
  sResult : string;

begin
  iResult := WriteStringToRegAPI('Software\CSE\TEST','TESTWERTNAME','TESTWERT');
  if iResult <> ERROR_SUCCESS then
  begin
    ShowMessage(SysErrorMessage(iResult));
  end;
  iResult := ReadStringFromRegAPI('Software\CSE\TEST','TESTWERTNAME',sResult);
  if iResult <> ERROR_SUCCESS then
  begin
    ShowMessage(SysErrorMessage(iResult));
  end
  else
  begin
    ShowMessage(sResult);
  end;
end;
Kommst Du damit klar?

@Mathias Simmack
Tut ist noch in Arbeit
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von RomanK
RomanK

Registriert seit: 7. Jun 2002
Ort: Kirchheim unter Teck
1.036 Beiträge
 
Delphi 7 Personal
 
#9
  Alt 28. Jun 2002, 20:28
@daniel B:
Er will es aber NonVcl!!!!!
Roman Keller
Krieg ist Gottes Art den Amerikanern Geographie beizubringen!
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#10
  Alt 28. Jun 2002, 20:32
Zitat von Christian Seehase:
Result := RegQueryInfoKey(hResult,nil,nil,nil,nil,nil,nil,ni l,nil,@dwMaxValueLen,nil,nil);
Kannst du mir das mal erklären bitte
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 04:12 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