Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2018, 16:04   #11
Алексей0001
Пользователь
 
Регистрация: 25.11.2017
Сообщений: 39
По умолчанию

С утечкой подскажите, не до конца разобрался как выяснилось, осталось уже 2 причины утечки
1.PNG
2.PNG
Писал
Код:
dL.Free;
  sL.Free;
как и советовали не помогло.

Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, StrUtils, Math;

type
  TForm2 = class(TForm)
    StringGrid1: TStringGrid;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Button3: TButton;
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    slFile: TStringList;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

function DigitSort(L: TStringList; index1, index2: Integer): Integer;
var
  i1, i2: Integer;
begin
  i1 := StrToInt(Copy(L.Strings[index1], 1, Pos(#9, L.Strings[index1]) - 1));
  i2 := StrToInt(Copy(L.Strings[index2], 1, Pos(#9, L.Strings[index2]) - 1));
  result := CompareValue(i1, i2);
end;

procedure TForm2.Button3Click(Sender: TObject);
var
  fName: String;
  dL, sL: TStringList;
  i, tmp: Integer;
begin
  if not OpenDialog1.Execute then
    Exit;
  slFile.LoadFromFile(OpenDialog1.FileName);
  StringGrid1.RowCount := slFile.Count;
  dL := TStringList.Create;
  for i := 0 to slFile.Count - 1 do
  begin
    dL.Delimiter := #9;
    dL.DelimitedText := slFile.Strings[i];
    if dL.Count > StringGrid1.ColCount then
      StringGrid1.ColCount := dL.Count;
    StringGrid1.Rows[i].DelimitedText := slFile.Strings[i];
  end;
  dL.Clear;
  fName := ChangeFileExt(OpenDialog1.FileName, '.result');
  sL := TStringList.Create;
  for i := 0 to StringGrid1.RowCount - 1 do
  begin
    StringGrid1.Rows[i].Delimiter := #9;
    if TryStrToInt(StringGrid1.Cells[0, i], tmp) then
      dL.Add(StringGrid1.Rows[i].DelimitedText)
    else
      sL.Add(StringGrid1.Rows[i].DelimitedText);
  end;
  if sL.Count > 1 then
    sL.Sort;
  if dL.Count > 1 then
    dL.CustomSort(DigitSort);
  slFile.Text := dL.Text;
  for i := 0 to sL.Count - 1 do
    slFile.Add(sL.Strings[i]);
  if not FileExists(fName) then
    slFile.SaveToFile(fName)
  else if (MessageBox(Handle,
      'Обработанный файл с таким именем уже существует.'#13'Вы хотите сохранить файл под другим именем?', 'Запрос.', mb_YesNo or mb_IconQuestion) = idNo) or (not SaveDialog1.Execute) then
  begin
    ShowMessage('Операция отменена. Файл не сохранен!');
    Exit;
  end
  else
    slFile.SaveToFile(SaveDialog1.FileName);
  ShowMessage('Done!');
  dL.Free;
  sL.Free;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  slFile := TStringList.Create;
end;

procedure TForm2.FormDestroy(Sender: TObject);
begin
  slFile.Free;
end;

end.
Алексей0001 вне форума Ответить с цитированием
Старый 21.01.2018, 16:25   #12
Алексей0001
Пользователь
 
Регистрация: 25.11.2017
Сообщений: 39
По умолчанию

все, проблема решена
Алексей0001 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определите и запишите в протокол шестнадцатеричный объектный код для следующих директив резервирования памяти nelo_001 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 28.06.2014 00:30
Программа для тестирования памяти, тестирование ячеек памяти Hunter557 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 30.01.2011 19:20
Кольцевая очередь на массиве в статической памяти с элементами в динамической памяти ]tach[ Общие вопросы C/C++ 1 19.01.2011 13:16
Почему такой код возможен и сколько выделится памяти? Gtx541 Общие вопросы C/C++ 5 16.06.2010 19:38