2015-06-15 2 views
3

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

Как this-

Print "aaaaaaa" 
Print "bbbbbbb" 

Тогда программа получит последний напечатанный линия i.e. bbbbbbb

+0

невозможно. –

ответ

4

Нечто подобное может быть?

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

Альтернативно, как explained here, вы можете получить символы из памяти экрана, используя PEEK в сегменте & HB800, так что-то вроде этого

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

Вы должны были бы отслеживать, на котором линия последний раз печатался, чтобы узнать, где именно вам нужно PEEK, так что, вероятно, он будет очень сложным очень быстро ...

По этой причине я рекомендую вам переосмыслить то, что именно вы пытаетесь выполнить здесь, причина «скрипинг экрана», как это обычно бывает Плохая идея.

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) возвращает ascii-код символа в позиции y, x (строка, строка) на экране. Каждый раз, когда строка, не заканчивающаяся точкой с запятой, печатается на экране, она печатается на текущей строке (позиция y) курсора, которая затем увеличивается на единицу.

1

Я понимаю, что этот вопрос уже принятый ответ, но у меня есть свое собственное решение, где вместо того, чтобы пытаться выяснить, что PRINT последнего PRINT редактор вы вместо того, чтобы использовать вы владеете PRINTSUB в этом примере 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