Помощь - Поиск - Пользователи - Календарь
Полная версия: StringGrid to TXT
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
Desktop_4
Как сохранить даные со 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
Вот так, что-ли?

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
Теперь сохраняет так
Код

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
Две семерки - это размеры Грида... Убери строки

    // 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
Цитата(volvo @ 28.05.2007 23:38) *

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


Спасибо!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.