Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка Variable required 
:(
    Опции темы
Михалыч
Дата 3.9.2011, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 472
Регистрация: 1.7.2008

Репутация: нет
Всего: нет



Взял программу для локализации Delloc . на делфи 7,  нормально компилируется , а в делфи 2010 , выдает вот такую ошибку:
[DCC Error] Unit1.pas(1257): E2036 Variable required    вот на этой строке "   Addr( LcCallBack ), Self ) = 1 "


var
  iEngUsLCID : LCID;
begin
  iEngUsLCID := LANG_ENGLISH + SUBLANG_ENGLISH_US shl 10 + SORT_DEFAULT shl 16; { US English LCID }
  if LoadLcf( ChangeFileExt( ParamStr( 0 ), '.lcf' ), iEngUsLCID,
    Addr( LcCallBack ), Self ) = 1
  then  Form1.sComboBox3.ItemIndex := Form1.sComboBox3.Items.
    IndexOfObject( pointer( iEngUsLCID ) );
  TranslateComponent( Self );
end;

Подскажите как исправить?


--------------------
За частый поиск был забанен во всех известных поисковых системах.
Обиженных  комодераторов: 1 
PM MAIL   Вверх
volvo877
Дата 3.9.2011, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 14
Всего: 116



Зачем там Addr, расскажешь? Если сигнатура твоей LcCallBack совпадает с сигнатурой, описанной в TLcCallBack, то все и без взятия адреса будет работать...
PM MAIL   Вверх
Михалыч
Дата 3.9.2011, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 472
Регистрация: 1.7.2008

Репутация: нет
Всего: нет



Вот функция:

Код

function TForm1.LcCallBack(iLCID: integer; pUd: pointer): integer;
begin
with TLanguages.Create
  do  begin
      TForm1( pUd ).sComboBox3.Items.AddObject( NameFromLocaleID[ iLCID ],
        pointer( iLCID ) );
      Free;
      end;
  result := 1;
end;


И вот Combobox
Код

procedure TForm1.sComboBox3Change(Sender: TObject);
begin
 LoadLcf( ChangeFileExt( ParamStr( 0 ), '.lcf' ),
    LCID( Form1.sComboBox3.Items.Objects[ Form1.sComboBox3.ItemIndex ] ), nil, nil );
  TranslateComponent( Self );
end;




А это должно быть в Create

Код

var
  iEngUsLCID : LCID;
begin
  iEngUsLCID := LANG_ENGLISH + SUBLANG_ENGLISH_US shl 10 + SORT_DEFAULT shl 16; { US English LCID }
  if LoadLcf( ChangeFileExt( ParamStr( 0 ), '.lcf' ), iEngUsLCID,
    Addr( LcCallBack ), Self ) = 1
  then  Form1.sComboBox3.ItemIndex := Form1.sComboBox3.Items.
    IndexOfObject( pointer( iEngUsLCID ) );
  TranslateComponent( Self );
end;



--------------------
За частый поиск был забанен во всех известных поисковых системах.
Обиженных  комодераторов: 1 
PM MAIL   Вверх
volvo877
Дата 4.9.2011, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 14
Всего: 116



Цитата(Михалыч @  3.9.2011,  22:00 Найти цитируемый пост)
Вот функция:
Неправильно. Функция не должна быть членом класса формы, ко всему прочему у нее еще и модель вызова другая, нужен stdcall. Опиши ее вот так:

Код
function LcCallBack( iLCID : integer; pUd : pointer ) : integer; stdcall;
begin
with TLanguages.Create
  do  begin
      TForm1( pUd ).sComboBox3.Items.AddObject( NameFromLocaleID[ iLCID ],
        pointer( iLCID ) );
      Free;
      end;
  result := 1;
end;

// , и потом в Create:
var
  iEngUsLCID : LCID;
begin
  iEngUsLCID := LANG_ENGLISH + SUBLANG_ENGLISH_US shl 10 + SORT_DEFAULT shl 16; { US English LCID }
  if LoadLcf( ChangeFileExt( ParamStr( 0 ), '.lcf' ), iEngUsLCID, LcCallBack, Self ) = 1
  then  Form1.sComboBox3.ItemIndex := Form1.sComboBox3.Items.
    IndexOfObject( pointer( iEngUsLCID ) );
  TranslateComponent( Self );
end;

, не надо никаких Addr, еще раз говорю.
PM MAIL   Вверх
Михалыч
Дата 4.9.2011, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 472
Регистрация: 1.7.2008

Репутация: нет
Всего: нет



Большое спасибо что начали помогать,а то я что то не пойму в чем дело.
Но теперь новая ошибка:  [DCC Error] Unit1.pas(1256): E2009 Incompatible types: 'regular procedure and method pointer'
Код

var
  iEngUsLCID : LCID;
begin
  iEngUsLCID := LANG_ENGLISH + SUBLANG_ENGLISH_US shl 10 + SORT_DEFAULT shl 16; { US English LCID }
  if LoadLcf( ChangeFileExt( ParamStr( 0 ), '.lcf' ), iEngUsLCID, LcCallBack, Self ) = 1
  then  Form1.sComboBox3.ItemIndex := Form1.sComboBox3.Items.
    IndexOfObject( pointer( iEngUsLCID ) );
  TranslateComponent( Self );
end;


Вот на этой строке :   if LoadLcf( ChangeFileExt( ParamStr( 0 ), '.lcf' ), iEngUsLCID, LcCallBack, Self ) = 1
Указывает на функцию " LcCallBack"


--------------------
За частый поиск был забанен во всех известных поисковых системах.
Обиженных  комодераторов: 1 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.2159 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.