PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » SpiderBasic » SpiderBasic


SpiderBasic

Сообщений 31 страница 55 из 55

31

useful написал(а):

https://forums.spiderbasic.com/viewtopic.php?t=2235

Код по этой ссылке прекрасно выполняется всеми наличными браузерами на компе (Вин 7) . На телефоне (андр. 10) WEB прил. не выполняется ни одним нал. браузером. Сборка для Андроида тоже ничего не делает. Я про чтение-запись файлов.

Вот что пишут  Здесь :
"The File System Access API is currently supported on most Chromium browsers on Windows, macOS, ChromeOS, and Linux. A notable exception is Brave where it is currently only available behind a flag. Android support is coming for the origin private file system part (https://crbug.com/1354273 ). There are no plans currently for picker methods, but you can track potential progress by starring https://crbug.com/1011535 ."

В настройках андроидного Я-браузера нашел назначение папки сохранения файлов. Так что есть надежда писать не обязательно в "Загрузки" тем единственным способом, который работает -  средствами языка в браузерном приложении.

Отредактировано ЗАК (19.12.2022 02:10:21)

0

32

Погуглил что конфиги хранятся в /data/data но у меня там всего одна папка Total_Commander`а. В справке ini-файл не поддерживается, только json и xml. Пытаюсь понять как сделать конфиг. При открытии программы я не могу его сохранить (пока не могу), в инсталятор я тоже пока не знаю как засунуть. Хотелось бы как то пользователю объяснить, чтобы он настроил конфиг в такой-то папке и прога будет настроена под твои предпочтения, хотя бы так. Доступ к папке "/data/data" нет, попробовал в Total_Commander`е создать файл, пишет "Нет доступа".
У кого идеи по этому поводу, как создать возможность чтения параметров для программы и возможность доступа пользователю.

Отредактировано AZJIO (19.12.2022 20:43:33)

0

33

https://github.com/spiderbytes/Preferences

https://github.com/spiderbytes?tab=repositories

Отредактировано useful (20.12.2022 04:00:52)

0

34

useful
Обновил справку (на яндексе тоже по старой ссылке).

Как я и хотел, проверить 2 справки по разделам в одноимённых файлах, если текст справки SpiderBasic совпадает со справкой PureBasic, то берём этот же раздел из справки sergey2400 и вставляем в справку SpiderBasic.
То есть проверяем разделы:
Syntax
Description
Parameters
Return value
Remarks
Example
See Also
И если какой либо из этих разделов SpiderBasic совпадает по тексту с PureBasic, то берём перевод sergey2400 и вставляем в то же место взамен раздела. Конечно получилась солянка, во первых тексты микшируется русский с английским на одной странице, во вторых sergey2400  мог перевести что-то добавив, хотя вряд-ли так как он доточно помечал страницы в которых добавлял своё, поэтому будем надеяться на 100% верный перевод без отсылок на Windwos или Linux.

useful
Пока пользуюсь бесплатной версией и модули (Preference) под 300 строк ограничивают функционал до 800-300=500 строк. Но спасибо за интересные ссылки.

Написал ТЗ для создания будильника для смен, проблема была как сделать паузу между опросами времени, ведь Delay() нет, но нашёл, что AddWindowTimer() есть.

Отредактировано AZJIO (20.12.2022 09:58:28)

0

35

AZJIO написал(а):

AddWindowTimer() есть

Да, именно таймер в SB "наше фсё" Например в safari на гаджетах можно управлять шрифтами [Значёк в строке поиска Aa] и размер рабочего поля в пикселах меняется а событие resize не генерируется.

0

36

Кто знает на каком ресурсе можно собрать iOS приложение? Читал упоминание одного, но там оказалось мы заблокированы, санкции.

0

37

AZJIO написал(а):

Кто знает на каком ресурсе можно собрать iOS приложение? Читал упоминание одного, но там оказалось мы заблокированы, санкции.

О каком ресурсе речь?
Во первых нужен комп с mac os x и https://forums.spiderbasic.com/viewtopic.php?t=1036

Без яблочного джема вот https://www.b4x.com/b4i.html

Но с таким сырым продуктом, как SB быть готовым платить минимум сотню зелёных денег без каких бы то ни было гарантий отдачи, будет выглядеть странным.

p.s. может быть в следующей жизни,
https://habr.com/ru/company/itsumma/blog/570874/
https://www.rbc.ru/technology_and_media … =messenger

0

38

О ресурсе, где удаленно запускаешь ос, ставишь свою программу и тестируешь. То есть не нужно ставить макос, а используешь на сервере, установил программы, собрал свои 4 проги, выкачал их себе, отключился от сервера. Сервер завершил работу ос и потом по новой ставить, если еще раз понадобится.

0

39

Можно использовать виртуальную машину. https://rutracker.org/forum/viewtopic.php?t=5290314

0

40

useful написал(а):

https://forums.spiderbasic.com/viewtopic.php?t=2285

Как и ожидалось вероятно нужно детально разбираться с плагинами cordova и разрешениями.

Я так понял, что попробовал и, "как ожидалось", не работает. Но для очистки совести я тоже решил протыкать. Именно так, поскольку ни JS, ни Кордовы не знаю совсем. Начал с первой тестовой прогр. по ссылке выше - теста MobileExamineDirectory. Вот и осмелюсь доложить, что вышло.

Исх. текст библиотеки "Android/IOS internal and SD storage" начинается так (с моими незн. дополн., помеч. ";!-------------------------"):

Код:
Import "cordova telemetry on" : EndImport
Import "cordova plugin add cordova-plugin-file" : EndImport
;cordova.file.externalDataDirectory(if app data directory is on SD)
;cordova.file.externalRootDirectory(SD card root)
;cordova.file.applicationStorageDirectory(internal storage App r/w directory)
;NOTE:internal storage root not accessible from cordova; requires special permissions and not-included API stuff
Global.s SD_ROOT, SD_APP, INTERNAL  ;!----------------------------
SD_ROOT="" : !v_sd_root=cordova.file.externalRootDirectory
SD_APP="" : !v_sd_app=cordova.file.externalDataDirectory
INTERNAL="" : !v_internal=cordova.file.applicationStorageDirectory

Debug "SD_ROOT: " + SD_ROOT : Debug "SD_APP: " + SD_APP : Debug "INTERNAL: " + INTERNAL  ;!----------------------

Дебужная выдача такая:
SD_ROOT: files:///storage/emulated/0/
SD_APP: files:///storage/emulated/0/Android/Data/имяпакета/
INTERNAL: - не помню, не интересно.

Как можно видеть, эти путя ведут вовсе не на SD, а в память телефона. Видимо, "external" тут в том смысле, что не интимная память программы, а общедоступная.

В примере автора экзаменуется папка SD_ROOT. Только нифига не получается. Но, оказалось, что не всё так плохо - папка SD_АРР вполне читается. Она автоматом создалась при первом запуске, а в ней пустые подпапки - cashe и files. MobileExamineDirectory их показывает. В files файловиком создал файл и при экзаменации (...дь!) этой папки его показало.  Короче, работает только в папке пакета и его подпапках.

Чтобы добраться до SD, надо в SD_APP заменить /emulated/0/ на /имякарты/, в моем случае на /9016-4EF8/. И, так само, не вылезать за пределы папки имяпакета/. Эта папка-копия на SD тоже создалась автоматом.

В примере автора, в процедуре TimerEvents есть дурная строка
   ;{"type":entries[i].IsFile,"name":entries[i].name,"path":entries[i].nativeURL}
нарушающая структуру программы. Похоже, это неудачная попытка закомментировать. Почему-то  ";", когда за ней вплотную стоит "{", как признак комментария не воспринимается. Возможно, в JS это нормально. Если между ними воткнуть пробел, то тогда - комментарий. Озлившись, вообще изменил TimerEvents, упростив. Для теста и без разбора жсон можно обойтица. А дурная хотя бы потому, что i не определено.

Отредактировано ЗАК (28.12.2022 03:08:29)

0

41

ЗАК
В js комментарий "//" а не ";". Символ ";" в js означает разделитель команд, каждая команда если в блоке их несколько должна заканчиваться ";". Если в блоке одна команда, то её не обязательно заканчивать ";", аналогично операторы { } служат разделителями, поэтому если в конце строки стоит "}" то не обязательно ставить  ";", так как фигурная скобка сама отделяет блок от другой части кода.

Почитай справку js

Отредактировано AZJIO (28.12.2022 05:37:40)

0

42

Может стоит создать раздел по SpiderBasic? Я уже на оф.форуме вопросы задаю, как получить язык ОС.

0

43

Пётр
Пока мучаюсь с образом, с репозитория проги не устанавливаются, пишет версия ОС устарела. На сайт SpiderBasic не может зайти, с яндекса скачать не может, архивы распаковать не может rar, 7z, в общем надо всё перезаливать в zip. Как локально передать пока не знаю, Windows если присоединила диск, то мак не может его монтировать.Вечером буду опять разбираться.

Сделал в календарь будильник, но пока музыку проиграть не может, разбираюсь как сделать.

0

44

AZJIO написал(а):

Как локально передать пока не знаю

Можно включить общую папку в настройках виртуальной машины.

0

45

Пётр
при компиляции пишет: "У вас не установлена Cordova", при согласии установить делает проверку и выдаёт текст:

NodeJS isn't found, please install it from https://nodejs.org/ (choose the 'current' version) and relaunch this script.

Перехожу по ссылке https://nodejs.org/, жму "'current' version" открывает страницу с файлами для Windows, Linux и возможно MacOC в "архивах" tar.gz (без префикса Linux) скачиваю, распаковывается куча файлов, что с ними делать непонятно. На Windows, кстати, сразу качается msi без попытки перейти на страницу файлов.
Ещё запрашивал "Package ID" вставил яндекс-email, так как при попытке установить проги из репозитория запрашивал идентификатор и вставлял туда email автора этого образа, вот я и подумал что email пролезет. Предлагал указать это в настройках, но пункта настроек в меню не было, оказалось там всё по-другому, настройки на иконке в системном меню, а клавиши с Ctrl все на Win-клавише, хотя в Linux она называется Super-клавиша.

Нашёл инструкцию тут

Отредактировано AZJIO (30.12.2022 07:11:21)

0

46

AZJIO
Не морочьте людям голову на англоязычном форуме.
https://www.spiderbasic.com/showcase/on … creen.html
прекрасно работает на A5.1
Но английским по белому написано
SpiderBasic обеспечивает легкий доступ к касаниям экрана. Эта библиотека в основном предназначена для игровых или полноэкранных приложений.
SpiderBasic provides an easy access to the screen touches. This library is mainly designed for game or fullscreen applications.

В отрыве от screen работа библиотеки не предусматривалась.
Единственное, что похоже возможно для ловли жестов, это канвас как контейнер и анализ координат эмулируемой через пальцы мыши. Для этого как минимум есть события.
  #PB_EventType_MouseEnter      : The mouse cursor entered the gadget
  #PB_EventType_MouseLeave      : The mouse cursor left the gadget
  #PB_EventType_MouseMove       : The mouse cursor moved
  #PB_EventType_MouseWheel      : The mouse wheel was moved
======================================================================
https://vk.cc/ckniqm (https://www.spiderbasic.com/showcase/on … adget.html)
На пальцы прекрасно реагирует, но именно через события, а не через опрос.

Отредактировано useful (04.01.2023 08:20:22)

0

47

useful написал(а):

AZJIO
Не морочьте людям голову на англоязычном форуме.

Я никогда не морочу голову, если она у вас заморачивается это ваша проблема. Я задаю вопрос, может вы мне будете указывать что задавать а что нет? Вы можете на том же форуме под вопросом ответить что у вас работает и оставить свои комментарии и уточнения, дабы человек ответивший мне понял что я использую что-то другое в отличии от стандартного. Я конкретно указал является ли это специфической задачей. А также пример который был дан в чистом виде не подразумевал что-то иное, чем открыть ссылку в браузере и проверить логи в отладчике. У меня в отладчике нет ничего при использовании жестов, браузер был самсунг.

За ссылки спасибо.

Отредактировано AZJIO (04.01.2023 12:15:42)

0

48

Вот простейший шаблон на котором видно, что есть реакция как и заявлено на 5 одновременных прикосновений.
Но без screen получить хоть что то мне не удалось, да я и не надеялся.
Если бы это было возможно, хоть какое то упоминание в документации и примерах было бы.
Проверял на A5.1 MEIZU M3S и штатным и яндекс браузером.
Т.е. всё это как и многое другое для 2d игр со спрайтами.

Код:
EnableExplicit
#Desktop    = 0
Global DW   = 0
Global DH   = 0
Declare EventSD()
Declare EventRF()
ExamineDesktops()
DW = DesktopWidth(#Desktop)
DH = DesktopHeight(#Desktop)
OpenScreen(DW,DH,-1,"TestTS")
BindEvent(#PB_Event_SizeDesktop, @EventSD())
BindEvent(#PB_Event_RenderFrame, @EventRF())
FlipBuffers()
Procedure EventSD()
  DW = DesktopWidth(#Desktop)
  DH = DesktopHeight(#Desktop)
  ResizeScreen(DW,DH)
EndProcedure
Procedure EventRF()
  ExamineTouchScreen()
  ClearDebugOutput()
  Debug "Tsp0 " + Str(TouchScreenPushed(0))
  Debug "Tsp1 " + Str(TouchScreenPushed(1))
  Debug "Tsp2 " + Str(TouchScreenPushed(2))
  Debug "Tsp3 " + Str(TouchScreenPushed(3))
  Debug "Tsp4 " + Str(TouchScreenPushed(4))
  FlipBuffers()
EndProcedure 

Отредактировано useful (04.01.2023 16:06:22)

0

49

Всвязи с проблемой автоматической подгрузки конфига я сделал его так

Код:
g_id_file = ReadFile(#PB_Any, "./data/set.ini", @ReadCallback())

это даёт возможность перепаковать APK и вставить свой конфиг.
Но тут же возник вопрос, если прога браузер и имеет свой кеш, могу ли я сохранить файл в кеше и потом он бы подгружался? Так как файл "./data/set.ini" уже существует то я боюсь что запуск проги перезапишет этот файл, поэтому в итоге надо сохранять в другой файл, а при старте проверять, если есть save-файл, то использовать его, а если нет, то читаем оригинал. Это возможно?

Удалось, важен флаг #PB_LocalStorage

Код:
Procedure SaveCallback(Status, Filename$, File, Size)
	Select Status
    Case #PB_Status_Saved
;     	Debug 1
    	
    Case #PB_Status_Error
;     	Debug 0
	EndSelect
EndProcedure

; Создаём файл (по кнопке сохранить, если существует то перезаписать)
g_id_file = CreateFile(#PB_Any, "save.ini", @SaveCallback(), #PB_LocalStorage)

; пишем какие нибудь параметры
With Smena
	WriteStringN(g_id_file, "Day="+Str(\Day))
EndWith
WriteStringN(g_id_file, "Cycle="+Str(DaysCycleNumber))

With AlarmList()
	ForEach AlarmList()
    WriteStringN(g_id_file, "Alarm=" + Str(\NDay)
	Next
EndWith
CloseFile(g_id_file)

; через некоторое время считываем данные
g_id_file = ReadFile(#PB_Any, "save.ini", @ReadCallback(), #PB_LocalStorage)

Отредактировано AZJIO (11.01.2023 08:55:22)

0

50

Я очень надеюсь, что есть понимание https://osipenkov.ru/localstorage-sessionstorage/
File,FileName, ... в этом контексте имеют свои особенности и цикл жизни.

0

51

Призадумался сегодня, а возможно ли обработать события кнопок громкости на смартфоне. Оказывается возможно получить события Cordova на Android:

Код:
#CordovaEvent_VolumeUpButton = "volumeupbutton"
#CordovaEvent_VolumeDownButton = "volumedownbutton"

Procedure BindCordovaEvent(Event.s,*Callback)
  !document.addEventListener(v_event, p_callback);
EndProcedure

Procedure UnBindCordovaEvent(Event.s,*Callback)
  !document.removeEventListener(v_event, p_callback);
EndProcedure

Procedure _CordovaEvent(event)
  Define EventType
  !v_eventtype = v_event.type
  Debug "_CordovaEvent: " + EventType;
EndProcedure

BindCordovaEvent( #CordovaEvent_VolumeUpButton, @_CordovaEvent() )
BindCordovaEvent( #CordovaEvent_VolumeDownButton, @_CordovaEvent() )

Но, как указано в документации, в IOS эти события не поддерживаются.

Отредактировано Webarion (11.01.2023 18:32:15)

0

52

Webarion написал(а):

... в IOS эти события не поддерживаются.

На всякий случай спрошу. А как насчёт события появления/убирания экранной клавиатуры в ios?

0

53

useful написал(а):

На всякий случай спрошу. А как насчёт события появления/убирания экранной клавиатуры в ios?

Наверно, нужно использовать плагин Cordova. Не знаю, на счёт IOS, на Android работает плагин. Во всяком случае разработчиком заявлены обе платформы. Это один из плагинов, возможно есть и другие.
Этот код, работает на Android (на ios нет возможности проверить):

Код:
Import "cordova plugin add cordova-plugin-ionic-keyboard --save" ; подгрузим плагин cordova
EndImport

#CordovaEvent_KeyboardDidShow = "keyboardDidShow"
#CordovaEvent_KeyboardDidHide = "keyboardDidHide"

Procedure BindCordovaEvent(Event.s,*Callback)
  !window.addEventListener(v_event, p_callback);
EndProcedure

Procedure UnBindCordovaEvent(Event.s,*Callback)
  !window.removeEventListener(v_event, p_callback);
EndProcedure

Procedure _CordovaEvent(event)
  Define EventType
  !v_eventtype = v_event.type
  Debug "_CordovaEvent: " + EventType;
EndProcedure

BindCordovaEvent( #CordovaEvent_KeyboardDidShow, @_CordovaEvent() )
BindCordovaEvent( #CordovaEvent_KeyboardDidHide, @_CordovaEvent() )

If OpenWindow(0, 0, 0, 320, 100, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  StringGadget(0, 10,  10, 300, 20, "")
EndIf

0

54

Webarion написал(а):

Не знаю, на счёт IOS,

Я спросил в надежде, что есть инструмент под руками.
Проблему я описывал https://forums.spiderbasic.com/viewtopic.php?t=2307

0

55

useful написал(а):

Я спросил в надежде, что есть инструмент под руками.

У меня только старенький планш. Попробовать установить ipa приложение я могу, а вот собрать, инструмента нет. М.б. прокатит VirtualBox и эмулятор. Попробую на досуге.

useful написал(а):

Проблему я описывал

Там я ничего не понял. По вопросу событий появления/исчезания клавиатуры, есть не один плагин, есть и специально заточенные под ios.

Отредактировано Webarion (11.01.2023 22:33:04)

0


Вы здесь » PureBasic - форум » SpiderBasic » SpiderBasic