Qbasic: недопустимый номер файла в * номере строки * - PullRequest
0 голосов
/ 10 января 2019

Я пишу программу на GW-BASIC. По некоторым причинам у меня есть следующая ошибка:

"Numéro de fichier illégal en 4712"

, который можно перевести на английский,

"недопустимый номер файла в 4712"

Вот часть моего кода:

51 Chemin$ = "T:\Basic\Calculs\" + NF$

52 ON ERROR GOTO 60
53 MKDIR Chemin$
54 END

... ( a lot of code not important to solve this problem :) )

4711 CHDIR Chemin$
4712 OPEN "Intdrcrc.doc" FOR APPEND AS #3
4712 PRINT #3,       "*---------------------------------------------------------------------------------------------------------------*"
4713 PRINT #3, USING "* Centre ##### \        \#######.### #######.### Intersect Droite Cercler                                       *";IC,NC$,XC#,YC#
4714 PRINT #3, USING "* Point  ##### \        \#######.### #######.### R=#######.###                                                  *";IP,NP$,XP#,YP#,R#
4715 PRINT #3, USING "* 1er Intersection  M1                                            #####  \        \ #######.###   #######.###   *";I1,N1$,XM1#,YM1#
4716 PRINT #3, USING "* 2e  Intersection  M2                                            #####  \        \ #######.###   #######.###   *";I2,N2$,XM2#,YM2#
4717 PRINT #3,       "*---------------------------------------------------------------------------------------------------------------*"
4718 CLOSE #3
4719 CHDIR "T:\Basic"

У меня была такая же проблема в предыдущих строках, поэтому я изменил # after "APPEND", но здесь, на line 4712, изменение # не решает проблему ..

Надеюсь, я достаточно ясно,

Большое спасибо за ваши предложения!

:)

Ответы [ 4 ]

0 голосов
/ 14 февраля 2019

Эта вторая строка пронумерована как 4712, заменяя первую? Если это так, программа попытается распечатать файл № 3, который не был открыт.

4712 OPEN "Intdrcrc.doc" FOR APPEND AS #3
4712 PRINT #3,       "*---------------------------------------------------------------------------------------------------------------*"
0 голосов
/ 10 января 2019

Итак, я написал это:

4702 CHDIR Chemin$
4703 OPEN "Intdrcrc.doc" FOR APPEND AS 3
4704 IF errorflag <> 0 THEN
4705 errorflag = 0
4706 CLOSE
4707 PRINT "File not found - press return to continue"
4708 INPUT "", a$
4709 EXIT SUB
4710 END IF

4712 PRINT 3,       "*---------------------------------------------------------------------------------------------------------------*"
4713 PRINT 3, USING "* Centre ##### \        \#######.### #######.### Intersect Droite Cercler                                       *";IC,NC$,XC#,YC#
4714 PRINT 3, USING "* Point  ##### \        \#######.### #######.### R=#######.###                                                  *";IP,NP$,XP#,YP#,R#
4715 PRINT 3, USING "* 1er Intersection  M1                                            #####  \        \ #######.###   #######.###   *";I1,N1$,XM1#,YM1#
4716 PRINT 3, USING "* 2e  Intersection  M2                                            #####  \        \ #######.###   #######.###   *";I2,N2$,XM2#,YM2#
4717 PRINT 3,       "*---------------------------------------------------------------------------------------------------------------*"
4718 CLOSE 3
4719 CHDIR "T:\Basic"

Результат: в окне gwbasic cmd написано: «Файл не найден - нажмите return, чтобы продолжить»

И тогда создается файл "intdrcrc.doc". Но он пуст, как будто «PRINT 3» не работает

0 голосов
/ 13 февраля 2019

Почему бы не попробовать:

4702 CHDIR Chemin$
4703 OPEN "Intdrcrc.doc" FOR OUTPUT AS #3
4712 PRINT #3, "*---------------------------------------------------------------------------------------------------------------*"
4713 PRINT #3, USING "* Centre ##### \        \#######.### #######.### Intersect Droite Cercler                                       *"; IC, NC$, XC#, YC#
4714 PRINT #3, USING "* Point  ##### \        \#######.### #######.### R=#######.###                                                  *"; IP, NP$, XP#, YP#, R#
4715 PRINT #3, USING "* 1er Intersection  M1                                            #####  \        \ #######.###   #######.###   *"; I1, N1$, XM1#, YM1#
4716 PRINT #3, USING "* 2e  Intersection  M2                                            #####  \        \ #######.###   #######.###   *"; I2, N2$, XM2#, YM2#
4717 PRINT #3, "*---------------------------------------------------------------------------------------------------------------*"
4718 CLOSE #3
0 голосов
/ 10 января 2019

Кажется, файл Intdrcrc.doc не существует (хотя я не могу быть уверен в этом, не глядя на остальную часть вашего кода).

То, что вы можете попробовать,

  • замените OPEN "Intdrcrc.doc" FOR APPEND AS #3 на OPEN "Intdrcrc.doc" FOR OUTPUT AS 3 и попробуйте, если он выдаст ошибку. Это просто для проверки, конечно. Вы должны вернуться к APPEND позже. Мы хотим увидеть, исчезла ли ошибка с OUTPUT. Если это так, это, вероятно, означает, что файл не существует, как вы ожидали.

Во-вторых, вам нужно реализовать некоторую обработку ошибок после команды OPEN.

Что вы можете сделать, это что-то вроде этого,

 4710 ...
 4711 SHARED errorflag
 4712 OPEN "Intdrcrc.doc" FOR APPEND AS 1
 4713 IF errorflag <> 0 THEN
 4714   errorflag = 0
 4715   CLOSE
 4716   PRINT "File not found - press return to continue."
 4717   INPUT "", a$
 4718   EXIT SUB
 4719 END IF
4720 PRINT #3,       "*------------------------------------------*"
4721 ...

Чтобы мы могли знать, что-то еще, если произойдет ошибка.

...