Какие переменные инициализируются когда в Delphi?

Для этого вы должны использовать: флажок селектора. см. следующий код:

$('#form1').submit(function() {
    if $('input:radio', this).is(':checked') {
    } else {
        alert('Please agree to terms and conditions!');
        return false;
    }
});
32
задан Jim McKeeth 14 May 2009 в 00:37
поделиться

3 ответа

Глобальные переменные инициализируются нулем. Переменные, используемые в контексте основного блока begin .. end программы, могут быть особым случаем; иногда они рассматриваются как локальные переменные, особенно для -индексаторов цикла. Однако в вашем примере r является глобальной переменной и выделяется из раздела .bss исполняемого файла, который загрузчик Windows гарантирует, что оно заполнено нулями.

Локальные переменные инициализируются так, как если бы они были переданы в процедуру Initialize . Подпрограмма Initialize использует информацию типа времени выполнения (RTTI) для обнуления полей (рекурсивно - если поле имеет тип массива или записи) и массивов (рекурсивно - если тип элемента является массивом или запись) управляемого типа, где управляемый тип является одним из:

  • AnsiString
  • UnicodeString
  • WideString
  • тип интерфейса (включая ссылки на методы)
  • тип динамического массива
  • вариант

Выделения из кучи не обязательно инициализируются; это зависит от того, какой механизм использовался для выделения памяти. Выделения как часть данных объекта-экземпляра заполняются нулями с помощью TObject.InitInstance . Выделения из AllocMem заполняются нулями, а выделения GetMem не заполняются нулями.

45
ответ дан 27 November 2019 в 20:44
поделиться

I have a similar situation, and thought the same, but when I add other variables used before the record, the values become garbage, so before I use my record I had to initialize using

FillChar(MyRecord, SizeOf(MyRecord), #0)
1
ответ дан 27 November 2019 в 20:44
поделиться

Примечание что в приведенном вами примере кода запись на самом деле является глобальной переменной, поэтому она будет полностью инициализирована. Если вы переместите весь этот код в функцию, это будет локальная переменная, и поэтому, согласно правилам, данным Барри Келли, только ее строковое поле будет инициализировано (в "").

так что он будет полностью инициализирован. Если вы переместите весь этот код в функцию, это будет локальная переменная, и поэтому, согласно правилам, данным Барри Келли, только ее строковое поле будет инициализировано (в "").

так что он будет полностью инициализирован. Если вы переместите весь этот код в функцию, это будет локальная переменная, и поэтому, согласно правилам, данным Барри Келли, только ее строковое поле будет инициализировано (в "").

1
ответ дан 27 November 2019 в 20:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: