void __fastcall TForm1::SetInterWayClick(TObject *Sender)
{
AnsiString directory;
if(SelectDirectory(directory, sdPerformCreate, NULL))
{
InterContWay->Text=directory;
}
}
Отичия компиляторов C++ Builder 6 и Borland Developer Studio 2006
Поясняю проблему:
Код:
Синтаксис SelectDirectory(AnsiString & Directory, TSelectDirOpts Options, int HelpCtx).
ПОЧЕМУ Could not find a match for SelectDirectory(AnsiString, TSelectDirOpts, int)??? Почему он воспринимает directory как переменную и не берёт на неё адрес?
В Обычном билдере 6 всё работает нормально. В связи с этим вопрос: это какой-то такой - не такой компилер в BDS или это у меня руки не от-туда растут?
Спасибо за внимание.
о чем собственно он и пытается сказать.
Это только предположение - но в принципе подобная ошибка может возникнуть только в таком случае.
Может кто знает? Заплатки существуют к нему? Или может в версии 2007 это исправили?
Цитата: PanCotzky
Может кто знает? Заплатки существуют к нему? Или может в версии 2007 это исправили?
Сервис-пак выходил. Даже на форуме была гдето ссылка вроде. Я его (2006 всмысле) поробовал, подивился мощи и бестолковости и до сих пор использую шестерку. Потому хз.
2007 закачал но все никак не соберусь поставить - потому тоже ничего сказать не могу. Попробуй передать в функцию именно ссылку - может помогет.
Как сами исходники-то с этой функцией работают? Тут вон у народа тоже в BDS2006 с AnsiString проблемы..
Тут, кажись, даже не с AnsiString проблема, а именно с указателями и ссылками. Впрочем, может это только с AnsiString такая проблема есть?
Вызывать функцию нужно так:
Код:
SelectDirectory(directory, TSelectDirOpts() << sdPerformCreate, NULL)
Кстати, в C++ Builder 6 проблемный код не собирается точно с такой же ошибкой =)
Цитата: H010d Freeze
Кстати, в C++ Builder 6 проблемный код не собирается точно с такой же ошибкой =)
вероятнее всего автор забыл объявить и инициализировать массив опций - а пытался передать в функцию непосредственно опцию.