Borland Delphi FAQ
Страница 5.



------------------------------------------------------------

Q-65:  Как можно обнаружить утечки памяти и ресурсов в программе?

------------------------------------------------------------
MSDebug Макса Русова. Hаходится на https://www.dic.ru/users/rusov/.
Поддерживает Delphi 3 и выше, ловит только утечки памяти, но делает это
хорошо.

Hа https://www.numega.com можно купить BoundsChecker for Delphi. Он проверяет
также и утечки ресурсов.

Рекламировался также "MemProof", информацию о котором можно получить на
https://www.listsoft.ru/programs/pr1520.htm.

------------------------------------------------------------

Q-66:  Мне нужно заниматься разбором математических выражений

------------------------------------------------------------
Мне нужно заниматься разбором математических выражений, например, строить
график функции, заданной пользователем во время работы программы.

В rxLib есть компонент TrxMathParser, достаточно мощный для большого
количества применений.

------------------------------------------------------------

Q-67:  Как уменьшить размер исполняемого файла программы?

------------------------------------------------------------
Писать на WinAPI без использования VCL. Это пригодно для и без того
крохотных программ.
Существуют freeware библиотеки, упрощающие программирование без VCL,
например:

KOL https://xcl.cjb.net
ACL https://a-press.parad.ru/pc/bokovikov/delphi

Воспользоваться пакетами (packages) из Delphi 3. Эффект появится, когда
исполняемых файлов больше одного.

Воспользоваться компрессорами исполняемых файлов, например:
Shrinker https://www.blinkinc.com,
WWPack32 https://kolos.uni.lodz.pl/warezak,
NeoLite
ftp://ftp.zdnet.com/pub/private/sWlIB/utilities/other_utilities/neolitee.zip
,
Petite, https://www.icl.ndirect.co.uk/petite/.

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

------------------------------------------------------------

Q-68:  Где достать всяких иконок, картинок для кнопок, etc. для своей программы?

------------------------------------------------------------
https://www.iconbazaar.com

------------------------------------------------------------

Q-69:  Как сделать ping из своей программы?

------------------------------------------------------------
И вообще, посоветуйте какую-нибудь альтернативу стандартным дельфовым
Internet-компонентам.

Зайди на [53]https://www.rtfm.be/fpiette. Там кyча компонентов для инета с
исходниками. Там и ping есть.

------------------------------------------------------------

Q-70:  Как правильно создавать компоненты в run-time?

------------------------------------------------------------
Как правильно создавать компоненты в run-time? Что задавать в
   качестве параметра Owner при создании компоненты? Как обрабатывать
   события от созданных компонент, типа нажатий на кнопки?

Hачнем с создания.

Сущность свойства Owner в том, что владелец перед смертью уничтожает (через
Free) принадлежащие ему объекты. Таким образом, все зависит от того, кому вы
хотите доверить уничтожение созданных форм/компонентов. В частности, если вы
сами будете этим заниматься, то AOwner может быть, например, nil.

Для того, чтобы созданный компонент появился на экране, надо указать его
родителя, заполнив свойство Parent, например, NewButton.Parent := Form1;

Пример кода, обрабатывающего события от свежесозданных компонентов:

type
  TForm1 = class(TForm)
  { ... }
  private
    { эта процедура будет вызываться при нажатии на кнопку }
    procedure ButtonClicked(Sender : TObject);

  public
    { в этой процедуре происходит создание кнопки }
    procedure CreateButton;

  end;

{ ... }

procedure TForm1.CreateButton;
var
  btn : TButton;
begin
  btn := TButton.Create(Self);  { Уничтожать кнопку будет форма }
  btn.Parent := Self;           { Родителем кнопки будет форма }
  btn.OnClick := ButtonClicked; { Процедура, которая будет исполняться при }
  btn.Visible := true;          { нажатии на кнопку }
end;

 
« Предыдущая статья   Следующая статья »