
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.21] |
![]() |
|
Сообщ.
#1
,
|
|
|
![]() ![]() Program GamersCreate; Uses Crt; Type AlliansGamers = Record Nik : string[25]; x,y : array[1..15] of Byte; end; Var SIn,Sn,Sx,Sy : String; FIn : Text; FOut : file of AlliansGamers; AV : AlliansGamers; step,j,ni,Code : Integer; Begin ClrScr; Write(' Введите название файла (без расширения): '); ReadLn(SIn); Assign(FIn,SIn+'.txt'); Reset(FIn); Assign(FOut,SIn+'.als'); ReWrite(FOut); step:=1; Repeat Case step of 1 : begin If Not Eof(FIn) then begin Close(FIn); Close(FOut); end else begin ReadLn(FIn,SIn); step:=2; end; end; 2 : begin For j:=1 to 15 do begin AV.x[j]:=0; AV.y[j]:=0; end; j:=0; ni:=Pos('#',SIn); If ni=0 then step:=1 else begin Inc(ni); step:=3; end; end; 3 : begin If SIn[ni]=' ' then If SIn[ni+1]=' ' then begin step:=5; AV.Nik:=Sn; end else step:=4 else step:=4; end; 4 : begin Sn:=Sn+SIn[ni]; Inc(ni); step:=3; end; 5 : begin If Not Eof(FIn) then begin Close(FIn); Close(FOut); end else begin Sx:=''; Sy:=''; ReadLn(FIn); ni:=Pos('[',SIn); If ni=0 then If (Pos('#',SIn)>0) then begin Write(FOut,AV); step:=2; end else step:=5 else begin Inc(ni); step:=6; end; end; end; 6 : begin If SIn[ni]=':' then begin Inc(ni); step:=7; end else begin Sx:=Sx+SIn[ni]; Inc(ni); step:=6; end; end; 7 : begin If SIn[ni]=']' then begin Inc(j); Val(Sx,AV.x[j],Code); Val(Sy,AV.y[j],Code); step:=5; end else begin Sy:=Sy+SIn[ni]; Inc(ni); step:=7; end; end; end; Until False; End. Программа компилируется, запускается. Сразу после ввода имени файла программа вылетает, IDE показывает ошибку 103. Что не так в программе? Нашел текст ошибки: 103 File not open Reported by the following functions : Close, Read, Write, Seek, EOf, FilePos, FileSize, Flush, BlockRead, and BlockWrite if the file is not open. Но не могу понять где и почему происходит ошибка. ОС: Windows XP IDE: FPC 2.2.2 |
![]() |
Сообщ.
#2
,
|
|
Цитата Polinom2686 @ Файл с введенным_именем.TXT в текущей папке присутствует? Тогда присоедини его тоже сюда (в архиве, чтоб можно было посмотреть, где именно у тебя вылетает программа). У меня с пустым файлом она просто зависает, а не вылетает. Но не могу понять где и почему происходит ошибка. |
Сообщ.
#3
,
|
|
|
Программа должна разобрать этот файл.
Добавлено Вообще задача такая: в файле находится список альянса, который содержит ник игрока и название его городов и координат островов. Надо разобрать этот файл, т.е. вытащить из него ники игроков и координаты островов для каждого игрока, и сохранить данные в типизированный файл. Прикреплённый файл ![]() |
Сообщ.
#4
,
|
|
|
Методика построения программы взята отсюда http://zeus.sai.msu.ru:7000/programming/theory/formal.shtml
|
![]() |
Сообщ.
#5
,
|
|
Ошибка здесь:
![]() ![]() Repeat Case step of 1 : begin If Not Eof(FIn) then begin Close(FIn); // <--- Close(FOut); end ... Смотри: ты при первом заходе в Case имеешь step = 1, конец файла НЕ достигнут, и ты файл закрыл... Что дальше? Что изменилось? Ничего, step все так же = 1, файл закрыт, попытка применить EOF к закрытому файлу приводит к тому, что ты видишь... Там точно нужен NOT? |
Сообщ.
#6
,
|
|
|
Спасибо, я сейчас посмотрю у себя в алгоритме.
Добавлено Да, действительно Not лишний. Спасибо. +1 |