Как включить полосу прокрутки в окне вывода QBasic? - PullRequest
2 голосов
/ 23 апреля 2019

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

FOR x = 1 TO 1000
    PRINT "maydie";
    PRINT
NEXT x

Ответы [ 3 ]

0 голосов
/ 24 апреля 2019

Короче говоря, если вы не используете современный подход к QBasic, вы не можете.

Что вы можете сделать, это напечатать вывод в текстовый файл:

OPEN "C:\somefile.txt" FOR OUTPUT AS #1
FOR x = 1 TO 1000 
  PRINT #1, "maydie":
  PRINT
NEXT x

Это будет записывать "maydie" в C: \ somefile.txt 1000 раз.Затем используйте текстовый редактор для просмотра результатов.Вы даже можете использовать программу для подсчета строк текста, что-то вроде ОТКРЫТОГО «C: | somefile.txt» ДЛЯ ВХОДА AS # 1: БЕЗ EOF (1): ВХОД # 1, мусор $: i = i + 1:WEND: печать "Были" + STR $ (i) + "строки."

0 голосов
/ 24 апреля 2019

Хотя другие ответчики правы, говоря, что он не встроен и, следовательно, невозможен, я согласен, что это очень желательно!Следовательно, у меня снова и снова разрабатываются сценарии, основанные на следующем:

DIM text(1 to 1000) AS STRING
'Define text below: Here I've just defined it as every line being
'"maydie" with the value of the line number, but it could be whatever.

FOR i = 1 TO 1000
  text(i) = STR$(i) + "maydie"
NEXT i

CLS

position% = 0

FOR i = 1 to 25
  LOCATE i, 1: PRINT text(i); SPACE$(80 - LEN(text(i)));
NEXT i

DO
  x$=INKEY$
  IF x$ <> "" THEN
    SELECT CASE x$
      CASE CHR$(0) + CHR$(72) 'Up arrow
        position% = position% - 1
        IF position% < 0 THEN position% = 0
      CASE CHR$(0) + CHR$(80) 'Down arrow
        position% = position% + 1
        IF position% > 975 THEN position% = 975
      CASE CHR$(0) + "I" 'Page Up
        position% = position% - 24
        IF position% < 0 THEN position% = 0
      CASE CHR$(0) + "Q" 'Page Down
        position% = position% + 24
        IF position% > 975 THEN position% = 975
      CASE CHR$(27) 'ENDS the Program on ESC key.
        END
    END SELECT
    FOR i = 1 to 25
      LOCATE i, 1: PRINT text(i + position%); SPACE$(80 - LEN(text(i + position%)));
    NEXT i
  END IF
LOOP

Проверено и работает!Если вы хотите использовать его несколько раз в своей программе для нескольких различных текстовых блоков, вы можете просто превратить его в функцию и передать нужные переменные.

0 голосов
/ 23 апреля 2019

Это будет очень сложно. Для QBasic вы должны знать, как работает PRINT. Кроме того, вы можете написать программу TSR, которая делает то, что вы хотите на другом языке. Альтернатива - хранить все в массиве и создавать собственную подпрограмму отображения с прокруткой. Но с 1000 строк будет работать ограничение памяти

...