![]() |
prüfen ob MSXML4 installiert ist
Hallo,
ich habe ein kleines Programm das msxml4 verwendet. Bevor das Programm startet wird mit einer Funktion abgefragt ob msxml4 installiert ist. Die Funktion hatte ich aus diesem Forum:
Delphi-Quellcode:
Das funktioniert auf Win2000 ganz gut. Wenn das aber unter WinXP läuft dann erhalte ich immer ein false, ob msxml installiert ist oder nicht.
function msxml4Exists():boolean;
var reg :TRegistry; s :String; begin reg:= TRegistry.Create(KEY_READ); if (reg<>nil)then begin with reg do try RootKey := HKEY_CLASSES_ROOT; if (OpenKey('CLSID\'+ GUIDToString(CLASS_DOMDocument40) +'\InProcServer32',false)) then try s:=ReadString(''); Result :=(s<>'') and (FileExists(s)); finally CloseKey; end; finally Free; end; end; end; Kann mir jemand weiterhelfen? Danke |
Re: prüfen ob MSXML4 installiert ist
Pardon :oops:
Muss gleich nmochmal editieren.. Edit2: Versuch doch einfach mit dem Prog nach der .dll zu suchen! Ausserdem ist MS XML4.0 automatisch bei XP drauf. |
Re: prüfen ob MSXML4 installiert ist
Hi,
das Problem ist, dass unter XP die Wildcard %SYSDIR% verwendet wird. Am Besten änderst du die fileexists-Zeile. Chris |
Re: prüfen ob MSXML4 installiert ist
Zitat:
Wie meinst Du nach der DLL suchen? In den Systemverzeichnissen? Liegt die DLL immer im selben Verzeichnis? Zitat:
Delphi-Quellcode:
Was könnte ich da ändern? Wie gesagt den Code habe ich aus diesem Forum. Hab ihn nicht selbst geschrieben.
Result :=(s<>'') and (FileExists(s));
Und was war mit %SYSDIR%? Sollte ich %SYSDIR%\msxml.dll suchen lassen? Danke |
Re: prüfen ob MSXML4 installiert ist
oh.. jetzt sehe ich es. der Pfad steht so in der Registry drin %SystemRoot%\System\msxml.dll
Kann ich nicht auch irgendwo den Wert von %SystemRoot% auslesen? |
Re: prüfen ob MSXML4 installiert ist
Wenn ich mich nicht irre gibt es solche Konstanten in Delphi, die auf das Windows Verzeichnis und auf das System-Verzeichnis hinweisen.
|
Re: prüfen ob MSXML4 installiert ist
Danke euch für die Hinweise. :-D
Falls es jemanden interessiert so funktioniert es auch unter WinXP:
Delphi-Quellcode:
function msxml4Exists():boolean;
var reg :TRegistry; s:String; begin reg:= TRegistry.Create(KEY_READ); if (reg<>nil)then begin with reg do try RootKey := HKEY_CLASSES_ROOT; if (OpenKey('CLSID\'+ GUIDToString(CLASS_DOMDocument40) +'\InProcServer32',false)) then try s:=ReadString(''); finally CloseKey; end; finally Free; end; end; //---Wenn in der Pfadangabe %SystemRoot% vorkommt (bei WinXP) if pos('%SystemRoot%',s)>0 then begin s:= getSysDir() + ExtractFileName(s); end; result:=FileExists(s); end;
Delphi-Quellcode:
function getSysDir():String;
var sysdir:String; begin SetLength(sysdir,254); GetSystemDirectory(@sysdir[1],length(sysdir)); //---Da die Zeichenkette nun 255 Zeichen lang ist, existieren NULL Zeichen diese werden in nächter Zeile entfernt Delete(sysdir,pos(chr(0),sysdir),length(sysdir)-pos(chr(0),sysdir)+1); result :=SysDir+'\'; end; |
Re: prüfen ob MSXML4 installiert ist
Ich denke mal Chris sollte das in seinem Tutorial mit einfügen :)
|
Re: prüfen ob MSXML4 installiert ist
Hi,
mit einer kleinen Änderung und einem kleinem Vermerk zum Autor und drin ist es... ;) Chris |
Re: prüfen ob MSXML4 installiert ist
Zitat:
Delphi-Quellcode:
var
s : string; begin SetLength(s,MAX_PATH); SetLength(s,GetSystemDirectory(@s[1],length(s))); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 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-2025 by Thomas Breitkreuz