Форма. Выпуск + NIL

вы можете попробовать использовать функцию mysql lpad

select  Cust_Id, lpad(Cust_Id, 6, '0')
FROM Customers

https://dev.mysql.com/doc/refman/8.0/ru/string-functions.html#function_lpad

11
задан WeGoToMars 30 November 2018 в 10:21
поделиться

5 ответов

Поместите строку

  Form1 := nil;  

сразу после вызова для Выпуска.

Выпуск просто добавляет сообщение CM_RELEASE к Форме, которая позволяет Форме заканчивать то, что находится в ее очереди (обработчики событий) прежде, чем обработать сообщение CM_RELEASE, что означает обычно просто называть Свободным.
Так, после называния Выпуска Вы не должны предполагать что неподвижные точки переменной Формы к допустимой Форме, таким образом помещая ноль в переменную.

17
ответ дан 3 December 2019 в 02:12
поделиться

Из Вас мог просто всегда называть это:

procedure FreeOrReleaseAndNil(var Obj);
var
  Temp: TObject;
begin
  Temp := TObject(Obj);
  Pointer(Obj) := nil;
  if Temp is TCustomForm then
    TCustomForm(Temp).Release
  else
    Temp.Free;
end;

Обязательно проверьте тип после кастинга к TObject, поскольку Вы не можете протестировать тип Obj. Это должно быть безопасно, так как как Свободный, Выпуск является невиртуальным.

4
ответ дан 3 December 2019 в 02:12
поделиться

В Delphi Win32 состоит в том, чтобы звонить соответствующий способ освободить объекты

FreeAndNil(Form1)

Это делает обе работы в единственном вызове.

Однако у меня есть подлое чувство, что существует больше к Вашему вопросу, чем кажется на первый взгляд. Вы используете Delphi для.NET - и если так, который версия?

0
ответ дан 3 December 2019 в 02:12
поделиться

Выпуск просто (потенциально) задержан Свободный. 1-й вещью, которую необходимо сделать после называния Выпуска, является nilling переменная.
Затем Вы будете в безопасности, даже если некоторый код попытается сослаться на Form1, прежде чем он будет на самом деле уничтожен. В случае как в Вашем коде это просто безопасно воссоздало бы другой Form1 для нового использования, не беспокоя уничтожаемое то.

11
ответ дан 3 December 2019 в 02:12
поделиться

Как упоминается, Выпуск является только задержанным Свободным, чтобы форма использовала, если это хочет Закрыться/Освободить себя. Другое затем быть задержанным его не делает ничего различного от Выпуска. Таким образом, там бесполезен в вызове Выпуска в том примере. Бесплатный вызов, кажется, более логичен. И можно установить его на ноль после вызова Свободного или использовать FreeAndNil.

Если Вы все еще хотите использовать Выпуск, который прекрасен. Просто установив значение переменной к нулевым работам. Выполнение, которое не заставляет форум вести себя по-другому. Но помните, что в этом случае это более эффективно и более детерминировано для вызова Свободным вместо Выпуска. Мое предпочтение состоит в том, чтобы только использовать Выпуск, где действительно необходим.

2
ответ дан 3 December 2019 в 02:12
поделиться
Другие вопросы по тегам:

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