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


Автор: Vaivero 29.9.2011, 19:49
Есть кусок кода, который пытаюсь перевести на С++ с Delphi:
Код

procedure TForm1.ListBox1Click(Sender: TObject);
begin
  with ListBox1 do
  begin
     (Items.Objects[ItemIndex] as TButton).visible:=true;
  end;
end;


Что-то ничего толкового в голову не приходит.. Помогите, пожалуйста

Автор: Cheloveck 29.9.2011, 20:41
Цитата(Vaivero @  29.9.2011,  20:49 Найти цитируемый пост)
Что-то ничего толкового в голову не приходит.

Чтобы не справиться с этим нужно вообще ничего не знать. Не удивительно, что не приходит. smile

Код

void TForm1::ListBox1Click(TObject * Sender)
{
    ((TButton *)ListBox1->Items->Objects[ItemIndex])->visible = true; // Наверное, Visible
}


Или так, доки глянь...
Код

void TForm1::ListBox1Click(TObject * Sender)
{
    ((TButton *)ListBox1->Items->Objects[ListBox1->ItemIndex])->visible = true; // Наверное, Visible
}

Автор: Vaivero 29.9.2011, 21:26
По вашему варианту вообще не компилится..
Я делала так:
Код

dynamic_cast<TButton*>(ListBox1->Items->Objects[ListBox1->ItemIndex])->Visible = true;

 однако при выполнении программы ругается: "Access violation at address 401006167 in module 'vcl60.bpl'. Read of adress 00000057"

Автор: math64 29.9.2011, 22:25
А в списке действительно кнопки лежат? Delphi ведь это не проверяет, и если у объекта есть свойство Visible всё будет работать.
dynamic_cast<> проверяет и вернёт NULL если это не кнопка.
PS:Тема вообще-то дожна быть в программирование на C++Builder - вы же на билдер переводите, а не VS.

Автор: Vaivero 30.9.2011, 21:34
Спасибо))) и правда, не кнопки были)

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