Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TListView Problem (https://www.delphipraxis.net/145757-tlistview-problem.html)

Luckie 8. Jan 2010 14:27

Re: TListView Problem
 
Wie kann man denn eine Schleife durch eine Verzweigung ersetzen?

Matze 8. Jan 2010 14:33

Re: TListView Problem
 
Jupp, die Case-Of-Anweisung ist keine Schleife. Dort wird nichts wiederholt ausgeführt.

Das folgende Beispiel zeigt mal einen Ansatz, macht aber noch nicht ganz das, was du haben möchtest (selber groß ;) ). Das Beispiel ist dazu da, damit du siehst, wie man mit der Registry arbeitet. Die Try-Finally-Blöcke sind wichtig. Falls Fehler dazwischen auftreten, wird der Speicher für die Objekte dennoch freigegeben.

Auch zeigt das Beispiel, wie man lesend auf die Registry zugreift (dir reicht der lesende Zugriff). Mit eingeschränkten Benutzerrechten bleibt deine ListView sonst immer leer (soeben getestet)!

Delphi-Quellcode:
Reg:= TRegistry.Create;
try
  Keys := TStringList.Create;
  try
    Reg.RootKey:= HKEY_LOCAL_MACHINE;
    if Reg.OpenKeyReadOnly('SOFTWARE\Microsoft\Windows\CurrentVersion\Run') then
    begin
      Reg.GetValueNames(Keys);

      for i := 0 to Keys.Count - 1 do
      begin
        lItem := ListView1.Items.Add;
        lItem.Caption := Keys[i];
      end;
      Reg.CloseKey;
    end;
  finally
    Keys.Free;
  end;
finally
  Reg.Free;
end;
Grüße, Matze

Edit: Wir haben "CloseKey" bisher ganz unterschlagen.

Luckie 8. Jan 2010 14:34

Re: TListView Problem
 
Dann will ich auch noch mal:
Delphi-Quellcode:
uses
  Registry;

procedure TForm2.Button1Click(Sender: TObject);
var
  Keys: TStringList;
  Reg: TRegistry;
  i: Integer;
  li: TListItem;
begin
  Reg := TRegistry.Create(KEY_READ);
  Keys := TStringList.Create;
  try
    try
      Reg.RootKey := HKEY_LOCAL_MACHINE;
      if Reg.OpenKey('SOFTWARE\Microsoft\Microsoft Antimalware', False) then
      begin
        Reg.GetKeyNames(Keys);
        for i := 0 to Keys.Count - 1 do
        begin
          li := ListView1.Items.Add;
          li.Caption := Keys.Strings[i];
        end;
      end
      else
        raise Exception.Create('Schlüssel konnte nmicht geöffnet werden');
    except
      on E: Exception do
        ShowMessage(E.Message);
    end;
  finally
    Reg.Free;
    Keys.Free;
  end;
end;

Jamah 8. Jan 2010 14:45

Re: TListView Problem
 
Die sehen beide gut aus, und ich hab es auch beides ausprobiert. Es gibt auch keine Errormeldung bis auf die Tatsache, dass ich einfach keine Ausgabe in der ListView bekomme.....
Oder hab ich wieder was leichtes übersehen?

Luckie 8. Jan 2010 14:47

Re: TListView Problem
 
Hat dein Listview auch mindestens eine Spalte und steht der ViewStyle auf vsReport?

Jamah 8. Jan 2010 15:37

Re: TListView Problem
 
Jap

Luckie 8. Jan 2010 15:44

Re: TListView Problem
 
Wie "Jap"? Funktioniert es jetzt?

Matze 8. Jan 2010 15:45

Re: TListView Problem
 
Vermutlich nicht. Er hat die ListView so eingestellt, wie du es gefragt hast:

Zitat:

Zitat von Luckie
Hat dein Listview auch mindestens eine Spalte und steht der ViewStyle auf vsReport?

Zitat:

Zitat von Jamah
Jap


Luckie 8. Jan 2010 15:48

Re: TListView Problem
 
Dann kann ich auch nicht weiterhelfen ohne mehr Informationen.

Matze 8. Jan 2010 15:50

Re: TListView Problem
 
Ich auch nicht. Mein Beispiel funktioniert bei mir definitiv. Deines sieht sehr ähnlich aus und sollte auch klappen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:03 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz