Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - 94 % Systemauslastung[done]
cromos - Mi 01.10.03 19:40
Titel: 94 % Systemauslastung[done]
Hallo.
Ich habe ein Problem: In einem ListView sind Ordnernamen
aufgeführt. Die sollen mittels einer Schleife durchlaufen werden.
inerhalb dieser Schleife läuft eine andere. Diese sucht alle Dateien die
sich in dem betreffenden Ordern befinden und übergibt diese an eine Listbox.
Das Problem. Das Programm verursacht 94% Systemauslastung.
Das liegt an der Schleife die die Dateien sucht.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45:
| procedure TForm17.FormCreate(Sender: TObject); var sl2: TStringList; var sli,lbi,lvp,res : integer; var ProgrammOrdner,IniPak2,gp : String; ini : TIniFile; ListItem: TListItem; ds: TSearchRec; begin lblZuSuchen.Caption := form1.txtSuch.Text;
ProgrammOrdner:=ExtractFilePath(application.ExeName); ini:=TIniFile.Create(ProgrammOrdner +'\est_term.ini'); Try IniPak2 := ini.ReadString('Erweiterte Suche','Pakete','default'); Finally Ini.Free; end;
sl2:=TStringList.Create; try sl2.Delimiter:=','; sl2.DelimitedText:=IniPak2; for sli := 0 to sl2.Count - 1 do begin ListView1.Items.BeginUpdate; ListItem := ListView1.Items.Add; ListItem.Caption := sl2[sli]; ListView1.Items.EndUpdate; end; finally sl2.Free; end;
for lvp := 0 to ListView1.Items.Count - 1 do gp := listView1.Items.Item[lvp].Caption;
res := FindFirst(ProgrammOrdner + 'Data\' + gp +'\*.estt',faAnyFile,ds); while(res =0) do begin listBox1.Items.add(ds.Name); end;
end; |
Woran liegt das?? Bzw. wie kann ich das ändern. Das die Dateien in eine Listbox kommen ist nur Probeweise. Ich will die Dateien später alle einzeln nach einem String durchsuchen lassen.
:?: :?:
Gruss
Cromos
MSCH - Mi 01.10.03 19:43
schreib mal ListView.Begin- und EndUpdate vor- bzw. nach dem For-Statement. Ansonsten brings nicht viel.
grez
msch
cromos - Mi 01.10.03 19:58
| Zitat: |
schreib mal ListView.Begin- und EndUpdate vor- bzw. nach dem For-Statement. Ansonsten brings nicht viel.
|
Wie jetzt? Also habe das mal gemacht. Aber soweit lief ja alles wunderbar.
Das Proplem fing an, als diese Routine dazu kam:
Delphi-Quelltext
1: 2: 3: 4:
| res := FindFirst(ProgrammOrdner + 'Data\' + gp +'\*.estt',faAnyFile,ds); while(res =0) do begin listBox1.Items.add(ds.Name); end; |
Diese soll nämlich alle Dateien suchen und in die Listbox packen.
Also mit End- und Begin Update hat das nix zu tun???!!!!!
Gruss
Cromos
tommie-lie - Mi 01.10.03 20:34
Titel: Re: 94 % Systemauslastung
MSCH meint, du sollst Begin- und End-Update nicht IN die Schleife machen, sondern davor und dahinter:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| sl2.Delimiter:=','; sl2.DelimitedText:=IniPak2; ListView1.Items.BeginUpdate; for sli := 0 to sl2.Count - 1 do begin ListItem := ListView1.Items.Add; ListItem.Caption := sl2[sli]; end; ListView1.Items.EndUpdate; |
Sonst wird ja bei jedem Schleifendurchlauf der Listview trotzdem gezeichnet, was natürlich genauso viel bringt, wie wenn du Begin- und EndUpdate gar nicht benutzen würdest.
cromos - Mi 01.10.03 20:55
Hallo,
das mit dem Begin und EndUpdate hat nicts zu sagen. Hab es jetzt zwar mal so umgesetzte, aber bis dahin lief ja vorher auch alles Problemlos.
Dieser Code ist es der die Probleme bereitet:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| for lvp := 0 to ListView1.Items.Count - 1 do gp := listView1.Items.Item[lvp].Caption;
res := FindFirst(ProgrammOrdner + 'Data\' + gp +'\*.estt',faAnyFile,ds); while(res =0) do begin listBox1.Items.add(ds.Name); end; |
Er verursacht die 94%. und zwar genauer gesagt ab dem
res := .......
Kann mir jemand helfen?
Gruss
Cromos
cromos - Mi 01.10.03 21:04
Titel: Ahrrrrr
:oops: :oops: :oops: :oops:
Oh man, ich hab den Wald vor lauter Bäumen nicht gesehen.
War mein Fehler.
hatte:
Delphi-Quelltext
1: 2: 3:
| res := FindNext(ds); end; FindClose(ds); |
vergessen. :? :? :oops: :oops: :oops:
Sorry. Jetzt läuft es wie es sein soll.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!