Побайтовая Проверка Имени Файла

  • Автор темы StarikStarik2705
  • Дата начала
S

StarikStarik2705

#1
Как правильно посчитать длину имени в байтах, чтобы определить ограничение?
почему LS LenB, LenBP для этого не покатят?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 570
263
#2
может потому, что это уже преобразованный стринг? :huh:
 
S

StarikStarik2705

#3
может потому, что это уже преобразованный стринг? :huh:
выглядит это примерно так

' Выбор
x1 = s.GetEnvironmentString ("LastOpenedFolder")

Let tmp = ws.OpenFileDialog(True, "Добавление файла", "", x1)


If Not Isempty(tmp) Then

' Запоминаем, из какой папки последний раз брали документ
Call s.SetEnvironmentVar ("LastOpenedFolder", Strleftback (tmp(0), "\"))
If dlg.GetItemValue("FileNames")(0) = "" Then
GetEnvironmentString возращает строку, вопрос в том как мне побитово подсчитать в зависимости от языка какое количество байтов в слове ну и ограничить на нужное
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 570
263
#4
непонятен смысл вашего ограничения/подсчёта
и второе - языки, окромя основанного на англицком алфавите... http://ru.wikipedia.org/wiki/UTF-8
ну вощем - для русского - кажный символ - 2-байта

Добавлено: НО при считывании имени в нотусню произойдёт конвертация в кодировку системы (в русских виндях - 1251)
а потому посчитать, выше-означенным способом, может оказаться проблематичным :huh:

Добавлено: и напомню..., ограничение имени (пути) в виндях - 260 байт
http://msdn.microsoft.com/en-us/library/aa...29.aspx#maxpath
по факту - несчастные пользователи виндей редко подозревают от таком подвохе со стороны МС-а и называют файло по русски (а нормальных способов каталогизации инфы им не предложили) и получают по мордасам винАПямИ

Добавлено: и тамже вокэраунд:
To specify an extended-length path, use the "\\?\" prefix. For example, "\\?\D:\very long path".
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 570
263
#5
здесь табличка получше (там видно в каких диапазонах - скока байт)