30,000 files in that directory ? It sounds to me like TOpenDialog is trying to populate its list with all those files. Thats a lot of entries.
In an unrelated exercise, I just established that calling FileExists() uses up a few mS on my pretty fast system. Doing it 30,000 times would take at least a minute. So, did you let it run to completion ? When it finished, finally, did the OpenDialog list make sense ?
On the other hand, wonder why SaveDialog is so much faster ?
Davo