>>434
ええと、遅いのは ループ中にあった
  ListBox1.Items[i]:=ExtractFileName(ListBox1.Items[i]);

これのせいだと思うよ。 >>432のように再帰ループ中から外して さらに
 assignしてからを止めて

  ListBox1.Items.Add(ExtractFileName(filelist[i]));
と末尾に追加した方がいい