AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

schnellere Procedure gesucht

Ein Thema von bluescreen25 · begonnen am 19. Dez 2005 · letzter Beitrag vom 21. Dez 2005
 
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: schnellere Procedure gesucht

  Alt 20. Dez 2005, 16:04
Zitat:
2.) List == mediaplayer_frm.PlayList_ListBox.Items wird mit .BeginUpdate/.EndUpdate gelockt und somit nicht ständig neu gezeichnet. Die TStrings dieser VCL Objekte wie TListBox, TMemo, TComboBox sind nur Handler um direkt auf das Windows Fenster Handle mit seiner internen Liste zuzugreifen. Das dauert alles sehr sehr lange und ist ineffizient.
noch mal eine Frage, wenn ich aber jetzt meine Playlist (TStringlist) mit List fülle, dann habe ich die Pfade dort drinstehen wo ich diese haben möchte für den Verlauf meines Programms.

Meine PlayList_Listbox soll daher parallel nur die Dateinamen erhalten. Nur wo und wie greife ich die hier am besten ab, ohne wieder alles zu verlangsamen ?

und wieso durchsucht der die Ordnerstruktur die ich auswähle (incl. Unterordner) und dann noch diejenige, die darüber liegt (eine Ebene höher) ???


Aufruf: (ist i.O. da mit alter Procedure schon gelaufen, habe unten Textdateien ausgelagert zum prüfen.

Delphi-Quellcode:
procedure Tmediaarchiv_frm.Dir_to_PlayList;
var Ext: TStringList;
    dir: string;
 begin
   ext := TStringList.Create;
   dir := mediaplayer_frm.spSkinSelectDirectoryDialog1.Directory;
   //ext.Sorted := false;
   Flag_File_search_stop := false;
    begin
     try
      if config_frm.File_Mask_check_mp3.Checked = true then
      ext.Add('.' + config_frm.File_Mask_check_mp3.Caption);
      if config_frm.File_Mask_check_wav.Checked = true then
      ext.Add('.' + config_frm.File_Mask_check_wav.Caption);

      AllFilesWithExtension(dir,Playlist,ext);
       
     finally
     ext.SaveToFile('d:\ext.txt');
     playlist.SaveToFile('d:\playlist.txt');
     ext.Free;
     end;
   end;

Etwas angepasst, fehlten ein paar end; Mir scheint als liegt der Fehler unten beim ListUpdate, bin aber noch nicht fit genug um das zu korregieren. Es sieht so aus, als würde der Path innerhalb der Schleife umgeschrieben.... kann das ?

Delphi-Quellcode:
procedure Tmediaarchiv_frm.AllFilesWithExtension(const Path: String; List, Extension: TStrings);
var
  Tick: Cardinal;

  procedure DoSearch(const Path: String);
  var
    SR: TSearchRec;
  begin
    if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then
    try
      repeat
        if GetTickCount >= Tick then
        begin
          Tick := GetTickCount + 100;
          Application.ProcessMessages;
        end;

        if (SR.Attr and faDirectory <> 0) and (SR.Name <> '.') and (SR.Name <> '..') then
          DoSearch(Path + SR.Name + '\')
        else
          if Extension.IndexOf(ExtractFileExt(SR.Name)) >= 0 then
            List.Add(Path + SR.Name);

      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
 end;

 begin
  List.BeginUpdate;
  try
    Tick := GetTickCount + 100;
    DoSearch(ExtractFilePath(Path));
    mediaplayer_frm.PlayList_ListBox.Items.Addstrings(Playlist);
  finally
    List.EndUpdate;
  end;
end;

Grüße bluescreen25
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 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