Часы Delphi XE3 создают новый экземпляр класса

Вопрос:

Я новичок в Delphi, и я использую Rad Studio XE3.

Для целей отладки я бы хотел видеть во время выполнения, какое значение имеет переменная TDateTime если ей было присвоено какое-то значение. Например, имея var date: TDateTime:

date := 0

Итак, я блуждал, если можно использовать окно часов для этой цели. Я пробовал что-то вроде TDateTime.Create(0) или TDateTime := 0, но оба дают сообщения об ошибках в качестве вывода.

Есть ли способ делать то, что мне нужно, с часами?

Заранее спасибо.

Обновление 1 0 As TDateTime тоже не работает.

Лучший ответ:

Часы работают только для просмотра существующих переменных; AFAICT, вы не можете создавать новые переменные для добавления в окно просмотра во время выполнения.

(Кроме того, TDateTime не является объектом в Delphi, как другие отметили в комментариях к вашему вопросу. Это просто double который кодирует дату в интегральной части значения и время в дробной (десятичной) части, oo вы не можете создать экземпляр TDateTime.)

Вы можете использовать окно оценки/изменения (доступно, когда отладчик находится в точке останова через View->Debug Windows->Evaluate/Modify или меню правой кнопки мыши, Run->Evaluate/Modify или Ctrl+F7). для оценки выражения типа DateToStr (0) ‘. Единственный способ просмотра переменной — фактически объявить (и использовать) переменную в вашем коде, а затем установить часы на эту переменную; просто объявить, что этого недостаточно, поскольку компилятор оптимизирует неиспользуемые переменные. Кроме того, функция, которую вы оцениваете, должна быть фактически использована где-то в вашем коде или она не будет доступна. (Компонент не включает функции в исполняемом файле, которые в большинстве случаев фактически не вызываются.)

Если вы хотите, чтобы переменная была доступна при отладке, но не в вашем коде выпуска, вы можете окружить ее с помощью {$IFDEF DEBUG} (который предварительно задан в конфигурации сборки Debug автоматически).

procedure TForm1.FormCreate(Sender: TObject);
{$IFDEF DEBUG}
var
  CurrDate: TDateTime;
{$ENDIF}
begin
  {$IFDEF DEBUG}
  CurrDate := Date;
  // Use CurrDate so the compiler doesn't eliminate it.
  {$ENDIF}
  // Your other code here as usual
end;

Оцените статью
TechArks.Ru
Добавить комментарий