Здравствуйте,
> недавно поднимался вопрос чтения информации об размере объектов в
> плавающем режиме. наряду с предложенным вариантом (с символа) существует
> второй, использующий функцию StringSegment. Такой подход позволяет
> читать информацию, представленную и в килобайтах, а так же выработать
> общий подход и к чтению найденных файлов (имена могут содержать пробелы
> так и /) в окне поиска.
> ВВодиться общая функция такого содержания:
> Int Function GetIndexstring (string s, string chr)
[...текст функции поскипан...]
> EndFunction
> Она сообщает число вхождений разделителей в указанную строку. И тогда
Интересное решение, но для большей универсализации я бы предложил Вам
немного подправить данную функцию. Дело в том, что в челюстях старше седьмой
версии появилась такая функция (цитата из FSDN):
Function: StringSegmentCount
Description
Retrieves a count of segments in a string.
Returns
Type: Int
Description: The count of segments in the string
Parameters
Param 1:
Type: String
Description: The string that is delimited by some character or characters.
Include: Required
Param 2:
Type: String
Description: The delimiter or set of delimiters. This string must be
enclosed in quotation marks.
Include: Required
Как Вы понимаете возвращаемые значения Вашей функцией и вышеописанной
штатной различаются ровно на единичку. Реализовав эту функцию для более
ранних версий, Вы получите более универсальный вариант. В случае такого
изменения Вашей функции потребуются небольшие переделки скриптов, но с
другой стороны появится возможность мгновенной переделки и ускорения работы
скрипта при переходе к челюстям седьмой версии путём простого удаления
текста Вашей функции из текста скрипта и перехода к более быстрой встроенной
функции.
В дополнении к этому вместо функции SayString, которая является уже только
лишь отладочной, я предлагаю использовать либо Say, либо SayMessage.
> Для упрощения настройки скринридера (работа с выделенным курсором) при
> установке оверпаков можно включить функцию AutoStarrEvent () примерно
> такого содержания:
> var
[...код поскипан...]
> IniWriteInteger ("Colors", "InverseCursor", 1, WcmdIni);инверсный курсор
> и т.д.
> параметр WcmdIni указывает путь к файлу, а он различен для версий 6.54 и
Для универсализации вместо строки
> let WcmdIni="C:\\Program Files\\Total Commander\\Wincmd.ini"
я бы написал примерно так:
let WcmdIni=GetRegistryEntryString(1, "Software\\Ghisler\\Total Commander",
"InstallDir")
let Temp = GetRegistryEntryString(1, "Software\\Ghisler\\Total Commander",
"IniFileName")
If Temp == "" then
let WcmdIni = WcmdIni + "Wincmd.ini"
else
let WcmdIni + Temp
EndIf
Какие-либо изменения потребуются лишь только при спуске ниже до Windows
Commander, поскольку там другие ключи в реестре. Хотя потенциально можно
обыграть и эту ситуацию использовав при анализе ключей знания имени
приложения.
> Я не претендую на оригинальность и могу предоставить полный текст *.jss
> для доработок и дополнений.
Выкладывайте их куда-нибудь. Доработаем. Я думаю в рассылке найдётся немало
желающих.
До свидания.
***
Это сообщение No3895
было разослано для 306 участников дискуссионного листа
[JFWRus] Re: Total Commander