The reason is that when using Delphi, the TOpenDialog and TSaveDialog will use the classic Open and Save Dialogs on Windows < Vista and fall-forward to the new Common Item Dialogs handled by TFileOpenDialog and TFileSaveDialog (both will not fall backward).
When you have your COM initialisation done wrong, your application appears to hang. Amidst the plethora of threads started by the COM subsystem, these two dead-lock:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
@echo off
:: http://superuser.com/questions/768984/show-exe-path-of-running-processes-on-the-command-line-in-windows
if [%1] == [] goto :help
PowerShell Get-Process %* ^| Format-List Path
goto :eof
:help
echo Syntax:
echo %0 ProcessName
echo Shows the full EXE paths of any running process with the ProcessName name.
echo Example:
echo %0 DevEnv
echo Shows the paths of running Visual Studio processes