![]() |
Ergebnisse einer For-Schleife in einer Liste darstellen.
Moin,
habe folgendes Problemchen: möchte gerne in einer For-Schleife entstehenden Ergebnisse in einer Liste ausgeben. Der jetzige Code gibt nur den letzten der Werte im Panel aus. Ich hätte aber gerne eine Liste mit alles Werten.
Delphi-Quellcode:
[edit=SirThornberry]"diein" durch "in" ersetzt - Mfg, SirThornberry[/edit]
begin
WMI:=CreateOleObject('WbemScripting.SWbemLocator'); wmiService := wmi.ConnectServer('.', 'root\wmi'); nicstatus := wmiService.InstancesOf('MSNdis_MediaConnectStatus'); p := nicstatus._NewEnum; p.QueryInterface(IEnumVariant, Enum); hilf := 0; i := nicstatus.Count; for cnt := 0 to i - 1 do begin Enum.Next(1, card, F); connected := card.NdisMediaConnectStatus; if (connected = 0) then begin Status := 'verbunden'; end else begin Status := 'nicht verbunden'; end; Panel1.Caption := card.InstanceName + ' : ' + status; end; end; |
Re: Ergebnisse einer For-Schleife in einer Liste darstellen.
Delphi-Quellcode:
Panel1.Caption := Panel1.Caption + '; ' + card.InstanceName + ' : ' + status;
|
Re: Ergebnisse einer For-Schleife in einer Liste darstellen.
Hallo Tod787,
wenn ich dein Problemchen richtig verstehen, musst du den String den du in Panel1.Caption übergibst, einfach nacheinander in eine Listbox schreiben (z. B. ListBox1.Items.Add( 'hier steht der String')). Ich hoffe, das war dein Problem. Gruß, Linkat |
Re: Ergebnisse einer For-Schleife in einer Liste darstellen.
Hallo mkinzler und Linkat
Vielen Dank! Es funktioniert beides wobei die Listenausgabe von Linkat etwas übersichtlicher ausschaut. Mein Problem ist jetzt nur noch, dass ich das ganze in einem Timer aufrufe und somit die gleichen Strings immer und wieder eingefügt werden. Wie schaffe ich es dass die Ausgabe nur 1x stattfindet? |
Re: Ergebnisse einer For-Schleife in einer Liste darstellen.
Du willst die Liste aktualisieren, oder? Sonst macht der Timer irgendwie keinen Sinn.
|
Re: Ergebnisse einer For-Schleife in einer Liste darstellen.
Ja genau das möchte ich machen. Läuft auch schon, nur soll die Ausgabe nur einmal dastehen und im Intervall aktualisiert werden.
|
Re: Ergebnisse einer For-Schleife in einer Liste darstellen.
Versuch es mal so (ungetestet):
Delphi-Quellcode:
Für str kannst Du dann z.B. Listbox.Items angeben.
procedure Wuppdi(const str: TStrings);
... begin str.Items.BeginUpdate; try str.Clear; WMI:=CreateOleObject('WbemScripting.SWbemLocator'); wmiService := wmi.ConnectServer('.', 'root\wmi'); nicstatus := wmiService.InstancesOf('MSNdis_MediaConnectStatus'); p := nicstatus._NewEnum; p.QueryInterface(IEnumVariant, Enum); hilf := 0; i := nicstatus.Count; for cnt := 0 to i - 1 do begin Enum.Next(1, card, F); connected := card.NdisMediaConnectStatus; if (connected = 0) then begin Status := 'verbunden'; end else begin Status := 'nicht verbunden'; end; str.Items.Add(card.InstanceName + ' : ' + status); end; finally str.Items.EndUpdate; end; end; |
Re: Ergebnisse einer For-Schleife in einer Liste darstellen.
Dann würde ich die Daten zuerst in eine StringList füllen
und die Eigenschaft Duplicates auf dupIgnore einstellen. Die StringList kannst Du anschliessen in die ListBox übertragen. Grüße Klaus |
Re: Ergebnisse einer For-Schleife in einer Liste darstellen.
Dann lösch die Liste am Anfang jedes Timer-Intervalls. Dann werden die Elemente in ihrer aktuellen Form wieder hinzugefügt.
|
Re: Ergebnisse einer For-Schleife in einer Liste darstellen.
Zitat:
Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:12 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