Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.04.2014, 21:03
Prometei Prometei вне форума
Прохожий
 
Регистрация: 30.04.2014
Сообщения: 3
Версия Delphi: Delphi XE5
Репутация: 10
Печаль Stringgrid и файлы

Столкнулся с проблемой сохранения в файл информации из Stringgrid`а . Уже пробовал и через двумерный массив, и через TStringList. Все равно ничего не выходит
Вот код записи через TStringList.
Код:
procedure TForm1.N2Click(Sender: TObject);
var i,j: integer;
List: TStringList;
Table: TStringGrid;
begin
Assignfile(f,Combobox2.Text);
rewrite(f);
List:=TStringList.Create;
with Table do
for i:=0 to StringGrid1.RowCount-1 do
for j:=0 to StringGrid1.ColCount-1 do
List.Add(Cells[j, i]);
List.SaveToFile(Combobox2.Text);
end;
С двумерным массивом просто не смог разобраться...при чтении из файла происходят чудеса...

Вот запись:
Код:
procedure TForm1.N2Click(Sender: TObject);
var i,j: integer;
begin
Assignfile(f,Combobox2.Text+'$'+Combobox1.Text);
rewrite(f);
for i := 2 to Stringgrid1.ColCount-1 do
p[0].ocenki:=p[0].ocenki+Stringgrid1.Cells[i,0];
for i:=1 to Stringgrid1.RowCount-1 do
for j:=2 to Stringgrid1.ColCount-1 do
p[i].ocenki:=p[i].ocenki+Stringgrid1.Cells[j,i];
p[1].col:=Stringgrid1.ColCount;
p[1].row:=Stringgrid1.RowCount;
for i:=0 to Stringgrid1.RowCount-1 do
write(f,p[i]);
CloseFile(f);
AssignFile(f2,ComboBox2.Text);
Rewrite(f2);
for i:=1 to Stringgrid1.RowCount-1 do begin
p[i].number:=Stringgrid1.Cells[0,i];
p[i].fam:=Stringgrid1.Cells[1,i];
end;
p[1].col:=Stringgrid1.ColCount;
p[1].row:=Stringgrid1.RowCount;
for i:=1 to Stringgrid1.RowCount-1 do
write(f2,p[i]);
CloseFile(f2);
end;
Вот чтение:
Код:
procedure TForm1.ComboBox1Change(Sender: TObject);
var i,j,col,row,l,c,papa,k: integer;
s: string;
koko: array[1..35] of Integer;
begin
i:=0;
if Combobox2.Text<>'' then begin
if FileExists(Combobox2.Text+'$'+Combobox1.Text) then begin
Assignfile(f,Combobox2.Text+'$'+Combobox1.Text);
reset(f);
while not Eof(f) do begin
read(f,p[i]);
i:=i+1;
end;
col:=p[1].col;
row:=p[1].row;
Stringgrid1.ColCount:=col;
Stringgrid1.RowCount:=row;
for i := 2 to Stringgrid1.ColCount-1 do
Stringgrid1.ColWidths[i]:=39;
s:=p[0].ocenki;
for i := 2 to Stringgrid1.ColCount-1 do
for j := 1 to 5 do begin
StringGrid1.Cells[i,0]:=Stringgrid1.Cells[i,0]+s[1];
Delete(s,1,1);
end;
for i:=1 to row-1 do begin
for j:=2 to col-1 do begin
s:=p[i].ocenki;
l:=length(p[i].ocenki);
for c:=1 to l do begin
Stringgrid1.Cells[j,i]:=s[1];
delete(s,1,1);
end;
end;
end;
CloseFile(f);
end;
end;
end;
MAD: используем теги!

Последний раз редактировалось M.A.D.M.A.N., 01.05.2014 в 14:56.
Ответить с цитированием
  #2  
Старый 01.05.2014, 14:40
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Код:
procedure TForm20.btnSaveClick(Sender: TObject);
var
  R, C: Integer;
begin
 AssignFile(F, 'd:\GridData.txt');
 Rewrite(F);
 WriteLn(F, StringGrid1.ColCount, ' ', StringGrid1.RowCount);
 for R := StringGrid1.FixedRows to StringGrid1.RowCount - 1
 do for C := StringGrid1.FixedCols to StringGrid1.ColCount - 1
    do WriteLn(F, StringGrid1.Cells[C, R]);
 CloseFile(F);
end;
Код:
procedure TForm20.btnLoadClick(Sender: TObject);
var
  R, C, ColCount, RowCount: Integer;
  CellData: String;
begin
 AssignFile(F, 'd:\GridData.txt');
 Reset(F);
 ReadLn(F, ColCount, RowCount);
 StringGrid1.ColCount := ColCount;
 StringGrid1.RowCount := RowCount;
 for R := StringGrid1.FixedRows to StringGrid1.RowCount - 1
 do for C := StringGrid1.FixedCols to StringGrid1.ColCount - 1
    do begin
       ReadLn(F, CellData);
       StringGrid1.Cells[C, R] := CellData;
       end;
 CloseFile(F);
end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 01.05.2014, 16:36
Prometei Prometei вне форума
Прохожий
 
Регистрация: 30.04.2014
Сообщения: 3
Версия Delphi: Delphi XE5
Репутация: 10
По умолчанию

А возможна такая же схема с типизированными файлами??
Ответить с цитированием
  #4  
Старый 01.05.2014, 22:51
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Если у вас ширина таблицы фиксирована, то возможно.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 01.05.2014, 23:17
Prometei Prometei вне форума
Прохожий
 
Регистрация: 30.04.2014
Сообщения: 3
Версия Delphi: Delphi XE5
Репутация: 10
По умолчанию

и строки и столбцы можно добавлять. а как это влияет?
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:16.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter