Entwickler-Ecke

Sonstiges (Delphi) - variable maske für registry


tommie-lie - Di 23.07.02 15:53
Titel: variable maske für registry
Hallo,

Ich habe ein Eingabefeld, in das der User nur bestimmt Sachen eintragen soll.
Genaugenommen sind es Registry-Einträge, die eine Bstimmt Form haben müssen, um übernommen zu werden.
Also brauche ich ein Eingabefeld, das eine Maske über den String legt. Dieser muss so aus sehen:
"HKEY_Local_Machine\Key\Subkey\Subsubkey\Parameter = Value"

Ich dachte ein ein MaskEdit, aber da kann ich ja nicht variable Masken einstellen, will meinen, der User kann ja mehr als 2 Subkeys verwenden, und die Länge der Namen ist auch nciht immer gleich.

Wie krieg ich denn so eine Abfrage hin?
Nochmal: Sie muss überprüfen, ob Text steht, dann ein \, dann wieder Text, dann wieder \, usw, beliebig oft, und am Ende darf kein \ stehen, dafür aber ein Leerzeichen, ein = und noch ein Leerzeichen, gefolgt von Text.

Tschüß
tommie-lie


tommie-lie - Sa 27.07.02 13:43

wie, weiß das keiner? Hat noch keiner einen Installer geschrieben? Sieht aber schlacht aus für mich.


O'rallY - Sa 27.07.02 17:12

wie wärs, wenn du ne For-Schleife schreibst, mit der du rausfinden kannst, an welchen Stellen ein '\' ist. Dann extrahierst du mittels MidStr(...) (Unit StrUtils) die "Zwischenräume" und überprüfst diese. usw.


tommie-lie - Sa 27.07.02 18:34

tut mir leid, aber versteh ich nicht.
Wie soll das denn wie eine erweiterte MaskEdit wirken?


O'rallY - Mo 29.07.02 10:04

willst du denn, dass diese "Maske" schon beim Eingeben in ein TEdit (o.ä.) überprüft wird oder willst du das erst hinterher auswerten?
Während der Eingabe lässt sich das so auswerten:


Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure Tform_Options.Edit1KeyPress(Sender: TObject;
  var Key: Char);
begin
        if not (Key in [#8, #48..#57]) then
{bewirkt z.B., dass nur Zahlen eingegeben und die Backspace Taste gedrückt werden kann}
                Key := #0;
end;


jetzt musst du nur noch den ASCII-Code der Zeichen herausfinden, die erwünscht sind und da dann eingeben:

Quelltext
1:
 if not (Key in [#..., #... .. #...]) then                    


Hilft dir das weiter? Um ehrlich zu sein, ich weiß nicht genau was dir vorschwebt... :?