Entwickler-Ecke
Dateizugriff - Mit einer DLL Registryeinträge schreiben und lesen
bis11 - Mo 17.02.03 16:54
Titel: Mit einer DLL Registryeinträge schreiben und lesen
Hi,
die Überschrift sagt ja eigentlich schon alles. Hat das schonmal jemand gemacht und wenn ja wie ? Ich habe das versucht, nur konnt ich leider keine Strings oder Integerwerte übergeben oder auslesen. Ich habe auch den Hinweis von SHAREMEM und der BORLNDMM.DLL beachtet.
AXMD - Mo 17.02.03 17:04
Hi,
Integer-Werte dürften eigentlich keine Probleme machen. Anstelle von Strings nimmst du einfach PChars oder ShortStrings.
Außerdem: wo genau liegt dein Problem? Das geht aus deinem Post irgenwie nicht zu 100% hervor.
AXMD
bis11 - Mo 17.02.03 17:24
Wie ich die Strings oder Integerwerte übergeben habe, wurde in die Registry immer irgendwelche Zeichen eingetragen. Da ich den Hinweis nun mit SHAREMEM und der DLL beachtet hatte, war meine Überlegung, dass ich solche Einträge mit einer Function in einer DLL nicht machen könnte.
Hier mal ein Beispiel, wie ich es in die DLL als Funktion reingeschrieben habe :
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:
| function registry_write_string(progname,valuename,value:string):boolean; var Registry : TRegistry; begin registry_write_string := true; Registry := TRegistry.Create; Registry.RootKey:=HKEY_LOCAL_MACHINE; if Registry.KeyExists('\Software\Verzeichnis\' + progname) = false then try Registry.CreateKey('\Software\Verzeichnis\' + progname); except Registry.Free; registry_write_string := false; Exit; end; try if Registry.OpenKey('\Software\Verzeichnis\' + progname , true) = true then Registry.WriteString(valuename,value) else begin MessageDLG('Es konnte nicht in die Regsitry geschrieben werden',mtError,[mbOK],0); registry_write_string := false; end; finally Registry.CloseKey; Registry.Free; end; end; |
Und so habe ich die DLL in einer Unit eingebunden :
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| unit dll_unit;
interface
function registry_write_string(progname,valuename,value:string):boolean; stdcall;
implementation
function registry_write_string(progname,valuename,value:string):boolean; stdcall; external 'name.dll'; end. |
Dann habe ich ganz normal den Namen aufgerufen und die Werte angegeben.
foxy - Di 18.02.03 09:48
guden
also vor kurzem hatte ich auch porbleme mit strings und .dll
mit der reg. kann ich dich immo leider nicht helfen, aber ich sehe keinen fehler in deinem code
folgendes.... die Stringübergabe, ist sehr fehlerhaft .... darum mach das am besten was AXMD gesagt hat das hat bei mir wunder bewirkt :rofl:
bis11 - Di 18.02.03 13:22
Also für alle, die es interessiert. Ich muß in der DLL natürlich den stdcall; noch mit in die Funktionsanweisung aufnehmen. Dann klappt das auch, bei den Befehlen, wie ich die DLL einbinde.
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!