На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! user posted image
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Соблюдайте общие правила форума

Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры - внедрение в удаленное адресное прстранство)
... (продолжение следует) ...

Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки - бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Rouse_, user posted image Krid

Модераторы: Rouse_, Krid
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> Какой аналог MemAvail в Delphi
    Цитата
    javas, 24.12.03, 02:48
    может я чего не понял, как этот юнит работает, просто он вылетает на строчке

    У меня (Delphi 6) MemCheck прекрасно работает.

    Для правильного использования этого модуля необходимо сделать следующее:

    1. Вставить ссылку на модуль MemCkeck в список используемых модулей в файле проекта (.dpr);
    2. Вставить вызов процедуры MemChk после begin в файле проекта (.dpr);
    3. Выполнить следующие настройки в Project Options:
    Compiler/Optimization - выключить
    Compiler/Stack frames - включить
    Compiler/Debugging - включить все в этой группе (Use Debug DCUs не обязательно, но желательно)
    Linker/Include TD32 debug info - включить
    Packages/Runtime packages/Build with runtime packages - выключить

    Например, сделал следующий проект:
    program Project1;
    uses
      MemCheck, // <---## Добавил ручками
      Forms,
      Unit1 in 'Unit1.pas' {fmTestDA};

    {$R *.res}

    begin
      MemChk;   // <---## Добавил ручками
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end.

    Соответственно на Form1 пара кнопок со следующими обработчиками:
    procedure TForm1.Button1Click(Sender: TObject);
    var p :PChar;
    begin
      GetMem(p,100);
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    var p :tStringList;
    begin
      p := tStringList.Create;
    end;

    Теперь запускаю. Если не нажимать никаких кнопок, то после завершения программы появляется файл Project1_MemCheck.log содержащий:
    MemCheck version 2.67

    Total leak: 0 bytes


    *** MEMCHK: Blocks STILL allocated ***

    *** MEMCHK: End of allocated blocks ***


    *** MEMCHK: Chronological leak information ***


    *** MEMCHK: End of chronological leak information ***


    *** MEMCHK: Blocks written to after destruction ***

     Bad blocks count: 0


    *** MEMCHK: End of blocks written to after destruction ***

    Если-же нажать сначала Button1 а затем Button2, то после завершения файл Project1_MemCheck.log содержит:
    MemCheck version 2.67

    Total leak: 148 bytes


    *** MEMCHK: Blocks STILL allocated ***

    Leak #0 Instance of TStringList
     Size: 48
     1 Occurence
     call stack - 0 : Module Unit1.pas Routine @Unit1@TForm1@Button2Click Line 54 Find error: 005009D0
     call stack - 1 : Module Controls.pas Routine @Controls@TControl@Click Line 4621 Find error: 0045247C
     call stack - 2 : Module StdCtrls.pas Routine @Stdctrls@TButton@Click Line 3347 Find error: 0043FCC4
     call stack - 3 : Module StdCtrls.pas Routine @Stdctrls@TButton@CNCommand Line 3399 Find error: 0043FE2B
     call stack - 4 : Module Controls.pas Routine @Controls@TControl@WndProc Line 4561 Find error: 0045224E
     call stack - 5 : Module Controls.pas Routine @Controls@TWinControl@WndProc Line 6242 Find error: 00455D1B
     call stack - 6 : Module StdCtrls.pas Routine @Stdctrls@TButtonControl@WndProc Line 3327 Find error: 0043FC0F
     call stack - 7 : Module Controls.pas Routine @Controls@TControl@Perform Line 4468 Find error: 00451F59
     call stack - 8 : Module Controls.pas Routine @Controls@DoControlMsg Line 6288 Find error: 00455EDD
     call stack - 9 : Module Controls.pas Routine @Controls@TWinControl@WMCommand Line 6474 Find error: 004566BA
     call stack - 10 : Module Controls.pas Routine @Controls@TControl@WndProc Line 4561 Find error: 0045224E
     call stack - 11 : Module Controls.pas Routine @Controls@TWinControl@WndProc Line 6242 Find error: 00455D1B
     call stack - 12 : Module Controls.pas Routine @Controls@TWinControl@MainWndProc Line 6139 Find error: 004558EB
     call stack - 13 : Module classes.pas Routine @Classes@StdWndProc Line 10562 Find error: 0042B9A6
     call stack - 14 : (no debug info) Find error: 77D57B13
     call stack - 15 : (no debug info) Find error: 77D5CDCA
     call stack - 16 : (no debug info) Find error: 77D34599
     call stack - 17 : (no debug info) Find error: 77D347B0
     call stack - 18 : (no debug info) Find error: 77F5108B
     call stack - 19 : (no debug info) Find error: 77D361F2
     call stack - 20 : (no debug info) Find error: 77D4EBFE
     call stack - 21 : (no debug info) Find error: 77D4C3F2
     call stack - 22 : (no debug info) Find error: 77D57B13
     call stack - 23 : (no debug info) Find error: 77D5CDCA
     call stack - 24 : (no debug info) Find error: 77D35CC5
     call stack - 25 : (no debug info) Find error: 77D35CE4
     call stack - 26 : Module Controls.pas Routine @Controls@TWinControl@DefaultHandler Line 6269 Find error: 00455E61

    Leak #1 User allocated memory (GetMem)
     Size: 100
     1 Occurence
     call stack - 0 : Module Unit1.pas Routine @Unit1@TForm1@Button1Click Line 47 Find error: 005009AE
     call stack - 1 : Module Controls.pas Routine @Controls@TControl@Click Line 4621 Find error: 0045247C
     call stack - 2 : Module StdCtrls.pas Routine @Stdctrls@TButton@Click Line 3347 Find error: 0043FCC4
     call stack - 3 : Module StdCtrls.pas Routine @Stdctrls@TButton@CNCommand Line 3399 Find error: 0043FE2B
     call stack - 4 : Module Controls.pas Routine @Controls@TControl@WndProc Line 4561 Find error: 0045224E
     call stack - 5 : Module Controls.pas Routine @Controls@TWinControl@WndProc Line 6242 Find error: 00455D1B
     call stack - 6 : Module StdCtrls.pas Routine @Stdctrls@TButtonControl@WndProc Line 3327 Find error: 0043FC0F
     call stack - 7 : Module Controls.pas Routine @Controls@TControl@Perform Line 4468 Find error: 00451F59
     call stack - 8 : Module Controls.pas Routine @Controls@DoControlMsg Line 6288 Find error: 00455EDD
     call stack - 9 : Module Controls.pas Routine @Controls@TWinControl@WMCommand Line 6474 Find error: 004566BA
     call stack - 10 : Module Controls.pas Routine @Controls@TControl@WndProc Line 4561 Find error: 0045224E
     call stack - 11 : Module Controls.pas Routine @Controls@TWinControl@WndProc Line 6242 Find error: 00455D1B
     call stack - 12 : Module Controls.pas Routine @Controls@TWinControl@MainWndProc Line 6139 Find error: 004558EB
     call stack - 13 : Module classes.pas Routine @Classes@StdWndProc Line 10562 Find error: 0042B9A6
     call stack - 14 : (no debug info) Find error: 77D57B13
     call stack - 15 : (no debug info) Find error: 77D5CDCA
     call stack - 16 : (no debug info) Find error: 77D34599
     call stack - 17 : (no debug info) Find error: 77D347B0
     call stack - 18 : (no debug info) Find error: 77F5108B
     call stack - 19 : (no debug info) Find error: 77D361F2
     call stack - 20 : (no debug info) Find error: 77D4EBFE
     call stack - 21 : (no debug info) Find error: 77D4C3F2
     call stack - 22 : (no debug info) Find error: 77D57B13
     call stack - 23 : (no debug info) Find error: 77D5CDCA
     call stack - 24 : (no debug info) Find error: 77D35CC5
     call stack - 25 : (no debug info) Find error: 77D35CE4
     call stack - 26 : Module Controls.pas Routine @Controls@TWinControl@DefaultHandler Line 6269 Find error: 00455E61

    *** MEMCHK: End of allocated blocks ***


    *** MEMCHK: Chronological leak information ***

    * User allocated memory (GetMem) (Leak #1) Size: 100
    * Instance of TStringList (Leak #0) Size: 48

    *** MEMCHK: End of chronological leak information ***


    *** MEMCHK: Blocks written to after destruction ***

     Bad blocks count: 0


    *** MEMCHK: End of blocks written to after destruction ***



    Вот так.
    Сообщение отредактировано: Петрович -
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0180 ]   [ 16 queries used ]   [ Generated: 27.04.24, 12:19 GMT ]