Просмотр кода
Идентификатор: 6ccd629f Код загружен: 13 мая 2010, 16:03 (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;