Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

утечки памяти. Помогите, пожалуйста   Найти похожие ветки 

 
Dy1   (2008-07-23 14:40) [0]

пытаюсь уничтожить форму, а она мой дух не отпускает :(
часть кода убрал
procedure TForm1.KOLForm1FormCreate(Sender: PObj);
var Mouse: TMouseEventData;
begin
LoadIni;
DFind( TV.TVInsert( TV.TVRoot, 0, ExcludeTrailingPathDelimiter(PathStalk)), PathStalk);
end;

procedure TForm1.LoadIni;
var
ini: PIniFile;
OD: POpenDirDialog;
x: integer;
begin
if FileExists(GetStartDir + "settings.ini") Then
и т.п.

if not DirectoryExists( PathStalk + "\gamedata\sounds\")then
begin
  OD := NewOpenDirDialog("", [odEditBox, odNewDialogStyle]);
  OD.InitialPath := "C:\";
  Repeat
    if OD.Execute Then
      PathStalk := OD.Path
    Else
    begin
      Form.Close; // как правильно в этот момент закрыть программу?
    end;
  Until DirectoryExists( PathStalk + "\gamedata\sounds\");
  OD.Free;
end;
end;

function TForm1.KOLForm1Message(var Msg: tagMSG; var Rslt: Integer): Boolean;
var
Filename: array [0..259] of char;
Count, i, n: Cardinal;
fname, STpath: string;
Mouse: TMouseEventData;
begin
if msg.message = 563 Then
begin
  Result := False;
  Count := DragQueryFile( msg.WParam, $FFFFFFFF, Filename, SizeOf(Filename));

  for i := 0 to Count - 1 do
  begin
    DragQueryFile( msg.WParam, i, Filename, SizeOf(Filename));
    fname := ExtractFileName(string(Filename));
    if LV.LVIndexOf(fname) >= 0 Then // если найдено
    begin
      STpath := IncludeTrailingPathDelimiter(TV.TVItemPath(TV.TVSelected, "\"));
      n := 0;
      While LV.LVIndexOf(fname + ".bak" + int2str(n) ) >= 0 Do
        n := n + 1;
      CopyMoveFiles( STpath + fname, STpath + fname + ".bak" + int2str(n), True);
      CopyMoveFiles( string(Filename), STpath + fname, False);
    end;
  end;
  DragFinish(Msg.WParam);
  Result := True;
end;
end;


 
exero ©   (2008-07-23 14:54) [1]

Перед Form.Close добавь OD.Free;
В обработчике сообщений для необрабатываемых сообщений Result := False;


 
Dy1   (2008-07-23 15:00) [2]

Result := False стоИт, перед Form.Close добавлял OD.Free - глючит, лучше как есть.
У меня такое ощущение, что после вызова Form.Close создание формы продолжается дальше. Кстати Form.Destroy вообще непонятно когда вызывается, даже от фазы Луны не зависит.


 
exero ©   (2008-07-23 15:20) [3]

В упор не вижу что Result := False в KOLForm1Message, для сообщений отличных от 563


 
MTsv DN   (2008-07-23 16:23) [4]

if msg.message = 563 Then
begin
 Result := False;

->
Result := False;
if msg.message = 563 Then
begin


 
Dy1   (2008-07-24 13:23) [5]

там исправил.
запускаю прогу, жму отмену. Окно исчезает, процесс висит в памяти


 
MTsv DN   (2008-07-24 14:04) [6]

if not DirectoryExists( PathStalk + "\gamedata\sounds\")then
begin
 OD := NewOpenDirDialog("", [odEditBox, odNewDialogStyle]);
 OD.InitialPath := "C:\";
 Repeat
   if OD.Execute Then
     PathStalk := OD.Path
   Else
   begin
     Form.Close; // как правильно в этот момент закрыть программу?
   end;
 Until DirectoryExists( PathStalk + "\gamedata\sounds\");
 OD.Free;
end;
end;

Странно, я мож че не понимаю, а при чем тут KOL. Элементарно неправильный код...

Варианты:
1. Form.Close; // как правильно в этот момент закрыть программу
->
OD.Free;
Form.Close;
exit;

2. Form.Close; // как правильно в этот момент закрыть программу
->
OD.Free;
SendMessage(Form.Handle, WM_CLOSE, 0, 0);
exit;

3. Form.Close; // как правильно в этот момент закрыть программу
->
OD.Free;
halt;


 
Boguslaw   (2008-08-15 19:10) [7]

Maybe someone is willing to help me convert MemCheck to KOL ? I have a compilable version but it seems to not working as should. Vladimir ?


 
exero   (2008-08-15 21:31) [8]

FastMM4 - наш выбор ))


 
Dy1   (2008-08-21 22:48) [9]

exero, как будто FastMM4 сам всё правильно сделает и заменит программиста :/ :)


 
exero   (2008-08-22 06:23) [10]


> FastMM4 сам всё правильно сделает и заменит
> программиста :/ :)

неужели я где-то подобное мог написать? Просто если не использовать FastMM4 и FastMove то Delphi (до определенных версий) - унылое говно в плане производительности. И что такое может MemCheck (насколько я помню - тупо показывает утечки) чего не может FastMM4?
А для новых разработок .Net или Java (первый для той ниши которую занимал delphi, предпочтительнее), только обязательно хотя бы рихтера прочтите - и кроме необходимости таскать framework и простого дизассемблирования минусов вроде не замечено.



Страницы: 1 вся ветка

Форум: "KOL";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.06 c
2-1265613649
pavel_guzhanov
2010-02-08 10:20
2010.08.27
цвет под курсором мыши


15-1264109427
Юрий
2010-01-22 00:30
2010.08.27
С днем рождения ! 22 января 2010 пятница


2-1275043106
kolian
2010-05-28 14:38
2010.08.27
запоминание и воспроизведение в окне memo


15-1273558498
@!!ex
2010-05-11 10:14
2010.08.27
Дешевое копирование выходит за рамки ПО.


2-1274513044
timekiller
2010-05-22 11:24
2010.08.27
TWebBrowser, Просмотр кода, Access Violation





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский