Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/20: Рейтинг темы: голосов - 20, средняя оценка - 4.50
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263
1

SaveDialog и OpenDialog в StringGrid.

22.10.2010, 14:52. Просмотров 3947. Ответов 4
Метки нет (Все метки)

В одной программе SaveDialog в другой OpenDialog.
Первая должна сохранять данные из StringGrid в файл, а вторая открывать этот файл.

SaveDialog и OpenDialog в StringGrid.


Нужно чтобы сохранялись и открывались только те данные, которые заполнены, а не вся таблица.
Но в моих кодах всё как-то не так...

SaveDialog
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
procedure TForm1.N1Click(Sender: TObject);
var i:integer;
begin
if SaveDialog1.Execute then
begin
AssignFile(F,SaveDialog1.FileName);
Rewrite(F);
i:=0;
j:=0;
while stringGrid1.Cells[i,j]<>'' do
begin
r.kr:=stringGrid1.Cells[1,1];
r.kr:=stringGrid1.Cells[2,1];
r.kr:=stringGrid1.Cells[3,1];
r.mos:=stringGrid1.Cells[1,2];
r.mos:=stringGrid1.Cells[2,2];
r.mos:=stringGrid1.Cells[3,2];
r.sp:=stringGrid1.Cells[1,3];
r.sp:=stringGrid1.Cells[2,3];
r.sp:=stringGrid1.Cells[3,3];
write(F,r);
i:=i+1;
j:=j+1;
end;
closeFile(F)
end
end;
OpenDialog
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
procedure TForm1.N1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
AssignFile(F,OpenDialog1.FileName);
Reset(f);
n:=0;
while not eof(f) do
begin
read(F,r);
stringGrid1.Cells[1,1]:=r.kr;
StringGrid1.Cells[2,1]:=r.kr;
StringGrid1.Cells[3,1]:=r.kr;
stringGrid1.Cells[1,2]:=r.mos;
stringGrid1.Cells[2,2]:=r.mos;
stringGrid1.Cells[3,2]:=r.mos;
stringGrid1.Cells[1,3]:=r.sp;
stringGrid1.Cells[2,3]:=r.sp;
stringGrid1.Cells[3,3]:=r.sp;
n:=n+1;
end;
closeFile(f);
end;
end;
Помогите пжалуйста исправить ошибки и правильно указать номера строк и столбцов.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2010, 14:52
Ответы с готовыми решениями:

openDialog и saveDialog
В общем есть программа, она по нажании кнопки выводит исходный список студентов, и по нажатию...

OpenDialog и SaveDialog
Здравствуйте. Имеется такой код: if SaveDialog1.Execute then FName := SaveDialog1.FileName; if...

Opendialog и savedialog
При нажатии на спидбаттон загружается файл, я хочу что при нажатии на кнопку сохранялся файл в...

OpenDialog SaveDialog
Всем присуствующим низкий поклон и мои приветствия. Я что-то увлёкся Дельфи и самостоятельно пишу...

4
1848 / 1170 / 189
Регистрация: 27.03.2009
Сообщений: 4,512
22.10.2010, 15:11 2
исходник можешь выложить чтобы все заново не делать?
0
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263
22.10.2010, 21:48  [ТС] 3
ну вот исходник http://ifolder.ru/upload/?session=5eb2e0a849724580955e82c4196539e6
надеюсь, в нём возможно будет разобраться...

Добавлено через 6 часов 10 минут
0
160 / 158 / 39
Регистрация: 10.10.2010
Сообщений: 461
22.10.2010, 22:17 4
AC13, Если использование твоего типа не критично а нужно просто сохранить и открыть значения stringgrid то вот сорцы
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
procedure SaveGrid;
var
  f: textfile;
  x, y: integer;
begin
  assignfile(f, 'Filename');
  rewrite(f);
  writeln(f, stringgrid.colcount);
  writeln(f, stringgrid.rowcount);
  for X := 0 to stringgrid.colcount - 1 do
    for y := 0 to stringgrid.rowcount - 1 do
      writeln(F, stringgrid.cells[x, y]);
  closefile(f);
end;
 
procedure LoadGrid;
var
  f: textfile;
  temp, x, y: integer;
  tempstr: string;
begin
  assignfile(f, 'Filename');
  reset(f);
  readln(f, temp);
  stringgrid.colcount := temp;
  readln(f, temp);
  stringgrid.rowcount := temp;
  for X := 0 to stringgrid.colcount - 1 do
    for y := 0 to stringgrid.rowcount - 1 do
    begin
      readln(F, tempstr);
      stringgrid.cells[x, y] := tempstr;
    end;
  closefile(f);
end;
Добавлено через 15 минут
AC13, А в твоих исходника есть две ошибки
1. Использовать нужно два одинаковых а не как ты:
1.1. исходник
Delphi
1
2
3
4
type
info=record
dat,kr,mos,sp:string[20];
end;
1.2. исходник
Delphi
1
2
3
4
type
info=record
dat,kr,mos,sp,srd:string[20];
end;
2. ошибка когда читаеш файл у тебя все записывает в один столбец ибо используеш переменную i а инкрементируеш n которую не где не используешь
Delphi
1
2
3
4
5
6
7
8
9
n:=0;
while not eof(f) do
begin
read(F,r);
stringGrid1.Cells[i,1]:=r.kr;
stringGrid1.Cells[i,2]:=r.mos;
stringGrid1.Cells[i,3]:=r.sp;
n:=n+1;
end;
1
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263
22.10.2010, 22:27  [ТС] 5
Аааа! С ума сойти!
Sergiuz, спасибо Вам огромное!!! Долго с этим мучалась... )))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.10.2010, 22:27

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Исчезает OpenDialog и SaveDialog
У меня в форме стоят OpenDialog и SaveDialog, но почему-то когда запускаю программу они исчезают....

Заменить системный OpenDialog, SaveDialog
Мне надо сделать программу для интернет салона, и как мне заменить системный openDialog,...

Считать двумерный массив из текстового файла с использованием компонент OpenDialog и Savedialog
Необходимо размерность массива и сам массив считать из текстового файла.При открытии и сохранении...

Сохранение в файл из StringGrid с использованием SaveDialog
Хочу сохранить данные из грида в файл.Набросал такой код procedure TForm1.N3Click(Sender:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.