![]() |
Anzeige:
|
|
|||||||
| Helfer & Tools Programme für und in XProfan und Fragen dazu. |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#16 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
|
schöne Sache, die Inc gefällt mir (endlich mal einer der sauberen Code schreibt 2 Wünsche: REG_MULTI_SZ REG_EXPAND_SZ Wobei der erstere der wichtigere ist.
__________________
Gruß Thomas Wenn mir früher jemand gesagt hätte, ich würde freiwillig eine Wanze mit mir herum tragen und sie auch noch selbst aufladen, hätte ich laut gelacht. Heute habe ich ein Smartphone. http://realsource.de |
|
|
|
|
|
#17 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 23.01.2011
Ort: Bernburg
Alter: 58
Beiträge: 756
|
Hier die nächste Variante. Zur Übersicht nochmal die Beschreibung komplett.
Ergebnis? = XReadINI(Key$, Abschnitt$, Eintrag$) Bei Vorgabe des Keys mit _DW ist die Rückgabe ein Long, falls ein DWord gelesen wird. In jedem anderen Falle wird ein String zurück gegeben. Ist Eintrag$ ein Leerstring, dann wird der Standardeintrag gelesen. Weitere Angaben für Key$ HKEY_BIN_x liest binäre Daten (REG_BINARY) und liefert einen String mit diesen Daten. Zur Auswertung ist ein Trick notwendig; Code:
Var String Ergebnis = XReadINI(Key$, Abschnitt$, Eintrag$) Var Long Pointer = Addr(Ergebnis) Var Long ByteZahl = Long(Pointer, 0) HKEY_MULTI_x liest eine Folge von Strings vom Typ REG_MULTI_SZ, also mehrere nullterminierte Strings hintereinander, abgeschlossen durch ein weiteres NullByte. Als Ergebnis wird ein String geliefert, der das XProfanübliche Trennzeichen | zwischen den einzelnen Strings verwendet. HKEY_EX_x liest einen vollständigen Dateinamen, wobei enthaltene Variablen aufgelöst werden. Key$ kann auch ein Dateiname sein, dann wird aus einer INI-Datei gelesen. XWriteINI Key$, Abschnitt$, Eintrag$, Wert? Bei Vorgabe des Keys mit _DW ist der Wert ein Long, ansonsten ein String. Um einen Eintrag zu löschen muß ein Leestring als Wert angegeben sein. Dementsprechend darf auch bei numerischen Werten _DW im Key nicht angegeben sein, Löschen ist nur mit Stringtyp (auch für DWord-Einträge) möglich! Ist als Eintrag ein Leerstring angegeben, dann wird im bezeichneten Pfad der Standardeintrag mit dem Wert belegt. Wird ein Leerstring geschrieben, wird der Standardeintrag leer gesetzt ohne etwas zu löschen. Weitere Angaben für Key$ HKEY_BIN_x speichert binäre Daten. Wert? ist hier ein Bereich, der als ersten Wert einen Long mit der Anzahl der nachfolgenden Bytes enthält. HKEY_MULTI_x speichert eine Folge von Strings, die XProfan-üblich mit | als Trenner angegeben sind. In der Registry wird der Typ REG_MULTI_SZ verwendet, also mehrere nullterminierte Strings hintereinander, abgeschlossen durch ein weiteres NullByte. HKEY_EX_x speichert einen vollständigen Dateinamen, wobei Pfade durch Variablen dargestellt werden. Key$ kann auch ein Dateiname sein, dann wird in eine INI-Datei geschrieben. Hier funktioniert das Löschen anders: Wird anstelle Wert$ der Long -1 angegeben, dann wird die Zeile aus der INI-Datei entfernt. Wird sowohl für Wert$ als auch für Eintrag$ jeweils der Long -1 angegeben, dann wird der ganze durch Abschnitt bezeichnete Abschnitt aus der Datei entfernt. Neu hinzugekommen ist die Funktion XEnumINI(Key$, Abschnitt$, Liste%, Flag%) Listet alle Subkeys und Wertebezeichner in einem Registrypfad Flag = 1 Subkeys auflisten, SubKeys stehen immer in [eckigen] Klammern Flag = 2 Wertebezeichner auflisten Flag = 4 Datentyp als String zu Wertebezeichnern angeben, stehen immer hinten in (runden) Klammern Liste ist eine Stringliste oder Listbox, in der die Ausgabe geschrieben wird In INI-Dateien ist möglich Flag = 1 Alle Sektionen der Datei (Sektionen stehen immer in [eckigen] Klammern) Flag = 2 Alle Wertebezeichner in der angegebenen Sektion werden die Flags kombiniert, dann werden alle Sektionen der Datei und die Wertebezeichner der angegebenen Sektion gelistet Flag = 4 wird ignoriert Wenn Flag = 0, dann wird 7 angenommen, alles alle Bits gesetzt Ich hoffe, daß es nun alles wie gewünscht funktioniert. Gruß Volkmar |
|
|
|
|
|
#18 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
|
![]() Sehr schön, so sollte es für die meisten Fälle komplett sein! (aber hab noch nicht getested
__________________
Gruß Thomas Wenn mir früher jemand gesagt hätte, ich würde freiwillig eine Wanze mit mir herum tragen und sie auch noch selbst aufladen, hätte ich laut gelacht. Heute habe ich ein Smartphone. http://realsource.de |
|
|
|
|
|
#19 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 23.01.2011
Ort: Bernburg
Alter: 58
Beiträge: 756
|
Nachdem ich das Ganze nun auch mal in einem realen Programm eingebaut habe, habe ich noch ein Problem gefunden. Der Typ REG_SZ läßt sich nach dem Lesen nicht so einfach weiter verarbeiten. Das abschließende Nullbyte war mit in der Stringlänge drin. Entweder den Rückgabestring trimmen oder besser die korrigierte Version hier verwenden.
Tut mir leid, daß ich das erst jetzt bringen kann, aber mein Provider hat wohl schon den ganzen Tag Halloween gefeiert. Die Verbindung ging nur immer mal für ein paar Minuten und dann war ich wieder raus. Aber die Party scheint nun vorbei zu sein .Gruß Volkmar |
|
|
|
|
|
#20 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 23.01.2011
Ort: Bernburg
Alter: 58
Beiträge: 756
|
Ich muß mich nochmal korrigieren. Rückgabe 0 war ein Schuß in den Ofen, das gibt natürlich bei Stringtypen als Ergebnis "0", wenn der Wert nicht vorhanden ist.
Die Rückgabe bei einfachen Strings habe ich auch nochmal etwas verändert, das wird jetzt getrimmt und nicht nur auf die durch die Registry gelieferte Länge gekürzt. Damit sollen dann Probleme vermieden werden, die entstehen, wenn jemand "irgendwas\z" geschrieben hat. Kommt jetzt als "irgendwas" zurück. Gruß Volkmar |
|
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Vit Registry Fix 9.5.0.31 | Paule | 4. ) Registrycleaner | 0 | 08.05.2010 00:00 |
| Registry etc... | HelpMEplease | Windows XP | 3 | 26.10.2006 16:48 |
| Registry Mechanic, registry kaputt, backup draufgeben? | poeli001 | Windows XP | 2 | 16.09.2005 14:56 |
| Registry. | Helmut | Windows 95/98/ME/2000/NT | 4 | 06.12.2003 16:21 |
| registry. | cyberfan | Windows XP | 12 | 22.11.2003 20:48 |