18.11.2016 / 21:58 | |
1961uvg Пользователь Сейчас: Offline
Имя: Victor Откуда: Минск Регистрация: 28.07.2015
| Изменено 1961uvg (18.11 / 22:33) (всего 8 раз) |
21.11.2016 / 13:18 | |
b0ing Пользователь Сейчас: Offline
Имя: Макс Регистрация: 24.08.2016
| При написании очередной программы возникла необходимость просмотра библиотек функций не выходя из листинга, принял решение исправить положение. Дело в том, что моя графическая библиотека (не считая других) насчитывает уже более шестидесяти функций и само собой начинаешь в них путаться, ладно если вспомнишь название, но с количеством аргументов начинается беда, не говорю уже о содержимом. Вобщем решил поделиться. Сама программа fn_viewer.bas это консольное приложение, считывает функции из любого листинга указанного в пути. Подключается при написании новой программы в начале простой командой include fn_viewer.bas и для отключения попросту коментируется восклицательным знаком. fn_viewer считывает заголовки всех функций в листинге и выводит их на экран, тап по заголовку открывает саму функцию и одновременно копирует ее в буфер для последующей вставки в код, если потребуется. Открывание другой функции перезаписывает буфер. Для тех кто потом захочет задать вотрос почему я вместо print не использовал select - отвечаю сразу так как редко захожу на форум, внешний вид работы select больше похож на баг из-за мерцания при открывани-закрывании, мне не нравится, потому пошел более сложным путем. Вобщем встречайте может кому пригодится. А и еще перед fn.def не должно быть пробелов Открыть спойлер Закрыть спойлер console.title "Запуск программы..."
gosub functions
list.create s,lst_files
! Тут располагаются пути библиотек или программ с функциями
! Для удобства чтения расположил так
list.add lst_files,"../source/strings"
list.add lst_files,"../source/graphics"
list.add lst_files,"../functions/rustime"
list.add lst_files,"../functions/rustime2"
list.add lst_files,"../sourse/math"
start:
Dialog.select tchd, lst_files, "Выбери файл или "+chr$(8634)+" - выйди"
if !tchd then console.title "Выход...": end "Программа завершена"
list.get lst_files,tchd,path$
!path$="../source/strings"
c=ReadFile(path$)
caps=SeparateCaption(c)
list.size caps,count
cls
Do
cls
out(caps)
console.title "Список функций"
console.line.touched tchd
acd=tchd
listener:
Do
console.line.touched tchd
if tchd then Console.line.text tchd,linetext$
Until acd<>tchd
if tchd=count-2 then goto listener
cls
console.title "Думаю..."
if tchd=count-1 then Console.title "Переход...":goto start
fout(c,tchd)
Console.title linetext$
bk=0
Do
Until bk
Until 0
OnBackKey:
if !bk then bk=1
Back.resume
functions:
! Чтение и помещение строк файла в лист
fn.def ReadFile(path$)
File.exists fe, path$
if !fe then
console.title "Ошибка в пути файла"
end "Программа завершена."
endif
list.create s, lst
text.open r, channel, path$
DO
text.readln channel, h$
if h$<>"" then list.add lst,h$
UNTIL h$ = "EOF"
text.close channel
fn.rtn lst
fn.end
! Без коментариев
fn.def out(lst)
list.size lst,le
for i=1 to le
list.get lst,i,h$
print h$
next
fn.end
! Отделение заголовков функций в листинге
fn.def SeparateCaption(lst)
list.create s,ds
list.size lst,le
for i=1 to le
list.get lst,i,h$
if lower$(left$(h$,6))="fn.def" then
e++
s$=int$(e)+") "+fuz$(right$(h$,len(h$)-6))
! print s$
list.add ds,s$
endif
next
list.add ds, chr$(11014)+" Клик по функции для её просмотра и копирования"+chr$(8598),"ЩЁЛК СЮДА, чтобы перейти к выбору другого файла",""
fn.rtn ds
fn.end
!Вывод содержимого выбранной функции
fn.def fout(lst,n)
list.size lst,a
for i=1 to a
list.get lst,i,s$
if lower$(left$(s$,6))="fn.def" then e++
if e=n then print s$+chr$(10); : cl$+=s$+chr$(10)
if e=n & lower$(s$)="fn.end" then Clipboard.put cl$ : f_n.break
next
if e<n then end "Программа завершена."
print ""
print chr$(10004)+"- Функция скопирована в буфер обмена"
! print ""
print chr$(8634)+" - для возврата жми "+chr$(34)+"назад"+chr$(34)
print ""
fn.end
!Первый символ заглавный
fn.def fuz$(s$)
if s$<>"" then z$=mid$(s$,2,1)
s$=right$(s$,len(s$)-2)
s$=upper$(z$)+s$
fn.rtn s$
fn.end
return
Изменено aNNiMON (21.11 / 13:21) (всего 2 раза)
Прикрепленные файлы: fn_viewer.bas (2.98 кб.) Скачано 942 раза |
21.11.2016 / 20:12 | |
1961uvg Пользователь Сейчас: Offline
Имя: Victor Откуда: Минск Регистрация: 28.07.2015
| Прикольно использование символов unicode! Без твоей предыдущей программы , вообще никто их бы и не использовал! А с помощью их можно делать чудесную псевдографики! Как твой пример - программа класс! Если бы ещё и свою библиотеку выложил? Вообще было бы супер!
Изменено 1961uvg (21.11 / 20:59) (всего 2 раза) |
21.11.2016 / 22:04 | |
Витаминыч Супермодератор Сейчас: Offline
Имя: Василиус Откуда: RZN Регистрация: 20.04.2012
| 1961uvg, Почти 2017, а вы не хотите юникод? __________________
わからない!! |
22.11.2016 / 11:17 | |
1961uvg Пользователь Сейчас: Offline
Имя: Victor Откуда: Минск Регистрация: 28.07.2015
| На официальном форуме вышла 6-я версия OliBasicVI - разновидность RFO-Basic. Имеет дополнительные функции и изменения в bundles. Совместима с версией 1.901 Для установки этой тестовой версии - нужно удалить RFO-Basic. http://rfobasic.freeforums.org/hot-summer-of-code-t4408-10.html Изменено 1961uvg (22.11 / 11:17) (всего 1 раз) |
24.11.2016 / 10:12 | |
1961uvg Пользователь Сейчас: Offline
Имя: Victor Откуда: Минск Регистрация: 28.07.2015
| Там же добавили вариант тестовой версии не требующий удаления RFO-Basic! http://rfobasic.freeforums.org/hot-summer-of-code-t4408-20.html |
24.11.2016 / 13:22 | |
levapbar Пользователь Сейчас: Offline
Имя: Павел Регистрация: 04.09.2016
| Может кто знает? Можно ли сделать на бейсике интернет радио? Вставил ссылку на поток и слушай. А то все интернет радио какие-то не такие... У каждого разработчика свой взгляд на это дело - Audio.load нехочет понимать ссылку на поток. И еще: вставляешь смайлик, а их оказывается два. Похоже бейсик пошел по рукам. Один забросил разработку, второй продолжил, теперь и он потерялся. Появился следующий Изменено levapbar (24.11 / 13:36) (всего 2 раза) |
24.11.2016 / 14:02 | |
1961uvg Пользователь Сейчас: Offline
Имя: Victor Откуда: Минск Регистрация: 28.07.2015
| Изменено aNNiMON (9.04 / 10:58) (всего 3 раза) |
24.11.2016 / 14:06 | |
Витаминыч Супермодератор Сейчас: Offline
Имя: Василиус Откуда: RZN Регистрация: 20.04.2012
| levapbar, Стандартный плеер такое не умеет разве?
__________________
わからない!! |
24.11.2016 / 14:17 | |
levapbar Пользователь Сейчас: Offline
Имя: Павел Регистрация: 04.09.2016
| Джет аудио нет. Для меня у него лучший звук. И хочется интернет плеер с возможностью записи и возможностью выдергивать ссылки на поток со страницы вещания.
Изменено levapbar (24.11 / 14:21) (всего 1 раз) |