AGB  ·  Datenschutz  ·  Impressum  







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

Windows Registry Datei als text Laden???

Offene Frage von "Jonny5K"
Ein Thema von Jonny5K · begonnen am 19. Mai 2005 · letzter Beitrag vom 18. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
Jonny5K

Registriert seit: 19. Mai 2005
Ort: Bad Breisig
8 Beiträge
 
Delphi 7 Enterprise
 
#1

Windows Registry Datei als text Laden???

  Alt 19. Mai 2005, 13:22
Hallo Leute,

ich habe folgendes Problem, ich möchte über eine funktion an zwei verschiedenen Stellen in der Registry ein paar Schlüssel exportieren und diese danach zusammen in eine Datei schreiben, damit man mit einem klick alle Schlüssel wieder importieren kann.

Das exportieren der einzelnen Schlüssel habe ich schon hinbekommen, jedoch weiß ich nicht wie ich nun die beiden *.Reg Dateien zusammen bringen soll.

Ich wollte es mit TStringlist machen, jedoch kann ich die *.Reg Dateien nicht einfach mit
Stringlist1.LoadFromFile(...\export1.Reg);
in eine Stringlist laden, da eine Registry Datei keine normale Textdatei ist!!!

Nun die Frage: Weiß jemand wie ich eine Registry Datei in z.B. eine Stringlist (oder ähnliches) geladen bekomme?

Danke schon mal im vorraus. http://www.delphipraxis.net/posting.php?mode=iframe
Smile
  Mit Zitat antworten Zitat
Benutzerbild von Steve
Steve

Registriert seit: 2. Mär 2004
Ort: Würzburg
730 Beiträge
 
Delphi 2006 Personal
 
#2

Re: Windows Registry Datei als text Laden???

  Alt 19. Mai 2005, 13:33
Hi,

erstmal Herzlich Willkommen in der Delphi-PRAXiS


Zum Thema: eine REG-Datei ist durchaus eine ganz simple Textdatei:
Code:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\...]
"xyz"="wert"
...
Das wäre mal so der typische Aufbau bzw. Inhalt einer *.reg-Datei...

Kannst sie also auch in eine StringList laden
Ne genaue Beschreibung der REG-Dateien findest Du unter www.wotsit.org

....Das stimmt so nicht ganz --->> Obiges gilt nur fürs Win9x/NT4
-Reg-Format!! Hier werden noch ANSI-Strings benutzt, bei den aktuellen Versionen weren Widestrings benutzt! (s.u.)


Gruß
Stephan

edit: Tippfehler ohne Ende
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Windows Registry Datei als text Laden???

  Alt 19. Mai 2005, 13:48
Zitat von Jonny5K:
Ich wollte es mit TStringlist machen, jedoch kann ich die *.Reg Dateien nicht einfach mit
Stringlist1.LoadFromFile(...\export1.Reg);
in eine Stringlist laden, da eine Registry Datei keine normale Textdatei ist!!!
Die *.Reg Dateien werden als WideStrings / Unicode gespeichert.
In der Unit JclWideStrings aus der JCL gibt es die Klasse TWStringList.
Damit lässt sich wie mit einer TStringList arbeiten.
Diese Klasse kann auch mit dem 1. Wort der Datei richtig umgehen.
Delphi-Quellcode:
const
  BOM_LSB_FIRST = WideChar($FEFF);
  BOM_MSB_FIRST = WideChar($FFFE);
Wenn die Datei mit BOM_MSB_FIRST beginnt, dann werden alle Widechars in der Byteanordnung gedreht.
Andreas
  Mit Zitat antworten Zitat
Jonny5K

Registriert seit: 19. Mai 2005
Ort: Bad Breisig
8 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Windows Registry Datei als text Laden???

  Alt 19. Mai 2005, 13:51
Hiho,

@Steve:
danke für die schnelle antwort.
Aber wenn ich versuche die reg-Datei in eine Stringlist zu laden

Code:
Stringlist1.LoadFromFile(...\export1.Reg);
Habe ich in meiner Stringlist nur einen Eintrag und dieser ist 'ÿþW'
ich habe die Reg-Datei auch mal mit dem Editor geöffnet und da sind (logischer weise) viel mehr Einträge.
Zudem habe ich auch mal von hand eine *.txt Datei erstellt und diese mit LoadFromFile in eine Stringlist geladen, dass hat Problemlos funktioniert.
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#5

Re: Windows Registry Datei als text Laden???

  Alt 19. Mai 2005, 13:58
er hats dir doch grad erklärt, das regedit die .reg files im UNICODE format speichert.
also musst du die auch mitner unicodefähigen stringlist laden - TWStringlist oder wie die klasse eben hies ein posting über mir

was auch gehen sollte

Delphi-Quellcode:
function LoadRegFile(const sFileName: string; var xStringlist: TStringlist): boolean;
var
  xMS: TMemoryStream;
  sBuf: PWideChar;

begin
  Result := False;
  if not FileExists(sFileName) then
    Exit;
  xMS := TMemoryStream.Create;
  xMS.LoadFromFile(sFileName);
  GetMem(sBuf, xMS.Size);
  xMS.Read(sBuf, xMS.Size);
  xStringlist.Text := WideCharToString(sBuf);
  FreeMem(sBuf, xMS.Size);
  FreeAndNil(xMS);
  Result := True;
end;

var
  xSL: TStringlist;

begin
  xSL := TStringlist.Create;
  if LoadRegFile('c:\blah.reg', xSL) then begin
    // ...
    FreeAndNil(xSL);
  end;
end;
is aber ungetestet
  Mit Zitat antworten Zitat
bigg
(Gast)

n/a Beiträge
 
#6

Re: Windows Registry Datei als text Laden???

  Alt 19. Mai 2005, 14:06
Zitat von shmia:
Die *.Reg Dateien werden als WideStrings / Unicode gespeichert.


Kommt ganz drauf an, wie man die Reg-Datei exportiert hat.
Es muss nicht zwingend Unicode sein.
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#7

Re: Windows Registry Datei als text Laden???

  Alt 19. Mai 2005, 14:25
aufnem win2k/xp schon, es sei denn man wählt win9x/nt4 ....

wie auch immer, das lässt sich ja alles herausfinden
  Mit Zitat antworten Zitat
Jonny5K

Registriert seit: 19. Mai 2005
Ort: Bad Breisig
8 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Windows Registry Datei als text Laden???

  Alt 19. Mai 2005, 15:33
Hallo,
habe es jetzt versucht mit barf00s Quellcode, bekomme dort aber immer eine Zugriffsverletzung an der Stelle

xMS.Read(sBuf, xMS.Size); Greetz Jonny5K
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Windows Registry Datei als text Laden???

  Alt 19. Mai 2005, 19:30
Moin Jonny,

wenn ich das richtig sehe fehlt da ein ^

Also:

Code:
xMS.Read(sBuf[color=red][b]^[/b][/color], xMS.Size);
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
Jonny5K

Registriert seit: 19. Mai 2005
Ort: Bad Breisig
8 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Windows Registry Datei als text Laden???

  Alt 19. Mai 2005, 21:41
Hiho,

hab das gerade mal probiert und jetzt gehts http://www.delphipraxis.net/posting.php?mode=iframe
Laughing.
Damit wäre ich auch soweit zufrieden *g*, nur noch eine andere Frage hätte ich jetzt. Ist das
sBuf^ in
xMS.Read(sBuf^, xMS.Size); jetzt eine Art Zeiger?

Danke an alle dir mir geholfen haben

Greetz Jonny5K
  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 16:16 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