purebasic.info
http://purebasic.info/phpBB3ex/

пишу SaveFolders, тема для критики и оптимизации
http://purebasic.info/phpBB3ex/viewtopic.php?f=1&t=4879
Страница 1 из 3

Автор:  AZJIO [ Чт май 24, 2018 7:53 pm ]
Заголовок сообщения:  пишу SaveFolders, тема для критики и оптимизации

Собственно исходник на pastebin.com

1. Добавил создание ini для примера, чтобы не на пустом месте запуск
2. массив и индекс раздельные переменные, это не тот случай где нужна структура?

SaveFolders (PureBasic, Linux)

Вложения:
SaveFoldersLinux.zip [129.43 KiB]
Скачиваний: 1

Автор:  Пётр [ Чт май 24, 2018 10:43 pm ]
Заголовок сообщения:  Re: пишу SaveFolders, тема для критики и оптимизации

AZJIO писал(а):
массив и индекс раздельные переменные, это не тот случай где нужна структура?
Это индекс не только массива, но и меню.
В программе в меню и в массиве хранится одинаковый текст и можно вместо массива читать его из меню функцией GetMenuItemText.

Автор:  balex1978 [ Пт май 25, 2018 10:49 am ]
Заголовок сообщения:  Re: пишу SaveFolders, тема для критики и оптимизации

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

Автор:  AZJIO [ Пт май 25, 2018 12:24 pm ]
Заголовок сообщения:  Re: пишу SaveFolders, тема для критики и оптимизации

balex1978
что ты не довольный (внешними факторами)? У меня мало времени, сейчас ищу способ программировать на телефоне, когда выдаётся время на работе. Чтобы повторить то, что у меня было в AutoIt3 мне надо все функции, которых поведение я знал от "а" до "я" тестировать заново. Я один выходной только думал использовать мне List, Map или Array (и придумывать формулировку, как бы я дал им различие по функциональности).

Справка я бы сказал общий текст, для AutoIt3 я 4 года потратил, чтобы привести её к понятному описанию,
посмотри описание массивов с примерами для AutoIt3, а в PureBasic в массивах 3 функции, в которых даже нет примера многомерного массива. Мне нужен многомерный, чтобы создать колонку для сокрашённого вывода пути в меню. А сокращал я рег.выром с обратными ссылками "\1", использовать ли мне пример который мне давали ранее для их поддержки или попробовать строковыми в чём большое сомнение.
Далее получение списка текущих каталогов, я сейчас в версии AutoIt3 попробовал просто указать другой индекс адресной строки 3 всесто 2 в предыдущих версиях Windows, теперь надо думать как получить из окон проводника текст адресной строки. Тут же нет функций обработки внешних окон, а в AutoIt3 готовые обёртки WinApi. то есть мне сейчас разгадать аналог построенный на WinApi или использовать/выковыривать PureAutoIt.pbi (не 1 сек задача)

balex1978 писал(а):
И чего ты тут хоч оптимизировать, скорость

я пока не знаю, исходник открытый, я знаю, что когда на форуме AutoIt3 выкладывают исходник, я всегда предлагал оптимизацию, это была и зарядка для моего мозга, и получить спасибы, и дать возможнсть тем кто пишет пока ещё "криво" сразу перейти к решению "прямо".
Например kvitaliy предложил вариант, где меню строится при нажатии иконки. Мне кажется это нормально если в меню 2 пункта или меню вычисляется здесь и сейчас для текущих данных, а мне строить каждый раз заново пол-сотни элементов и при этом не понятно куда деваются старые на тех же индексах - утечка памяти(?) или внутренний движок списков их уничтожает перед созданием нового с тем же индексом.

Автор:  Пётр [ Пт май 25, 2018 12:59 pm ]
Заголовок сообщения:  Re: пишу SaveFolders, тема для критики и оптимизации

AZJIO писал(а):
а в PureBasic в массивах 3 функции, в которых даже нет примера многомерного массива.
https://www.purebasic.com/documentation ... ysize.html
Код:
1
2
Dim MultiArray.l(10, 20, 30)
Debug ArraySize(MultiArray(), 2) ; will print '20'

Разве не многометрый массив?
На самом деле функций гораздо больше. Например есть еще функции сортировки https://www.purebasic.com/documentation/sort/index.html

AZJIO писал(а):
Мне нужен многомерный, чтобы создать колонку для сокрашённого вывода пути в меню.
Может нужен массив или список структур?

Автор:  AZJIO [ Пт май 25, 2018 1:17 pm ]
Заголовок сообщения:  Re: пишу SaveFolders, тема для критики и оптимизации

Пётр писал(а):
Разве не многометрый массив?
похож на массив в массиве, то есть индекс массива вытаскивает не элемент, а другой массив.

Пётр писал(а):
Может нужен массив или список структур?
В худшем случае я бы сделал 2 массива, их порядок бы не нарушался, разница только в 2-х переменных вместо одной.

Пётр писал(а):
На самом деле функций гораздо больше. Например есть еще функции сортировки https://www.purebasic.com/documentation/sort/index.html
Да, я видел, кроме этого ключевые слова Dim и ReDim. В AutoIt3, тоже в принципе остальные функции являются производными написанными на самом же языке AutoIt3, но примеров уж можно было бы в справку побольше. Просто примеры и текст даже не содержат упоминание ReDim в разделе Array, что было бы уместно, найдя описание массива как то быстро перейти к его функциям. Ну кому то это очевидно и не стоит упоминания. Есть Dim в котором надо прокручивать долго текст к ReDim (предварительно зная что он там есть)

Автор:  Пётр [ Пт май 25, 2018 3:09 pm ]
Заголовок сообщения:  Re: пишу SaveFolders, тема для критики и оптимизации

AZJIO писал(а):
похож на массив в массиве
Как тогда должен выглядеть многомерный массив?

Автор:  balex1978 [ Пт май 25, 2018 6:33 pm ]
Заголовок сообщения:  Re: пишу SaveFolders, тема для критики и оптимизации

Цитата:
что ты не довольный (внешними факторами)?

несовсем и даже невточку, всем я доволен. Скорее я спросил чем тебе ненравится твоя прога, что ты выставляеш ее для критики? Хотя это уже детали и неимеет значения.

Автор:  AZJIO [ Сб май 26, 2018 7:21 am ]
Заголовок сообщения:  Re: пишу SaveFolders, тема для критики и оптимизации

Пётр писал(а):
Как тогда должен выглядеть многомерный массив?

Я не сразу понял, да, трёхмерный и размер второй размерности.

Автор:  balex1978 [ Вт май 29, 2018 2:27 pm ]
Заголовок сообщения:  Re: пишу SaveFolders, тема для критики и оптимизации

Петр ему надо попроще.
Dim MultiArray.l(10);одномерный масив на 11 (масив всегда с ноля, всего 11 элементов)
;Local $Array[10] ; объявление массива

Dim MultiArray.l(10, 20);двухмерный на 11*21=231 элементов
;Local $Array[10][20]

Dim MultiArray.l(10, 20, 30);трехмерный 11*21*31=7161 элементов
;Local $Array[10][20][30]

Dim MultiArray.l(1, 3, 4, 7);4-х мерный 2*4*5*8=320 элементов
;Local $Array[1][3][4][7] ; четырёхмерный массив

;надеюсь как создать этот ты уже сам понял
;Local $Array[3][2][5][1][7] ; пятимерный массив

Автор:  AZJIO [ Чт ноя 01, 2018 7:30 am ]
Заголовок сообщения:  Re: пишу SaveFolders, тема для критики и оптимизации

Тот случай когда нужна это прога сейчас на Linux, но проблема в
Код:
1
2
3
4
 
ExtractIconEx_("shell32.dll",4,0,@hIco,1) ; извлекаем иконку из shell32.dll
AddSysTrayIcon(1, WindowID(0),hIco)               ; иконка в трее
SysTrayIconToolTip(1, "SaveFolders")      ; Название проги в подсказке


Я пока закомментировал строки, но либо мне нужно по горячей клавише выдать меню, либо сделать иконку в трее. AddSysTrayIcon поддерживает все ОС, проблема только получить hIco иной функций. Смотрю в сторону
Код:
1
2
3
4
5
DataSection
        folder_ico:
        IncludeBinary "folder.png"
        folder_icoend:
EndDataSection


Ранее я использовал типа
Код:
1
CatchImage(0, ?folder_ico)

как связать это чтобы работало?


Нашёл
http://www.purebasic.info/phpBB3ex/view ... 456#p23456

Автор:  AZJIO [ Чт ноя 01, 2018 10:47 am ]
Заголовок сообщения:  Re: пишу SaveFolders, тема для критики и оптимизации

SaveFolders (PureBasic, Linux)
Адаптацию под Linux сделал.
Осталось:
1. Иконку на панели задач как то из ресурсов вытянуть чтобы она под размер подстраивалась, ну а в общем работает.
2. Почему файл не помечается как исполняемый?

Автор:  Пётр [ Чт ноя 01, 2018 1:17 pm ]
Заголовок сообщения:  Re: пишу SaveFolders, тема для критики и оптимизации

AZJIO писал(а):
проблема только получить hIco
Linux не поддерживает формат ico.

Автор:  AZJIO [ Сб ноя 03, 2018 5:06 am ]
Заголовок сообщения:  Re: пишу SaveFolders, тема для критики и оптимизации

как и в прошлый раз я не смог понять разницу между #PB_Unicode и #PB_UTF8.
У меня для ini стоит #PB_UTF8, но когда программа генерирует ini то при открытии не видит русские буквы, у нас OpenPreferences как бы не говорит в какой кодировке открывает и нет флага, то есть тестим методом тыка. Перекодирую UTF-8 в UTF-8 с BOM, теперь открывается, но мы же не будем пользователю говорить что после первого запуска перекодируй ini-файл. Пробую с флагами #PB_Unicode и #PB_UTF8, открываю в Geany он для обоих показывает UTF-16LE в строке состояния, при чём файлы явно не одинаковые, при #PB_UTF8 он хотя бы латинский буквы видит, при #PB_Unicode не показывает имена (может неотображаемые символы?), а как будто всё в одной секции куча пустышек.
В общем хочется получить файл с UTF-8 с BOM.

Автор:  LinXP [ Сб ноя 03, 2018 9:50 am ]
Заголовок сообщения:  Re: пишу SaveFolders, тема для критики и оптимизации

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Procedure Create_ini(ini$)
  Protected hfile
  hfile = OpenFile(#PB_Any, ini$)
  If hfile
    WriteStringFormat(hfile, #PB_UTF8)
    WriteStringN(hfile, "[Windows]")
    WriteStringN(hfile, GetHomeDirectory())
    WriteStringN(hfile, GetEnvironmentVariable("WINDIR") + "\Web\Wallpaper")    
    WriteStringN(hfile, GetEnvironmentVariable("SYSTEMROOT"))
    WriteStringN(hfile, GetEnvironmentVariable("WINDIR") )
    WriteStringN(hfile, GetEnvironmentVariable("USERPROFILE"))
    WriteStringN(hfile, "")
    WriteStringN(hfile, "[PureBasic]")
    WriteStringN(hfile, GetCurrentDirectory())
    WriteStringN(hfile, #PB_Compiler_Home)
    CloseFile(hfile)
    ProcedureReturn #True
  Else
    ProcedureReturn #False  
  EndIf
EndProcedure


Страница 1 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/