У меня такая же проблема (не работает saveialog) в Windows XP.
После множества неудачных попыток, согласно упомянутым вами объемным обменам в группе embarcadero (https://forums.embarcadero.com/thread.jspa?messageID=196950&tstart=0#196950).
Я обнаружил, в чем причина: исходный файл dir и имя файла Savedialog12 были неверными, противоречили друг другу, имя файла содержало полный путь к последнему открытому мной файлу (я думал, что было разумно подготовить сохранение файл, который я открыл последним, к сожалению, то, что я положил в исходный каталог, было равно тому, что я поместил в имя файла!)
Проблема уже была решена очисткой обоих полей диалогового окна сохранения.
Далее, моя первоначальная цель по подготовке сохранения была достигнута путем помещения допустимых значений в соответствующие поля:
SaveDialog1.FileName:=ExtractFileName(Opendialog1.Filename);
SaveDialog1.InitialFileDir:=ExtractFilePath(Opendialog1.Filename);