Delphi-int.ru: портал программистов

Вход Регистрация | Забыли пароль?

Просмотр кода

Идентификатор: 6ffe9b59 Код загружен: 13 мая 2010, 16:10 (Alinka27)

procedure TForm1.LoadGridFromFile(const FileName: string;
  AGrid: TStringGrid);
  var
  Text, Words: TStringList;
  ARow,ACol: Integer;
  begin
  // Загрузка текстового файла в TStringGrid.
  // Разделители - пробелы.
  // Пустые строки игнорируются
  Text:= TStringList.Create();
  Words:= TStringList.Create();
  try
    // Загрузка в память списка
    try
      Text.LoadFromFile(FileName);
 
      // Удаление пустых строк из списка
      {for ARow:= Text.Count - 1 downto 0 do
        if Trim(Text[ARow]) = ''
          then Text.Delete(ARow);  }
          except
      Text.Clear();
      Application.MessageBox(PChar('Не могу загрузить файл "' + FileName + '".'),
                             PChar('Ошибка'),
                             MB_OK + MB_ICONERROR);
    end;
 
    if Text.Count =0
      then Exit;
    // Формирование таблицы
    AGrid.RowCount:= Text.Count; // Кол-во строк
    AGrid.ColCount:= 0; // По умолчанию
 
    // Разбиение на столбцы
    for ARow:= 1 to Text.Count -1 do
      begin
        SeparateWords(Text[ARow], Words);
 
        // Установка кол-ва столбцов по количеству найденных слов в текущей строке
        if Words.Count > AGrid.ColCount
          then AGrid.ColCount:= Words.Count;
 
        // Распределение слов строки файла по ячейкам строки таблицы
        AGrid.Rows[ARow].Assign(Words);
      end;
      Edit8.Text:=StringGrid1.Cells[0,0];
 
  finally
    Text.Free();
    Words.Free();
  end;
end;
procedure TForm1.SeparateWords(const S: string; AWords: TStringList);
var
  Index: Integer;
  Temp: string;
begin
  // Разделение строки на слова
  AWords.Clear();
  AWords.Delimiter:= ' '; // РАзделитель - пробел
  AWords.DelimitedText:= Trim(S);
 
  // Удаление пустых строк (в случае нескольких пробелов между словами)
  for Index:= AWords.Count - 1 downto 0 do
    begin
      Temp:= Trim(AWords[Index]); // Заодно обрезка ведущих и завершающих пробелов, если они есть
 
      if Temp = ''
        then AWords.Delete(Index)
        else AWords[Index]:= Temp;
    end;
end;
 
procedure TForm1.Button8Click(Sender: TObject);
begin
if OpenDialog2.Execute()
    then LoadGridFromFile(OpenDialog2.FileName, StringGrid1);
end;
 
procedure TForm1.Button7Click(Sender: TObject);
var
si :TStringlist;
i , j:Integer;
Str:String;
Begin
with TSaveDialog.Create(Owner) do
begin
DefaultExt:='txt';
Filter:= '*.txt|*.txt';
if not Execute then exit;
si:=TStringList.Create;
for i:=1 to StringGrid1.RowCount-1 do
begin
Str := ' ' ;
for j:=0 to StringGrid1.ColCount-1 do
Str:=Str+StringGrid1.Cells[j,i]+#9;
si.Add(Str);
end;
 
si.SaveToFile(FileName);
end;
si .Free;
end;
procedure TForm1.btOpenClick(Sender: TObject);
begin
if OpenDialog2.Execute()
    then LoadGridFromFile(OpenDialog2.FileName, StringGrid1);
end;
 
procedure TForm1.btExitClick(Sender: TObject);
begin
form1.Close;
end;

Ссылка на данный код:

На главную страницу сервиса обмена кодом »