Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Для начинающих (http://zx-pk.ru/forumdisplay.php?f=43)
-   -   Обнулить DATA в BASIC (http://zx-pk.ru/showthread.php?t=13832)

JeRrS 15th September 2010 17:59

Обнулить DATA в BASIC
 
0

null_device 15th September 2010 18:07

Есть волшебная команда restore n где n - строка с данными которые будут считываться по команде read. :)

Ewgeny7 15th September 2010 19:04

Нет. В текстовых строках "тэги" цвета входят в общую строку.
Если нужно выводить цветные буквы из строки, организуй второй массив, цифры в котором будут означать цвет. На каждую букву - по цифре :)

siril 15th September 2010 20:44

Можно создать двумерный массив, прочитать всё в него, затем ходить по нему =)

если делать в том стиле как ты задумал надо:

10 DATA 1,7, 2,6, 3,5, 4,4, 5,3, 6,2, 7,1
30 READ B
40 READ P
50 BORDER B, PAPER P, CLS
60 READ B,P: GOTO 50

Данные для бордера и бумаги хранятся парами, друг за другом.

null_device 15th September 2010 20:55

Проще делать это, вычисляя "полное" значение ink+paper+bright+flash. И места будет занимать будет меньше и "глобально" меняет одним оператором poke m,n в системных переменных. Для цвета border также актуально..

psb 15th September 2010 21:50

Quote:

Originally Posted by jerrs (Post 315582)
Так и еще вопрос можно ли как то избежать ошибки если в A$ текст цветной? а то при попытки вызвать его print 0,n;a$(n+1) пишет K Invalid Color

проверять, что есть по a$(n), если там код, отвечающий за цвет, то делать потом a$(n+2). а по n+2 тоже надо проверять, не цвет ли там... т.е. можно, но сложно.

JeRrS 30th September 2010 12:43

Еще вопрос, есть заполненная DATA, как через PRINT вызвать допустим по счету третью запись в DATA не чередовая READ с начала?

psb 30th September 2010 12:54

если типа так:
9999 DATA 1,2,3,4,5
и ты хочешь сразу 3 получить, то по-простому никак. возможно какие-нить POKE в сист. переменные что-то и решат.

null_device 1st October 2010 06:19

Quote:

Originally Posted by jerrs (Post 319619)
есть заполненная DATA, как через PRINT вызвать допустим по счету третью запись в DATA не чередовая READ с начала?

Расписать каждое значение (или группу) в свой оперетор data пронумеровав строки, допустим через 10. А потом вызывать их через restore n подставляя номер нужной записи (с соотв. приращением и шагом).
Вариант с хранением данных непосредственно в памяти (операторами poke\peek) более "экономичный", но геморный если понадобится что-нить поменять местами или "глобально" изменить в данных.

danner 5th October 2010 20:38

23639/23640 "DATADD" - адрес последнего считанного оператором READ объекта данных в операторах DATA.
То есть навскидочку можно, наверное, читать первый элемент, извлекать его адрес PEEKом из этой переменной, а потом, изменив нужным образом, POKEать обратно. Числовые данные занимают по 5 байт каждое число, символы по одному. Надо поиграться, в общем ;)

---------- Post added at 18:38 ---------- Previous post was at 18:34 ----------

То есть вру, пять байт числового значения идут после записи того же числа в символах, то есть одна позиция числовых данных (с одним разрядом) занимает: байт символа + 5 байт числа + байт запятой, итого семь. А символ, соответственно, два байта (считая запятую). Так, что ли?..


All times are GMT +4. The time now is 00:40.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.