![]() |
Installed Software function
Hi Delphianer
habe folgende Function im Netz gefunden:
Delphi-Quellcode:
Bekomme bei folgender Zeile:
function GetUninstallList : string;
const cUninstallPath = 'Software\Microsoft\Windows\CurrentVersion\Uninstall'; var reg: TRegistry; TmpKeyNames: TStringList; i: Integer; TmpResult: string; begin TmpResult := ''; Result := TmpResult; TmpKeyNames := TStringList.Create; TmpKeyNames.Clear; reg := TRegistry.Create; reg.RootKey := HKEY_LOCAL_MACHINE; if reg.KeyExists(cUninstallPath) then if reg.OpenKeyReadOnly(cUninstallPath) then reg.GetKeyNames(TmpKeyNames); reg.CloseKey; for i := 0 to TmpKeyNames.Count - 1 do if reg.OpenKeyReadOnly(cUninstallPath + '\' + TmpKeyNames.Strings[i]) then begin if reg.ValueExists('DisplayName') then TmpResult := TmpResult + reg.ReadString('DisplayName') + CRLF; reg.CloseKey; end; reg.Free; TmpKeyNames.Free; Result := TmpResult; end;
Delphi-Quellcode:
folgenden Fehler:
TmpResult := TmpResult + reg.ReadString('DisplayName') + CRLF;
Code:
Was habe ich den falsch gemacht?
[DCC Fehler] Unit1.pas(35): E2003 Undeklarierter Bezeichner: 'CRLF'
LG & Danke schon mal! |
AW: Installed Software function
Ja wo ist denn CRLF definiert?! Nirgends, genau.
Ersetzte es z.B. mal mit sLineBreak. (An sich wäre die Übergabe von TStrings hierfür eher geeignet ... aber naja.) |
AW: Installed Software function
Funzt einwandfrei! DANKE!
|
AW: Installed Software function
Ich hoffe du weißt auch warum es jetzt geht und arbeitest nicht nur mit Copy & Paste :roll:
|
AW: Installed Software function
Sehe ich das falsch, oder hat diese Funktion noch Optimierungspotential? Wozu die Variable tmpResult gebraucht wird, erschließt sich mir z.B. nicht.
|
AW: Installed Software function
Das ist zwar sinnlos, aber nicht so schlimm. Schlimmer finde ich, dass kein Try-finally-Block genutzt wird, um die erzeugten Objekte sicher wieder freizugeben.
|
AW: Installed Software function
Jepp, auch ein Clear einer gerade erzeugten TStringlist ist so flüssig, das ist schon überflüssig. Wer opfert sich und schreibt das mal ins Reine?
|
AW: Installed Software function
Ich denke mal, so ist es besser. Ob mein Stil euch aber gefällt, ist eine andere Sache :wink:
Delphi-Quellcode:
procedure GetUninstallList(AList: TStrings);
const UNINSTALL_PATH = 'Software\Microsoft\Windows\CurrentVersion\Uninstall\'; DISPLAY_NAME = 'DisplayName'; var LIndex: Integer; begin AList.Clear; With TRegistry.Create do try RootKey := HKEY_LOCAL_MACHINE; If KeyExists(UNINSTALL_PATH) and OpenKeyReadOnly(UNINSTALL_PATH) then begin GetKeyNames(AList); CloseKey; end; LIndex := 0; While LIndex < AList.Count do begin If not (OpenKeyReadOnly(UNINSTALL_PATH + AList[LIndex]) and ValueExists(DISPLAY_NAME)) then AList.Delete(LIndex) else begin AList[LIndex] := ReadString(DISPLAY_NAME); Inc(LIndex); end; CloseKey; end; finally Free; end; end; |
AW: Installed Software function
<falsche Bedenken gelöscht>
|
AW: Installed Software function
Dann ist es einer weniger :zwinker:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:43 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