Entwickler-Ecke
Sonstiges (Delphi) - Zahl verändern?
Leathl - Mo 30.12.02 23:40
Titel: Zahl verändern?
---
Brueggendiek - 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 - 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.
Dev4u.ch - 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; |
Leathl - Di 31.12.02 00:01
---
Brueggendiek - 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 - Di 31.12.02 00:08
versuchs hiermit
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; |
Brueggendiek - 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 - 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; |
Leathl - Di 31.12.02 00:17
---
Dev4u.ch - 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; |
Leathl - Di 31.12.02 00:35
---
Visum - 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 - 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; |
Dev4u.ch - 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; |
Leathl - Di 31.12.02 16:09
---
Dev4u.ch - 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.
Dev4u.ch - 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..
Leathl - Di 31.12.02 16:56
---
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!