Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Ошибка компилятора при работе с реестром


Автор: santey 15.12.2012, 11:06
Rad Studio XE3

В файле .cpp стоит

#include <registry.hpp> пробовал и #include <windows\rtl\Registry.hpp>

Код в файле .cpp такой 

Код

//функция проверки иконки
bool TPropertieForm::IconsIs(bool number)
{   
   TRegistry *reg=new TRegistry(KEY_READ);
   AnsiString s1[2]={"Start Menu","Desktop"};
   reg->RootKey=HKEY_CURRENT_USER;
   reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders",false);
   IconsPapka[number]=reg->ReadString(s1[number])+"\\control.lnk";
   reg->CloseKey();
   delete reg;
   return FileExists(IconsPapka[number]);    
}


Если данную функцию заккоментировать, то все работает,
в ином случае возникает ошибка компилятора

[ilink32 Error] Error: Unresolved external '__fastcall System::Win::Registry::TRegistry::SetRootKey(void *)' referenced from C:\PROGRAM FILES\EMBARCADERO\RAD STUDIO\10.0\PROJECTS\Control\DEBUG_BUILD\PROPERTIEUNIT.OBJ
[ilink32 Error] Error: Unable to perform link

Причем, если все заккоментировать и открывать по одной строчке кода, то ошибка уже возникает сразу же на 
reg->RootKey=HKEY_CURRENT_USER;

В чем может быть проблема? Подскажите.

Автор: artsb 15.12.2012, 12:25
Цитата(santey @  15.12.2012,  11:06 Найти цитируемый пост)
[ilink32 Error] Error: Unresolved external '__fastcall System::Win::Registry::TRegistry::SetRootKey(void *)' referenced from C:\PROGRAM FILES\EMBARCADERO\RAD STUDIO\10.0\PROJECTS\Control\DEBUG_BUILD\PROPERTIEUNIT.OBJ
[ilink32 Error] Error: Unable to perform link

Линковщик не может найти реализацию для метода SetRootKey()

У меня ваш код собирается. Значит:
- вы что-то накрутили в настройках
- у вас "слетела" студия

Автор: santey 15.12.2012, 14:55
Студию установил несколько дней назад, все настройки студии по умолчанию.
Единственно, когда работал в студии 2010 в проекте стояли компоненты TMS, которые перед переносом в новую студию я удалил из проекта.

Автор: artsb 15.12.2012, 15:11
Я собирал под XE.
Может в XE3 проперти RootKey упразднили... Посмотрите в справке.

Автор: santey 15.12.2012, 17:28
Нет не упразднили, в справке написан такой же код что и у меня.

Млин, что же делать.

Автор: Dem_max 15.12.2012, 17:29
http://qc.embarcadero.com/wc/qcmain.aspx?d=99536

Добавлено через 58 секунд
http://www.cyberforum.ru/cpp-builder/thread440178.html

Автор: santey 15.12.2012, 17:50
Спасибо громадное, все заработало, весь инет перерыл, сам так и нашел.

Автор: Dem_max 15.12.2012, 17:52
Я ничего не делал скопировал твою строку в гугл и он нашел проблему за 0,00XXX сек

Автор: santey 15.12.2012, 18:45
В этом виновата персонализация поиска, у меня на второй странице оказалось эта инфа. 
А в Яндексе в конце третьей. Сейчас проверил.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)