| Autor |
Beitrag |
Leathl
      
Beiträge: 276
|
Verfasst: Mo 30.12.02 23:40
Zuletzt bearbeitet von Leathl am Sa 15.08.09 16:10, insgesamt 1-mal bearbeitet
|
|
Brueggendiek
      
Beiträge: 304
Win 98, Win98SE, Win XP Home
D5 Std
|
Verfasst: 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:
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
      
Beiträge: 1173
Erhaltene Danke: 14
RAD Studio XE2
|
Verfasst: 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
      
Beiträge: 36
|
Verfasst: Mo 30.12.02 23:54
also ich würde es so machen..
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 
      
Beiträge: 276
|
Verfasst: Di 31.12.02 00:01
Zuletzt bearbeitet von Leathl am Sa 15.08.09 16:10, insgesamt 1-mal bearbeitet
|
|
Brueggendiek
      
Beiträge: 304
Win 98, Win98SE, Win XP Home
D5 Std
|
Verfasst: 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
      
Beiträge: 36
|
Verfasst: Di 31.12.02 00:08
versuchs hiermit
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
      
Beiträge: 304
Win 98, Win98SE, Win XP Home
D5 Std
|
Verfasst: 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
      
Beiträge: 1173
Erhaltene Danke: 14
RAD Studio XE2
|
Verfasst: Di 31.12.02 00:11
| Leathl hat folgendes geschrieben: | 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.
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 
      
Beiträge: 276
|
Verfasst: Di 31.12.02 00:17
Zuletzt bearbeitet von Leathl am Sa 15.08.09 16:10, insgesamt 2-mal bearbeitet
|
|
Dev4u.ch
      
Beiträge: 36
|
Verfasst: Di 31.12.02 00:22
so sollte das speichern funktionieren..
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 
      
Beiträge: 276
|
Verfasst: Di 31.12.02 00:35
Zuletzt bearbeitet von Leathl am So 16.08.09 13:00, insgesamt 1-mal bearbeitet
|
|
Visum
      
Beiträge: 106
|
Verfasst: 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:
Quelltext 1:
| edit3.text:= Listbox1.Items[Listbox1.Itemindex] |
mfG Visum
|
|
Dev4u.ch
      
Beiträge: 36
|
Verfasst: 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..
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
      
Beiträge: 36
|
Verfasst: Di 31.12.02 15:40
ah noch was..
um den angeklickten der listbox als edit3.text zu nehmen benutze folgendes..
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 
      
Beiträge: 276
|
Verfasst: Di 31.12.02 16:09
Zuletzt bearbeitet von Leathl am So 16.08.09 13:00, insgesamt 1-mal bearbeitet
|
|
Dev4u.ch
      
Beiträge: 36
|
Verfasst: Di 31.12.02 16:10
jo habs grad gesehen..
diese Zeile ersetzen
Quelltext 1:
| Reg.WriteString('HLKey'+inttostr(i),listbox1.items.strings[i]); |
durch
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
      
Beiträge: 36
|
Verfasst: Di 31.12.02 16:21
hab noch nen fehler gesehen..
Quelltext 1:
| for listbox1.items.count-1 downto 0 do |
in
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 
      
Beiträge: 276
|
Verfasst: Di 31.12.02 16:56
|
|