Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

KOL: нужно ли освобождать память после VarArrayCreate... [Delphi]


Сашик ©   (2008-07-21 23:42:00) 

Как правильно освободить переменную V типа Variant в деструкторе
после V:= VarArrayCreate([,], varVariant). Достаточно ли V:= Unassigned?


Dy1   (2008-07-23 14:39:00) [1]

извиняюсь, не сюда :(


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

пытаюсь уничтожить форму, а она мой дух не отпускает :(
часть кода убрал
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;


Palladin   (2008-07-23 11:01:00) [3]

При уничтожении объекта оно само освободится. Особенных телодвижений не требуется.

А KOL здесь ни причем.


Наверх

Титульная страница Поиск, карта сайта Написать письмо