Массив без предыдущих размеров

#arrays #basic #qbasic #freebasic

#массивы #Базовые модели #qbasic #freebasic

Вопрос:

У меня есть следующий код QuickBASIC 4.5:

 IF LEN(Dir$("mtn.vga")) > 0 THEN
BLOAD "mtn.vga", VARPTR(mtn(1))
  

Я пытаюсь перенести его на FreeBASIC, но получаю сообщение об ошибке:

Массив, у которого нет размеров, перед ‘(‘

ЕСЛИ LEN(Dir(«mtn.vga»)) > 0, ТО

        ^
  

Есть идеи?

Ответ №1:

Эта конкретная строка является абсолютно допустимым кодом на бесплатной основе (она работает, даже если вы сохраняете знак доллара после Dir()). Я запустил этот тестовый код, просто чтобы убедиться, и он работает так, как и следовало ожидать:

 IF LEN(DIR("sa.bas")) > 0 THEN 'sa.bas is the name of this file
    PRINT "file exists"
END IF
  

Не могли бы вы поместить больший фрагмент кода (возможно, на pastebin и связать меня с ним)? Причина проблемы может быть где-то чуть раньше в вашем коде.

Ответ №2:

В FreeBASIC строковая переменная $ after устарела, полезна, только если вы хотите использовать для совместимой программы со старым BASIC

Следуйте примеру программы, чтобы понять, что делает DIR ()

 'This example show you how work if want verify the exist file.

Print DIR("lendir.bas") ' Dir("namefile.ext") show the name of file if exist

IF LEN(DIR("lendir.bas")) > 0 THEN 'sa.bas is the name of this file
    PRINT "file exists"
END IF

'or you can use this too

IF DIR("lendir.bas") = "" THEN 'If file not exist
    PRINT "file not exists"
   Else 
    PRINT "file exist"
END IF
  

ЗАГРУЗКА
Загружает произвольные данные из файла, созданного с помощью BSave, или совместимого файла изображения BMP.

Но вы должны быть уверены, является ли исходный код QB или QuickBASIC, потому что у вас есть разные способы использовать одни и те же вещи

Пример fbc myprog.bas -lang qb не работает с этим примером, попробуйте fblite вместо qb