|
Вопрос # 1 726/ вопрос решён / |
|
Здравствуйте, эксперты! Хочу у вас попросить помощи. Вылетает ошибка I/O error 103. Так же, если не сложно, помогите сделать так, что бы была возможность сохранять кроме данных таблици, ещё и результат. код в прикреплённых файлах.
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
 |
Вопрос задал: mamont (статус: Посетитель)
Вопрос отправлен: 25 июня 2008, 00:25
Состояние вопроса: решён, ответов: 2.
|
Ответ #1. Отвечает эксперт: rnt777
Здравствуйте, mamont!
это же надо додуматья запихнуть код в ворд :)
просто глядя на код могу возникает вопрос:
зачем в procedure TForm1.Button5Click(Sender: TObject);
закрытие файла и вывод сообщения указаны в цикле? закрыть файл достаточно один раз после выполнения всех циклов. тут же предложу поменять местами строки "for j:=0 to 100 do" и "for i:=0 to 7 do".
Во-вторых, в procedure TForm1.Button4Click(Sender: TObject);
цикл Repeat-until поменяем на for. и обрати внимание что в конце строки входного файла должен стоять пробел.
получим цикл:
for j:=1 to Length(z) do
begin
if (z[j]<>' ')
then g:=g+z[j]
else begin
stringgrid1.Cells[i,l]:=g;
i:=i+1;
g:='';
end;
end;
Тут же видим что поле "Дно лощины" содержит пробел. значит теоретически программа ее разделит на две части и запишет в таблицу неправильно. поэтому могу предложить использовать TAB #8 или писать "Дно_лощины"
Приложение: Переключить в обычный режим- procedure TForm1.Button1Click(Sender: TObject);
- var a:array[1..100,1..100]of string;
- b:array[1..100]of string;
- f:Textfile;
- i,j,t:integer;
- begin
- stringgrid1.Cells[0,0]:='? ?????';
- stringgrid1.Cells[1,0]:='?????-????';
- stringgrid1.Cells[2,0]:='????????';
- stringgrid1.Cells[3,0]:='???????? ??????????????';
- stringgrid1.Cells[4,0]:='??? ?????????????? ?????';
- stringgrid1.Cells[5,0]:='?';
- stringgrid1.Cells[6,0]:='?';
- stringgrid1.Cells[7,0]:='?';
- j:=0;
- repeat
- j:=j+1;
- if Length(StringGrid1.Cells[1,j])=0
- then t:=1;
- until t=1;
- for i:=1 to 7 do
- begin
- b[i]:=stringgrid2.Cells[i-1,0];
- stringgrid1.Cells[i,j]:=b[i];
- stringgrid1.Cells[0,j]:=inttostr(j);
- end;
- end;
-
- procedure TForm1.Button2Click(Sender: TObject);
- var i, j: integer;
- begin
- for i:=1 to 100 do
- for j:=1 to 100 do
- stringgrid1.Cells[i,j]:=stringgrid1.Cells[i,j+1];
- end;
-
- procedure TForm1.Button3Click(Sender: TObject);
- var n1,n2,i,j:integer;
- x1,x2,y1,y2,s,h1,h2,h:real;
- begin
- n1:=strtoint(edit1.Text);
- n2:=strtoint(edit2.Text);
- i:=n1;
- j:=n2;
- x1:=strtofloat(stringgrid1.cells[5,i]);
- y1:=strtofloat(stringgrid1.cells[6,i]);
- x2:=strtofloat(stringgrid1.cells[5,j]);
- y2:=strtofloat(stringgrid1.cells[6,j]);
- h1:=strtofloat(stringgrid1.cells[7,i]);
- h2:=strtofloat(stringgrid1.cells[7,j]);
- h:=h2-h1;
- s:=sqrt(sqr(x2-x1)+sqr(y2-y1));
- edit3.Text:=floattostr(s);
- Edit4.Text:=floattostr(h);
- end;
-
- procedure TForm1.Button4Click(Sender: TObject);
- var a:array[1..100] of char;
- s:char;
- f:textfile;
- g,z:string;
- i,j,l:integer;
- begin
- if opendialog1.Execute
- then assignfile(f,Opendialog1.FileName);
- reset(f);
- l:=1;
- while not EOF(f) do
- begin
- stringgrid1.Cells[1,l]:=inttostr(l);
- i:=1;
- j:=1;
- readln(f,z);
- g:='';
- for j:=1 to Length(z) do
- begin
- if (z[j]<>' ')
- then g:=g+z[j]
- else begin
- stringgrid1.Cells[i,l]:=g;
- i:=i+1;
- g:='';
- end;
- end;
- l:=l+1;
- end;
- closefile(f);
- end;
-
- procedure TForm1.Button5Click(Sender: TObject);
- var l:textfile;
- a:array[1..8] of char;
- i,j:integer;
- begin
- if opendialog1.Execute
- then assignfile(l,opendialog1.FileName);
- rewrite(l);
- for j:=0 to 100 do
- for i:=0 to 7 do
- writeln(l, stringgrid1.cells[j+1,i+1]+' ');
- closefile(l);
- MessageDlg('?????? ???????? ? ????
'+extractfilename(opendialog1.FileName),mtinformation,[mbOk],0);
- end;
 |
Ответ отправил: rnt777 (статус: 1-ый класс)
Время отправки: 25 июня 2008, 07:04
Оценка за ответ: 5
|
Ответ #2. Отвечает эксперт: Шичко Игорь
Здравствуйте, mamont!
Ошибка скорее всего в процедуре:
procedure TForm1.Button5Click(Sender: TObject);
var
l:textfile;
a:array[1..8] of char;
i,j:integer;
begin
if opendialog1.Execute then
assignfile(l,opendialog1.FileName);
rewrite(l);
for i:=0 to 7 do
begin
for j:=0 to 100 do
begin
writeln(l, stringgrid1.cells[j+1,i+1],' ');
closefile(l); //
MessageDlg('Данные ЗАПИСАНЫ в файл ',mtinformation,[mbOk],0);
end;
end;
end;
Вы открыли файл один раз, а цикле его закрываете, поэтому в следующем шаге он уже закрыт.
Подправить: (типа того)
procedure TForm1.Button5Click(Sender: TObject);
var
l:textfile;
a:array[1..8] of char;
i,j:integer;
begin
if opendialog1.Execute then
assignfile(l,opendialog1.FileName);
rewrite(l); //открыли
for i:=0 to 7 do
begin
for j:=0 to 100 do
begin
writeln(l, stringgrid1.cells[j+1,i+1],' '); //двумя циклами записываем
end; // переместили цикл
end; // переместили цикл
closefile(l); // закрыли файл
MessageDlg('Данные ЗАПИСАНЫ в файл ',mtinformation,[mbOk],0);
end;
Совет: если цикл состоит из одного оператора то begin/end можно не ставить для сокращения кода.
 |
Ответ отправил: Шичко Игорь (статус: 9-ый класс)
Время отправки: 25 июня 2008, 08:13
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 1; последнее сообщение — 25 июня 2008, 05:03; участников в обсуждении: 1.
|
Мережников Андрей (статус: Абитуриент), 25 июня 2008, 05:03 [#1]:
При выполнении какой процедуры выскакивает ошибка? Какой именно результат необходимо сохранять?В следующий раз когда будете отправлять код программы лучше архивируйте папку,где находится проект, предварительно удалив exe файл и отправляйте полученный архив.
|
31 января 2011, 19:31: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|