Сайт | Скачать | Видео | Wiki

Автор Тема: StopwatchTimer (PureBasic)  (Прочитано 8088 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AZJIO

  • Модератор
  • Старожил
  • ****
  • Сообщений: 301
  • Репутация: +10/-0
  • Автор темы
Re: StopwatchTimer (PureBasic)
« Ответ #15 : 01 Февраль 2021, 13:08:55 »
Обновил, исправил ситуацию с пробелами в путях, то есть следующий путь:
/media/windows/элемент с пробелом/file
экранируется так:
/media/windows/"элемент с пробелом"/file

это работает только при выборе файлов через "Открыть", а для ком-строки путь естественно экранирование указывается самостоятельно, так как не возможно анализировать что является путём.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34003
  • Репутация: +231/-0
    • PuppyRus-A
Re: StopwatchTimer (PureBasic)
« Ответ #16 : 01 Февраль 2021, 14:09:21 »
для ком-строки путь естественно экранирование указывается самостоятельно
Плохая идея. Не догадаются
А нельзя  весь путь в кавычки, чтоб наверняка "/media/windows/элемент с пробелом/file" ?

Оффлайн AZJIO

  • Модератор
  • Старожил
  • ****
  • Сообщений: 301
  • Репутация: +10/-0
  • Автор темы
Re: StopwatchTimer (PureBasic)
« Ответ #17 : 01 Февраль 2021, 15:03:48 »
А нельзя  весь путь в кавычки, чтоб наверняка "/media/windows/элемент с пробелом/file" ?
нельзя, потому что во первых это не Windows, только там можно весь путь в кавычки. Во вторых, а если вместе с путями будут указаны ключи/параметры, например -ver или file: или \k или --h или комбинацию из 5 параметров. И как это прога будет воспринимать это как путь? Только автор ком-строки знает где ключи, а где путь, а прога которой передаются данные конечно знает в каком формате ей задаются, но я например не могу заранее угадать как автор какой то проги придумал у себя формат ключей, их порядок, их возможное количество. То что я буду считать путём может оказаться кучей параметров.

Зря я писал сложную функцию выделение кавычками элемента пути. Задал вопрос на офсайте, может есть встроенная функция gtk, в итоге мне сказали что перед каждым пробелом можно поставить обратную косую черту, типа
/media/windows/элемент\ с\ пробелом/file
то есть фактически просто заменить пробел на "\ " себя же с чертой и всё, без сложностей.
« Последнее редактирование: 01 Февраль 2021, 15:06:45 от AZJIO »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34003
  • Репутация: +231/-0
    • PuppyRus-A
Re: StopwatchTimer (PureBasic)
« Ответ #18 : 01 Февраль 2021, 15:10:30 »
это не Windows, только там можно весь путь в кавычки
Возможно я что-то не понял, но в линуксе cat "/home/qq ww/file" работает
заменить пробел на "\ " себя же с чертой
да
Код
echo "1 2" |sed 's/ /\\ /g'
Но еще могут быть пробел тире и т.п.
Можно сделать прога и ключи в разных окнах ввода или в тултипе написать про кавычки
« Последнее редактирование: 01 Февраль 2021, 15:15:14 от sfs »

Оффлайн AZJIO

  • Модератор
  • Старожил
  • ****
  • Сообщений: 301
  • Репутация: +10/-0
  • Автор темы
Re: StopwatchTimer (PureBasic)
« Ответ #19 : 01 Февраль 2021, 16:43:07 »
Возможно я что-то не понял, но в линуксе cat "/home/qq ww/file" работает
cat это же не исполняемый файл, которому передаётся путь. Внутри PureBasic тоже программные функции нормально работают с путями. Проблема то движка интерпретации параметров исполняемого файла.

Можно сделать прога и ключи в разных окнах ввода или в тултипе написать про кавычки
Зачем, ведь в терминале такое же поведение при запуске исполняемых файлов и никто же не подсказывает. Если чел умеет работать с терминалом то он поймёт и проблему ком-строки в любой программе, а не только в моей.

Оффлайн AZJIO

  • Модератор
  • Старожил
  • ****
  • Сообщений: 301
  • Репутация: +10/-0
  • Автор темы
Re: StopwatchTimer (PureBasic)
« Ответ #20 : 04 Февраль 2021, 15:18:24 »
Может кому интересно, но я виндовую версию подкрутил до линуксовых обновлений и протестировал, хорошо что заранее в исходнике делал разделение на виндовую и линуксовую часть, поэтому практически сразу заработало.

Вот как это выглядит:
Код
CompilerSelect #PB_Compiler_OS
    CompilerCase #PB_OS_Windows
; некий виндовый код
    CompilerCase #PB_OS_Linux
; некий линуксовый код
CompilerEndSelect

или так:

Код
CompilerIf #PB_Compiler_OS= #PB_OS_Linux
; некий линуксовый код
CompilerEndIf

то есть компилятор взависимости от ОС выбирает что ему компилировать, а что игнорировать. Допустим это могут быть внутренние для ОС функции WinAPI или GTK3.

Оффлайн k0l0p0k

  • Ветеран
  • *****
  • Сообщений: 1611
  • Репутация: +27/-1
Re: StopwatchTimer (PureBasic)
« Ответ #21 : 04 Февраль 2021, 15:59:12 »
cat это же не исполняемый файл
Код
file `which cat`
/usr/bin/cat: ELF 64-bit LSB pie executable ...
1.пень G2020,8Gb,Radeon RX460 (Debian+openBox+LXPanel)
2.нетбук  Samsung N145 (Debian+openBox+LXPanel, ddr01)

Оффлайн AZJIO

  • Модератор
  • Старожил
  • ****
  • Сообщений: 301
  • Репутация: +10/-0
  • Автор темы
Re: StopwatchTimer (PureBasic)
« Ответ #22 : 04 Февраль 2021, 16:12:46 »
k0l0p0k
Ок, нашёл, в  /usr/bin его не было, нашёл в /bin
Однако я читал правило, что в кавычки заключается не вся строка пути, а только элемент пути с пробелом, если их несколько, то каждый. Я ранее тестировал выделять весь путь, потому что так проще и это не работало. Остаётся признать что каждая программа сама определяет то как ей передаются параметры.
« Последнее редактирование: 04 Февраль 2021, 16:18:11 от AZJIO »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34003
  • Репутация: +231/-0
    • PuppyRus-A
Re: StopwatchTimer (PureBasic)
« Ответ #23 : 04 Февраль 2021, 16:31:52 »
Нет таких правил. Везде в линукс путь "1 2"3"4 5" будет равносилен "1 234 5"
компилятор взависимости от ОС выбирает что ему компилировать
круто

Оффлайн k0l0p0k

  • Ветеран
  • *****
  • Сообщений: 1611
  • Репутация: +27/-1
Re: StopwatchTimer (PureBasic)
« Ответ #24 : 04 Февраль 2021, 16:38:36 »
Ок, нашёл, в  /usr/bin его не было, нашёл в /bin
which обычно знает где находится бинарник
1.пень G2020,8Gb,Radeon RX460 (Debian+openBox+LXPanel)
2.нетбук  Samsung N145 (Debian+openBox+LXPanel, ddr01)

Оффлайн AZJIO

  • Модератор
  • Старожил
  • ****
  • Сообщений: 301
  • Репутация: +10/-0
  • Автор темы
Re: StopwatchTimer (PureBasic)
« Ответ #25 : 04 Февраль 2021, 16:47:34 »
Нет таких правил. Везде в линукс путь "1 2"3"4 5" будет равносилен "1 234 5"
Подразумевается элемент между /тут/, от наклонной до наклонной, а не просто внутри. И что самое интересное имя файла и папки поддерживает все символы, кроме наклонной /. Отсюда, что если "1 2"3"4 5" это реальное имя и это не выделено кавычками?

Кстати, пока не могу найти подтверждение своего тезиса, но нашёл такой вариант: /dir s probelom$ то есть окончание пути доллар. Вот только проверить чтобы всё это работало для любой программы. А кавычки тоже рекомендуют экранировать "1\ 2\"3\"4\ 5" чтобы читать их литерально. Единственное что я понял, если я использую xdg-open, то мне нужно изучить его правила чтения путей.
« Последнее редактирование: 04 Февраль 2021, 17:12:14 от AZJIO »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34003
  • Репутация: +231/-0
    • PuppyRus-A
Re: StopwatchTimer (PureBasic)
« Ответ #26 : 04 Февраль 2021, 17:13:32 »
Везде в линукс путь "1 2"/3"4 5" будет равносилен "1 2/34 5"
то есть окончание пути доллар
это regex наверное
Код
printf "123\n36" |egrep '3$'

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34003
  • Репутация: +231/-0
    • PuppyRus-A
Re: StopwatchTimer (PureBasic)
« Ответ #27 : 04 Февраль 2021, 17:21:03 »
xdg-open - это скрипт, но очень мутный.
Почти во всех ФМ еще можно закрепить через ~/.local/share/user-places.xbel (этот файл ФМ сам создает, когда выбираешь, чем открывать)

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2556
  • Репутация: +33/-0
Re: StopwatchTimer (PureBasic)
« Ответ #28 : 04 Февраль 2021, 17:25:48 »
# сдается отчасти по темам "кавыченья" и "запусков"... (я конечно про шелл, а не про "програмерство" - не программер я ...).
  Сегодня опять пришлось "лбом пробивать"( в чем-то - "опять на старые грабли", да подзабыл ; в чем-то "почти мне не ведомое", но вроде становится чуть яснее ( по-капле иногда "отруби подсыпаются"). # последнее например про 'sakura-vs-xterm' )
  Скрин (частность-на-чем-опять-столкнулся ):

- скрипт (а есть различия если запускать "командами/строками-в-терминале"):   МПлеер в sakura проигрывает радио-плейлист с выводом в 'dialog'; хоткеи громкости и переключения элементов листа действуют.
( пробовал аналогию для 'mpv' - пока не-айс по хоткеям...)
« Последнее редактирование: 04 Февраль 2021, 18:11:46 от knn »
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн AZJIO

  • Модератор
  • Старожил
  • ****
  • Сообщений: 301
  • Репутация: +10/-0
  • Автор темы
Re: StopwatchTimer (PureBasic)
« Ответ #29 : 04 Февраль 2021, 17:49:49 »
посмотрел xdg-open и вывел мануал, он оказывается и ссылки может открывать в браузере по умолчанию, а я голову ломал, как получить браузер по умолчанию.

xdg-open запрашивает дефолную прогу ассоциированную с типом используя xdg-mime
Код
default=`xdg-mime query default "$filetype"`

тут я получаю имя программы geany.desktop
Код
xdg-mime query default `xdg-mime query filetype /home/user/Загрузки/Readme.txt`
« Последнее редактирование: 04 Февраль 2021, 18:34:07 от AZJIO »