3

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

像这样-

Print "aaaaaaa"
Print "bbbbbbb"

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

4

3 回答 3

4

可能是这样的?

str$ = "aaaaaaa"
PRINT str$
str$ = "bbbbbbb"
PRINT str$
PRINT "last printed line:"; str$

或者,如此处所述,您可以通过在段 &HB800 处使用 PEEK 从屏幕内存中检索字符,因此类似这样

DEF SEG = &HB800
mychar = PEEK(1) 'etc

您必须跟踪上次打印的行以了解您需要 PEEK 的确切位置,因此这可能会很快变得非常复杂......

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

于 2015-06-15T19:20:53.477 回答
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 位置)上,然后加一。

于 2015-10-24T13:39:24.003 回答
1

我意识到这个问题已经有了一个可以接受的答案,但我有自己的解决方案,而不是试图找出你PRINT上次编辑的内容,而是在这个例子中PRINT使用你自己的。虽然它并不完美,它只需要字符串(因此)并使用不一定可取的变量,但它比在内存中戳更好。PRINT SUBMYPRINTSTR$(123SHARED

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
于 2016-06-03T22:13:14.357 回答