IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

 
 Ответить  Открыть новую тему 
> Ошибка при открытии файла I/O error 103
ninja
сообщение 5.10.2009 20:45
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 103
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Здравствуйте, столкнулся с такой проблемой при открытии типизированного файла все происходит нормально, но когда нажимаю кнопку отмена вместо открыть появляется ошибка I/O error 103



procedure TForm1.N5Click(Sender: TObject); // Open file
type
zapic=record
tablica:string[1];
fynkci9:string[200];
kolvo_strok:integer;
kolvo_el:integer;
end;
var
j:integer;
ft:file of zapic;
s:zapic;
m:string;
begin
OpenDialog1.Title:='Открыть файл';
openDialog1.Filter :='Файлы таблицы истинности|*.tabl';
if OpenDialog1.Execute then
begin
fname:=OpenDialog1.FileName;
AssignFile(ft,fname);
Reset(ft);
end
else ShowMessage('Открытие файла остановлено');
j:=0;
read(ft,s);
stringgrid2.RowCount:=s.kolvo_strok;
while not eof(ft) do
begin
read(ft,s);
stringgrid2.Cells[0,j]:=s.tablica;
inc(j);
end;
edit1.Text:=inttostr(s.kolvo_el);
edit2.Text:=s.fynkci9;
closeFile(ft);
end;



Пытался посмотреть по шагам ставлю указатель на начало процедуры, дойдя до строки


if OpenDialog1.Execute then



указатель почему-то перепрыгивает совсем на другую процедуру



procedure TForm1.Timer1Timer(Sender: TObject);
begin
StringGrid2.TopRow := StringGrid1.TopRow;
end;

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
ninja
сообщение 5.10.2009 21:06
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 103
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Извиняюсь за созданную тему решение было найденно добавлением оператора exit



.....
else begin ShowMessage('Открытие файла остановлено'); exit; end;
....

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 5.10.2009 21:14
Сообщение #3


Гость






Цитата
решение было найденно добавлением оператора exit
А зачем тебе лишний Exit, когда и без него прекрасно все можно сделать? Ты зачем разбил последовательность операторов на 2 части? Вот так что, кто-то тебе запретил делать:
begin
OpenDialog1.Title:='Открыть файл';
openDialog1.Filter :='Файлы таблицы истинности|*.tabl';
if OpenDialog1.Execute then
begin
fname:=OpenDialog1.FileName;
AssignFile(ft,fname);
Reset(ft);

j:=0;
read(ft,s);
stringgrid2.RowCount:=s.kolvo_strok;
while not eof(ft) do
begin
read(ft,s);
stringgrid2.Cells[0,j]:=s.tablica;
inc(j);
end;
edit1.Text:=inttostr(s.kolvo_el);
edit2.Text:=s.fynkci9;
closeFile(ft);
end
else ShowMessage('Открытие файла остановлено');
end;
? Никаких Exit-ов, заметь... И код читается лучше... Кстати, ошибки при чтении тоже надо бы обрабатывать, нельзя быть уверенным на 100%, что их не будет...
 К началу страницы 
+ Ответить 
ninja
сообщение 5.10.2009 21:24
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 103
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


мммм..... Спасибо, действительно так гораздо лучше и понятней
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 26.04.2024 1:56
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"