для поиска косяка применял метод комментирования всего лишнего, так и добрался до этого указателя
А для проверки запуска диалогa я специально весь код вырезал оттуда, чтоб чисто окно запустилось и все:
void __fastcall TForm::Button1Click(TObject *Sender)
{
AnsiString fname;
if(OpenDialog1->Execute())
{
fname = OpenDialog1->FileName;
}
}
Кстати, с SaveDialog тот же косяк происходит, при работающем потоке (когда там указатель) окно нельзя открыть - программа падает. Где-то поток не поделил память с этим окном