如何知道 QBasic 中最后打印的文本
how to know the last printed text in QBasic
我想知道如何在 QBasic 中获取最后打印的文本。
比如如果程序打印了好几行,那么如何打印最后一行。
像这样-
Print "aaaaaaa"
Print "bbbbbbb"
然后程序将得到最后打印的行i.e. bbbbbbb
也许是这样的?
str$ = "aaaaaaa"
PRINT str$
str$ = "bbbbbbb"
PRINT str$
PRINT "last printed line:"; str$
或者,如 explained here,您可以在 &HB800 段使用 PEEK 从屏幕内存中检索字符,所以像这样
DEF SEG = &HB800
mychar = PEEK(1) 'etc
您必须跟踪最后打印的行以了解您需要 PEEK 的确切位置,因此这可能很快就会变得非常复杂...
出于这个原因,我建议您重新考虑您要在这里完成的确切目标,因为 "screen scraping" 像这样通常只是一个 坏主意 。
鉴于最后打印的字符串没有以分号结尾,这段代码应该可以解决问题:
FOR char.num = 1 TO 80
last.line$ = last.line$ + chr$(SCREEN(CSRLIN - 1, char.num))
NEXT char.num
PRINT "Content of last line printed to is:"; last.line$
说明:CSRLIN
returns光标当前行。 SCREEN(y, x)
returns 屏幕上 y, x 位置(行,行)的字符的 ascii 码。每次将不以分号结尾的字符串打印到屏幕上时,它被打印到光标的当前行(y 位置),然后递增 1。
我意识到这个问题已经有了一个公认的答案,但我有自己的解决方案,而不是尝试计算出 PRINT
最后 PRINT
的内容,而是使用你自己的 PRINT
SUB
在这个例子中 MYPRINT
。虽然它并不完美,它只接受字符串(因此 STR$(123
)并使用不一定可取的 SHARED
变量,但它比在内存中戳更好。
DECLARE SUB MYPRINT (text$)
DIM SHARED lastprint$
MYPRINT ("Hello, World!")
MYPRINT (STR$(123))
MYPRINT ("Hi Again")
MYPRINT (lastprint$)
SUB MYPRINT (text$)
PRINT (text$)
lastprint$ = text$
END SUB
输出:
Hello, World!
123
Hi Again
Hi Again
我想知道如何在 QBasic 中获取最后打印的文本。 比如如果程序打印了好几行,那么如何打印最后一行。
像这样-
Print "aaaaaaa"
Print "bbbbbbb"
然后程序将得到最后打印的行i.e. bbbbbbb
也许是这样的?
str$ = "aaaaaaa"
PRINT str$
str$ = "bbbbbbb"
PRINT str$
PRINT "last printed line:"; str$
或者,如 explained here,您可以在 &HB800 段使用 PEEK 从屏幕内存中检索字符,所以像这样
DEF SEG = &HB800
mychar = PEEK(1) 'etc
您必须跟踪最后打印的行以了解您需要 PEEK 的确切位置,因此这可能很快就会变得非常复杂...
出于这个原因,我建议您重新考虑您要在这里完成的确切目标,因为 "screen scraping" 像这样通常只是一个 坏主意 。
鉴于最后打印的字符串没有以分号结尾,这段代码应该可以解决问题:
FOR char.num = 1 TO 80
last.line$ = last.line$ + chr$(SCREEN(CSRLIN - 1, char.num))
NEXT char.num
PRINT "Content of last line printed to is:"; last.line$
说明:CSRLIN
returns光标当前行。 SCREEN(y, x)
returns 屏幕上 y, x 位置(行,行)的字符的 ascii 码。每次将不以分号结尾的字符串打印到屏幕上时,它被打印到光标的当前行(y 位置),然后递增 1。
我意识到这个问题已经有了一个公认的答案,但我有自己的解决方案,而不是尝试计算出 PRINT
最后 PRINT
的内容,而是使用你自己的 PRINT
SUB
在这个例子中 MYPRINT
。虽然它并不完美,它只接受字符串(因此 STR$(123
)并使用不一定可取的 SHARED
变量,但它比在内存中戳更好。
DECLARE SUB MYPRINT (text$)
DIM SHARED lastprint$
MYPRINT ("Hello, World!")
MYPRINT (STR$(123))
MYPRINT ("Hi Again")
MYPRINT (lastprint$)
SUB MYPRINT (text$)
PRINT (text$)
lastprint$ = text$
END SUB
输出:
Hello, World!
123
Hi Again
Hi Again