![]() |
Re: Programmpfad anderer Programme ermitteln
Also eigentlich kann in dem Code doch gar kein Fehler sein, der kommt ja ausm Delphi Swiss Center meiner Meinung nach. Dort stand doch auch was du einbinden musst oder?
|
Re: Programmpfad anderer Programme ermitteln
Es fehlt ComCtrls in den Uses
|
Re: Programmpfad anderer Programme ermitteln
Himmel, Gesäß und Nähgarn, ich hasse diese Code-Kopiererei ohne Hintergrundwissen :wall:. Also gut, ich vervollständige das mal:
Delphi-Quellcode:
Wenn ich nichts übersehen habe, sollte das so gehen.
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Registry; procedure TForm2.FormCreate(Sender: TObject); const UNINST_PATH = 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'; var Reg: TRegistry; SubKeys: TStringList; ListItem: TlistItem; i: integer; sDisplayName, sUninstallString: string; begin { ListView1.ViewStyle := vsReport; ListView1.Columns.add; ListView1.Columns.add; ListView1.Columns[0].caption := 'DisplayName'; ListView1.Columns[1].caption := 'UninstallString'; ListView1.Columns[0].Width := 300; ListView1.Columns[1].Width := 300; } Reg := TRegistry.Create; try try Listview1.Items.BeginUpdate; Listview1.Items.Clear; Reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.OpenKeyReadOnly(UNINST_PATH) then //hier begin SubKeys := TStringList.Create; try Reg.GetKeyNames(SubKeys); //und hier Reg.CloseKey; //und hier for i := 0 to subKeys.Count - 1 do if Reg.OpenKeyReadOnly(Format('%s\%s', [UNINST_PATH, SubKeys[i]])) then //und hier try sDisplayName := Reg.ReadString('DisplayName'); //und hier sUninstallString := Reg.ReadString('UninstallString'); //und hier if sDisplayName <> '' then begin ListItem := Listview1.Add; //und hier ListItem.Caption := sDisplayName; ListItem.subitems.Add(sUninstallString); end; finally Reg.CloseKey; //und hier end; finally SubKeys.Free; end; end; finally ListView1.AlphaSort; Listview1.Items.EndUpdate; //und hier end; finally Reg.CloseKey; //und hier Reg.Free; //und hier end; end; |
Re: Programmpfad anderer Programme ermitteln
Hab ich gerade eingefügt. Also Fehlermeldungen sind schon mal weniger:
Delphi-Quellcode:
[Fehler] Unit2.pas(49): E2003 Undefinierter Bezeichner: 'Listview1'
[Fehler] Unit2.pas(49): E2066 Operator oder Semikolon fehlt [Fehler] Unit2.pas(50): E2066 Operator oder Semikolon fehlt [Fehler] Unit2.pas(65): E2066 Operator oder Semikolon fehlt [Fehler] Unit2.pas(77): E2066 Operator oder Semikolon fehlt [Fehler] Unit2.pas(78): E2066 Operator oder Semikolon fehlt [Fataler Fehler] Project2.dpr(5): F2063 Verwendete Unit 'Unit2.pas' kann nicht compiliert werden |
Re: Programmpfad anderer Programme ermitteln
Poste mal die komplette Unit
|
Re: Programmpfad anderer Programme ermitteln
ListView1 liegt aber auf Form2?
|
Re: Programmpfad anderer Programme ermitteln
Delphi-Quellcode:
unit Unit2;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Registry, ComCtrls; type TForm2 = class(TForm) procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.FormCreate(Sender: TObject); const UNINST_PATH = 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'; var Reg: TRegistry; SubKeys: TStringList; ListItem: TlistItem; i: integer; sDisplayName, sUninstallString: string; begin { ListView1.ViewStyle := vsReport; ListView1.Columns.add; ListView1.Columns.add; ListView1.Columns[0].caption := 'DisplayName'; ListView1.Columns[1].caption := 'UninstallString'; ListView1.Columns[0].Width := 300; ListView1.Columns[1].Width := 300; } Reg := TRegistry.Create; try try Listview1.Items.BeginUpdate; Listview1.Items.Clear; Reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.OpenKeyReadOnly(UNINST_PATH) then begin SubKeys := TStringList.Create; try Reg.GetKeyNames(SubKeys); Reg.CloseKey; for i := 0 to subKeys.Count - 1 do if Reg.OpenKeyReadOnly(Format('%s\%s', [UNINST_PATH, SubKeys[i]])) then try sDisplayName := Reg.ReadString('DisplayName'); sUninstallString := Reg.ReadString('UninstallString'); if sDisplayName <> '' then begin ListItem := Listview1.Add; ListItem.Caption := sDisplayName; ListItem.subitems.Add(sUninstallString); end; finally Reg.CloseKey; end; finally SubKeys.Free; end; end; finally ListView1.AlphaSort; Listview1.Items.EndUpdate; end; finally Reg.CloseKey; Reg.Free; end; end; end. |
Re: Programmpfad anderer Programme ermitteln
Zitat:
|
Re: Programmpfad anderer Programme ermitteln
Listview1 liegt anscheinend auf Form1. Also vor jedes "ListView1" "Form1." davorschreiben, damit es erstmal läuft. Guter Stil ist das zwar nicht, aber was soll' s.
|
Re: Programmpfad anderer Programme ermitteln
Vielleicht helfen etwas
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:25 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