Конференция "KOL" » KOL: нужно ли освобождать память после VarArrayCreate... [Delphi]
 
  • Сашик (21.07.08 23:42) [0]
    Как правильно освободить переменную V типа Variant в деструкторе
    после
    V:= VarArrayCreate([,], varVariant)

    . Достаточно ли
    V:= Unassigned

    ?
  • Palladin © (23.07.08 11:01) [1]
    При уничтожении объекта оно само освободится. Особенных телодвижений не требуется.

    А KOL здесь ни причем.
  • Dy1 (23.07.08 14:38) [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;

  • Dy1 (23.07.08 14:39) [3]
    извиняюсь, не сюда :(
 
Конференция "KOL" » KOL: нужно ли освобождать память после VarArrayCreate... [Delphi]
Есть новые Нет новых   [134431   +15][b:0][p:0.002]