Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ StringGrid to TXT

Автор: Desktop_4 29.05.2007 3:14

Как сохранить даные со StringGrid в текстовый файл. Если в него введена матрица
Например
1 2 3
4 5 6
7 8 9
В таком же виде надо что бы эти даные сохранились в текстовый файл
1 2 3
4 5 6
7 8 9


нашел процедуру сохранение, но она сохраняет одно число на строку, а это не подходит

Код

procedure SaveStringGrid(StringGrid: TStringGrid; const FileName: TFileName);
var
f: TextFile;
i, k: Integer;
begin
AssignFile(f, FileName);
Rewrite(f);
with StringGrid do
begin
// Write number of Columns/Rows  
  Writeln(f, ColCount);
Writeln(f, RowCount);
// loop through cells  
  for i := 0 to ColCount - 1 do
  for k := 0 to RowCount - 1 do
  Writeln(F, Cells[i, k]);
end;
CloseFile(F);
end;


Тоесть примерно так
1
2
3
4
5
6
7
8
9

И как сделать что бы не сохранялись даные которые внесеные в ячейки позначеные серым цветом ?

Автор: volvo 29.05.2007 3:26

Вот так, что-ли?

procedure SaveStringGrid(StringGrid: TStringGrid; const FileName: TFileName);
var
f: TextFile;
i, k: Integer;
begin
AssignFile(f, FileName);
Rewrite(f);

with StringGrid do begin
// Write number of Columns/Rows
Writeln(f, ColCount);
Writeln(f, RowCount);

// loop through cells
for k := FixedRows to RowCount - 1 do begin
for i := FixedCols to ColCount - 1 do
Write(F, Cells[i, k]:5);
writeln(F);
end;
end;
CloseFile(F);
end;


Автор: Desktop_4 29.05.2007 3:33

Теперь сохраняет так

Код

7
7
    0    0    0   10    0    0
    3    0    4    0   11    0
    0    4    0    0    0    0
    6   12    0    0    7    0
    0    0    8    9    0    0
    0    0    0    0    5    0

А надо вот так:
Код

0 0 0 10 0 0
3 0 4 0 11 0
0 4 0 0 0 0
6 12 0 0 7 0
0 0 8 9 0 0
0 0 0 0 5 0

Почему то еще в начале файл
Две семерки появляються
7
7

Автор: volvo 29.05.2007 3:38

Две семерки - это размеры Грида... Убери строки

    // Write number of Columns/Rows
Writeln(f, ColCount);
Writeln(f, RowCount);
, они не будут появляться.

Если не нравится нормальное форматирование (сравни те 2 фрагмента, которые ты привел, какой из них легче понять?), то замени

// вот это
Write(F, Cells[i, k]:5);
// на это:
Write(F, Cells[i, k], ' ');

Автор: Desktop_4 29.05.2007 3:43

Цитата(volvo @ 28.05.2007 23:38) *

Write(F, Cells[i, k], ' ');


Спасибо!