Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Ошибка при открытии файла I/O error 103

Автор: ninja 6.10.2009 0:45

Здравствуйте, столкнулся с такой проблемой при открытии типизированного файла все происходит нормально, но когда нажимаю кнопку отмена вместо открыть появляется ошибка 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;


Автор: ninja 6.10.2009 1:06

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



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


Автор: volvo 6.10.2009 1:14

Цитата
решение было найденно добавлением оператора 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 6.10.2009 1:24

мммм..... Спасибо, действительно так гораздо лучше и понятней

Автор: where can i buy stromectol in th 31.08.2021 23:14

China Syntroid

Автор: nishaknapp 16.01.2023 6:54

Why not settling on games that is fun and at the same time your earning. Well it'll make suspense because the game is well but dude just try it and it gave me hope while pandemic is real rn. https://fashion4home.net/best-bonuses-in-casino/