如何知道QBasic

时间:2015-06-15 08:16:02

标签: qbasic

我想知道如何在 QBasic 中获取最后一个打印文本。 就像程序打印几行一样,然后如何打印最后一行。

喜欢这个 -

Print "aaaaaaa"
Print "bbbbbbb"

然后程序将获得最后打印的行i.e. bbbbbbb

3 个答案:

答案 0 :(得分:4)

这样的事可能吗?

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的确切位置,这样可能会很快变得非常复杂......

出于这个原因,我建议你重新考虑一下你在这里想要完成什么,因为像这样的“屏幕抓取”通常只是一个坏主意

答案 1 :(得分:1)

鉴于最后打印的字符串没有以分号结尾,这段代码应该可以解决问题:

 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返回光标的当前行。 SCREEN(y, x)返回屏幕上y,x位置(行,行)处字符的ascii代码。每次不以分号结尾的字符串打印到屏幕上时,它将打印在光标的当前行(y位置)上,然后加1。

答案 2 :(得分:1)

我意识到这个问题已经有了一个已接受的答案,但我有自己的解决方案,而不是试图找出PRINT上次PRINT编辑的内容,而是使用你自己的PRINT {{ 1}}在此示例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