Autor Beitrag
Leathl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 276



BeitragVerfasst: Mo 30.12.02 23:40 
---


Zuletzt bearbeitet von Leathl am Sa 15.08.09 16:10, insgesamt 1-mal bearbeitet
Brueggendiek
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 304

Win 98, Win98SE, Win XP Home
D5 Std
BeitragVerfasst: Mo 30.12.02 23:53 
Hallo!

Mit "Insert" kannst Du in einem String an einer bestimmten Position einen anderen String einfügen!

Also nach dem Auslesen der Registry:
ausblenden Quelltext
1:
2:
  Insert('-', Edit1.Text,  5);  // 1234-123451234
  Insert('-', Edit1.Text, 11);  // 1234-12345-1234

und ggf. eine Zwischenvariable benutzten.

Gruß

Dietmar Brüggendiek
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Mo 30.12.02 23:54 
Schau dir mal die Funktionen Insert und Delete in der Online Hilfe an. Ggf. kannst du auch Copy benötigen.

_________________
Ist Zeit wirklich Geld?
Dev4u.ch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 36



BeitragVerfasst: Mo 30.12.02 23:54 
also ich würde es so machen..


ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button1Click(Sender: TObject);
var
ersten, zweiten, dritten: string;
begin
edit1.text := '1234567891234'; //Anfangswert
ersten := copy(edit1.text,1,4);
zweiten := copy(edit1.text,5,length(edit1.text)-8);
dritten := copy(edit1.text,length(edit1.text)-3,4);
edit1.text := ersten + '-' + zweiten + '-' + dritten;
end;

_________________
Jedes Programm wurde von einem Menschen gecodet - Menschen machen nun mal Fehler!!
Leathl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 276



BeitragVerfasst: Di 31.12.02 00:01 
---


Zuletzt bearbeitet von Leathl am Sa 15.08.09 16:10, insgesamt 1-mal bearbeitet
Brueggendiek
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 304

Win 98, Win98SE, Win XP Home
D5 Std
BeitragVerfasst: Di 31.12.02 00:04 
Hallo!

wie sagte der erfolglose Architekt? Gerade fällt mir was ein!

Wenn Du ein solches Feld editieren willst, bei dem immer dieselbe Form vorliegt (hier: 4-5-4 Ziffern mit '-' dazwischen), sollte man auch mal einen Blick auf die Komponente "tMaskEdit" (unter "Zusätzlich" zu finden) werfen.

Gruß

Dietmar Brüggendiek
Dev4u.ch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 36



BeitragVerfasst: Di 31.12.02 00:08 
versuchs hiermit

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
function Load(Key:string) : string;
Var
  Reg : TRegistry;

begin
  Reg:= TRegistry.Create;
  try
   Reg.RootKey:= HKEY_CURRENT_USER;
   Reg.OpenKey('Software\Valve\Half-Life\Settings',false);
   try
     result := Reg.ReadString(Key);
   except
     result := '';
   end;
   Reg.CloseKey;
  finally
    Reg.Free;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
ersten, zweiten, dritten: string;

begin
edit1.text := load('Key');
ersten := copy(edit1.text,1,4);
zweiten := copy(edit1.text,5,length(edit1.text)-8);
dritten := copy(edit1.text,length(edit1.text)-3,4);
edit1.text := ersten + '-' + zweiten + '-' + dritten;

end;

_________________
Jedes Programm wurde von einem Menschen gecodet - Menschen machen nun mal Fehler!!
Brueggendiek
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 304

Win 98, Win98SE, Win XP Home
D5 Std
BeitragVerfasst: Di 31.12.02 00:09 
Hallo nochmal!

Offensichtlich posten wir gleichzeitig - macht nichts.

Leider ist bei Insert noch was zu beachten - das gibt es mehrfach. Also mal "System.Insert" schreiben, dann weiß der Compiler, welches Insert gemeint ist. Die Unit System muß natürlich in der Uses-Klausel Deiner Unit eingetragen werden, sonst findet der Compiler das nicht!

Gruß

Dietmar Brüggendiek
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Di 31.12.02 00:11 
Leathl hat folgendes geschrieben:
ausblenden Quelltext
1:
2:
Insert('-', Edit1.Text,  5);
Insert('-', Edit1.Text, 11);

So kann das auch nicht funktionieren. Insert verlang als 2. Parameter einen string, der das Attribut var hat. Eine Eigenschaft, wie Edit1.Text, kann man aber nicht als var-Parameter übergeben.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
var s: string;
begin 
  reg:= TRegistry.Create; 
  try 
    reg.Rootkey := HKEY_CURRENT_USER; 
    reg.OpenKey('SOFTWARE\Valve\Half-Life\Settings', True); 
    s := reg.ReadString('Key');
  finally 
    reg.Free; 
  end;
  Insert('-', s,  5); 
  Insert('-', s, 11); 
  Edit1.Text := s; // <-- erst hier die Text-Eigenschaft setzen
end;

_________________
Ist Zeit wirklich Geld?
Leathl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 276



BeitragVerfasst: Di 31.12.02 00:17 
---


Zuletzt bearbeitet von Leathl am Sa 15.08.09 16:10, insgesamt 2-mal bearbeitet
Dev4u.ch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 36



BeitragVerfasst: Di 31.12.02 00:22 
so sollte das speichern funktionieren..

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
procedure TForm1.Button1Click(Sender: TObject);
var
Reg : TRegistry;
begin
edit1.text := copy(edit1.text,1,4)+copy(edit1.text,6,5)+copy(edit1.text,12,4);
begin
  Reg:= TRegistry.Create;
  try
   Reg.RootKey:= HKEY_CURRENT_USER;
   Reg.OpenKey('SOFTWARE\Valve\Half-Life\Settings',false);
   try
     Reg.WriteString('Key',Edit1.text);
     result := true;
   finally
     Reg.CloseKey;
     result := false;
   end;
  finally
    Reg.Free ;
  end;

end;

_________________
Jedes Programm wurde von einem Menschen gecodet - Menschen machen nun mal Fehler!!
Leathl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 276



BeitragVerfasst: Di 31.12.02 00:35 
---


Zuletzt bearbeitet von Leathl am So 16.08.09 13:00, insgesamt 1-mal bearbeitet
Visum
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 106



BeitragVerfasst: Di 31.12.02 15:14 
Hi,
ich glaube um die Keys zu speichern wäre es einfacher eine weitere Datei anzulegen und sie darin zu speichern.
Ansonsten würde ich einen weiteren Key in die Reg schreiben, wo die Anzahl der Keys drinsteht.

Die markierte Zeile einer Listbox kannst du so auslesen:
ausblenden Quelltext
1:
edit3.text:= Listbox1.Items[Listbox1.Itemindex]					


mfG Visum
Dev4u.ch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 36



BeitragVerfasst: Di 31.12.02 15:37 
also den key von edit1.text kannst du ganz einfach in die listbox hinzufügen..

einfach
listbox1.items.add(edit1.text);

um anschliessend die key der Listbox in die Reg zu speichern kannst du wie folgt vorgehen..
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
var
i: integer;
reg: Tregistry;
begin

for listbox1.items.count-1 downto 0 do
begin


reg := TRegistry.Create; 
try 
  reg.Rootkey := HKEY_CURRENT_USER; 
  reg.OpenKey('SOFTWARE\Valve\Half-Life\Settings', true); 
   try 
     Reg.WriteString('HLKey'+inttostr(i),listbox1.items.strings[i]); 
   finally 
     reg.free; 

listbox1.items.delete(i); //den string der gerade hinzugefügt wurde löschen

end;
end;

_________________
Jedes Programm wurde von einem Menschen gecodet - Menschen machen nun mal Fehler!!
Dev4u.ch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 36



BeitragVerfasst: Di 31.12.02 15:40 
ah noch was..

um den angeklickten der listbox als edit3.text zu nehmen benutze folgendes..

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
for i:= listbox1.items.count-1 downto 0 do
begin

if listbox1.Selected[i] = true then
edit3.text := listbox1.items.strings[i];


end;
end;

_________________
Jedes Programm wurde von einem Menschen gecodet - Menschen machen nun mal Fehler!!
Leathl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 276



BeitragVerfasst: Di 31.12.02 16:09 
---


Zuletzt bearbeitet von Leathl am So 16.08.09 13:00, insgesamt 1-mal bearbeitet
Dev4u.ch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 36



BeitragVerfasst: Di 31.12.02 16:10 
jo habs grad gesehen..

diese Zeile ersetzen
ausblenden Quelltext
1:
Reg.WriteString('HLKey'+inttostr(i),listbox1.items.strings[i]);					

durch
ausblenden Quelltext
1:
Reg.WriteString('HLKey'+inttostr(i+1),listbox1.items.strings[i]);					


(01.01. 15:53 Tino) Code-Tags hinzugefügt.

_________________
Jedes Programm wurde von einem Menschen gecodet - Menschen machen nun mal Fehler!!
Dev4u.ch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 36



BeitragVerfasst: Di 31.12.02 16:21 
hab noch nen fehler gesehen..
ausblenden Quelltext
1:
for listbox1.items.count-1 downto 0 do					

in
ausblenden Quelltext
1:
for i:=listbox1.items.count-1 downto 0 do					

ändern..

_________________
Jedes Programm wurde von einem Menschen gecodet - Menschen machen nun mal Fehler!!
Leathl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 276



BeitragVerfasst: Di 31.12.02 16:56 
---