2015-07-17 21 views
1

Под FormCreate Delphi X Е8, в я использую следующий синтаксис для применения функции AntiFreeze:TIdAntiFreeze Реализация

if Assigned(AntiFreeze) then FreeAndNil(AntiFreeze); 

// or sometimes: AntiFreeze := TIdAntiFreeze.Create(NIL); 

Я пытался реализовать его в C++ Builder X Е8, как это:

if (AntiFreeze->Assign()) { 
    AntiFreeze->Active; 
    AntiFreeze->Free(); 
    } 

Но это не сработает. Мне нужно помочь вам сказать мне правильный путь.

Большое спасибо ..

ответ

2

код Дельфи освобождая TIdAntiFreeze компонент, который был размещен на форме во время разработки. Если вам не нужен компонент, не помещайте его в форму в первую очередь.

Это, как говорится, C++ эквивалент кода Delphi будет:

Это, как говорится, вы действительно должны стремиться не использовать TIdAntiFreeze вообще. Вы не должны делать что-нибудь в контексте основного потока пользовательского интерфейса, который блокирует основной цикл сообщений более чем на несколько секунд. Большинство операций Indy лучше подходят для использования в рабочих потоках вместо основного потока пользовательского интерфейса. TIdAntiFreeze работает только в основном потоке пользовательского интерфейса, перекачивая основной контур сообщения, в то время как операции Indy блокируют основной поток.

+0

Мой другой вопрос, который лучше поместить эти коды в 'FormCreate' или в' (TComponent * Owner): TForm (Owner) '. Спасибо, Реми. –

+0

@July: Это должно было быть опубликовано как новый вопрос. В любом случае НИКОГДА не используйте событие «OnCreate» формы в C++, так как это может вызвать незаконное поведение, если/когда вызывается конструктором базового класса 'TCustomForm' до того, как вызывается конструктор производной формы. ВСЕГДА используйте фактический конструктор производной формы. Delphi не страдает от этой проблемы, потому что ее модель создания объекта противоположна модели создания C++. Если вы хотите получить более подробную информацию, напишите новый вопрос. –

 Смежные вопросы

  • Нет связанных вопросов^_^