如何启用QBasic输出窗口的滚动条?

时间:2019-04-23 09:56:34

标签: scroll window output scrollbar qbasic

我正在尝试在QBASIC中显示一条语句1000次(用于语句)。我认为程序可以正常运行,但是我看不到1000条语句,因为无法在QBASIC的输出窗口中上下滚动。我只能看到1000条语句的最后一部分。

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

3 个答案:

答案 0 :(得分:0)

那将非常困难。对于QBasic,您必须了解PRINT的工作方式。除了外观之外,您还可以编写一个TSR程序,该程序可以用其他某种语言来实现您想要的功能。另一种方法是将所有内容存储在数组中,并通过滚动创建自己的显示例程。但是有1000行会遇到内存限制

答案 1 :(得分:0)

简而言之,除非您对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次。然后使用一些文本编辑器查看输出。您甚至可以使用一个程序来计算文本的行数,例如OPEN“ C:| somefile.txt”,用于输入AS#1:WHILE NOT EOF(1):INPUT#1,junk $:i = i + 1: WEND:打印“有“ + STR $(i)+”行。“

答案 2 :(得分:0)

尽管其他回答者都说它不是内置的,因此不可能,但我是正确的,我同意这是非常可取的!因此,我一次又一次地基于以下内容设计脚本:

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

经过测试,可以正常工作!如果要在程序中针对多个不同的文本块多次使用它,则只需将其转换为函数,然后将所需的变量传递给它即可。