![]() |
eigener String in Registry
Hallo.
Hab hier schon ne Weile in der Praxis gesucht, aber noch nichts passendes gefunden. Nach meinem (dank Euch) erfolgreichem Versuch mit Access habe ich mich (auf raten eines Kollegen hin) entschlossen, auf Interbase umzuschenken, bevor meine Anwendung zu umfangreich ist. Ich habe also (erstmal Manuell) einen Registryeintrag (IBCON) erstellt, der sich wie folgt zusammensetzt: Dateiname (inkl. Pfad) +'>>'+ Username + '>>'+ Passwort Dieser wird später wird in die einzelnen Komponenten aufgebröselt und es wird ein connect zur DB erstellt (klappt soweit auch - habs mal ohne Registry also hardcodiert getestet). Entspricht zwar keinerlei Security-Richtlinien oder ähnlichem, aber da die Anwendung nur lokal läuft ist das vorerst egal. Ich versuche mit folgendem Code die Registry auszulesen:
Delphi-Quellcode:
Nun bekomme ich bereits beim Start der Anwendung die Fehlermeldung "Kein zulässiger Dateiname". Entferne ich den Teil nach dem Dateinamen (>> etc.) kommt die Fehlermeldung "Nicht erkennbares Datenbankformat". Woran kann das liegen??? Hoffe mir kann hier jemand helfen... Danke im Vorraus.
function ReadDSNFromRegistry(DSN: string): string;
var Registry: TRegistry; Reg_Result: string; begin Registry:=TRegistry.Create; try Registry.RootKey:=HKEY_LOCAL_MACHINE; if Registry.KeyExists('\Software\mydir\myapp')=true then begin if Registry.OpenKey('\Software\mydir\myapp',true)=true then Reg_Result := Registry.ReadString('IBCON') else Reg_Result := ''; end else Reg_Result := ''; finally Registry.Free; Result := Reg_Result; end; end; Tyron |
Re: eigener String in Registry
wenn du vorher prüfen willst ob der Key in der Registry existiert kannst du auch das KeyExists weg machen und den zweiten Parameter von OpenKey auf False setzen. Desweiteren gehört es sich eigentlich das man CloseKey aufruft wenn das OpenKey geklappt hat.
Zu deinem Fehler den du bekommst. Der hat eignetlich nix mit dem Quellcode zu tun den du hier gepostet hast da dies ja das auslesen der Registry ist und nichts mit dem öffnen der Datenbank etc. zu tun hat. Du übergibst der funktion ja "DSN" aber wo verwendest du das innerhalb der funktion? |
Re: eigener String in Registry
Moin Tyron,
als erstes sollest Du mal Reg_Result zu Beginn der Routine initialisieren. Dann ist die Überprüfung mit KeyExists überflüssig, wenn Du sowieso Open mit true verwendest, ausserdem solltest Du bei booleschen Abfragen = true weglassen. Wenn OpenKey erfolgreich war, solltest Du den Key auch wieder schliessen. Dein eigentliches Problem liegt allerdings wohl nicht beim Auslesen des Wertes aus der Registry, sondern bei der Verarbeitung des zurückgegebenen Wertes. |
Re: eigener String in Registry
Hallo.
Danke für die schnelle Antwort und die Tips. Hab den Fehler gerade gefunden: Die Funktion wurde noch in nem anderen Unit aufgerufen, was ich eigentlich nicht mehr verwende aber noch im Projekt habe... hab den Aufruf auskommentiert (brauch den Rest der Unit noch als Vorlage) - jetzt klappts. mfg Tyron |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz