Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 А какой Registry Value Types лучше использовать для многострочного текста?  [new]
Дмитрий77
Member

Откуда:
Сообщений: 4097
Например нужно сохранить в реестре такой текст-шаблон

Привет, %SenderName%

Мы получили ваш документ: %DocumentName%

Ваш E-mail адрес: %SenderEmail%
Время получения: %SubmissionTime%

Пока


Т.е. у меня
1) Текст
2) Много строк (перенос всегда vbCrlf)
3) Могут быть пустые строки
4) Используются %param% -это не переменные среды, а мои личные "переменные" для подстановки.

Я смотрю сюда:
Registry Value Types

REG_MULTI_SZ - вроде как убивает пустые строки, не годится
REG_EXPAND_SZ - возникнут проблемы c %...%
REG_SZ - но у меня ж много строк
REG_BINARY - не хотелось бы мудохаться

Хотя я подозреваю, что простейший вариант REG_SZ вполне прокатит.
Ведь vbCrlf ==\r\n это же не \0
ручная правка через regedit ведь не планируется, а положит и считает обратно наверно корректно с сохранением \r\n
Не?
6 окт 17, 14:41    [20848525]     Ответить | Цитировать Сообщить модератору
 Re: А какой Registry Value Types лучше использовать для многострочного текста?  [new]
Изопропил
Member

Откуда:
Сообщений: 30632
Дмитрий77,

Полагаешь удачное место?
Если так - в base64 храни, пара вызовов - в чём мудоханье?

Дмитрий77
ручная правка через regedit ведь не планируется,
6 окт 17, 14:49    [20848575]     Ответить | Цитировать Сообщить модератору
 Re: А какой Registry Value Types лучше использовать для многострочного текста?  [new]
Дмитрий77
Member

Откуда:
Сообщений: 4097
Изопропил,

А простое REG_SZ?
Через regedit хотелось бы видеть хотя б примерно что там есть.
6 окт 17, 15:07    [20848659]     Ответить | Цитировать Сообщить модератору
 Re: А какой Registry Value Types лучше использовать для многострочного текста?  [new]
Изопропил
Member

Откуда:
Сообщений: 30632
Дмитрий77,

хочешь видеть - замени при хранении на "\\r" "\\n"

и видеть, и редактировать сможешь
а затесавшиеся переводы строк - выбрасывать при чтении во избежание неоднозначности или заменять на одиночный пробел
Дмитрий77
Привет, %SenderName%\r\n\r\n
Мы получили ваш документ: %DocumentName%\r\n\r\nВаш E-mail адрес: %SenderEmail%\r\n
Время получения: %SubmissionTime%\r\n\r\n

Пока\r\n
6 окт 17, 17:17    [20849106]     Ответить | Цитировать Сообщить модератору
 Re: А какой Registry Value Types лучше использовать для многострочного текста?  [new]
Дмитрий77
Member

Откуда:
Сообщений: 4097
Изопропил
хочешь видеть - замени при хранении на "\\r" "\\n"

А почему бы и нет.
Я в ini-файле когда такое делаю (редко, но языковые настройки у меня в ini как раз),
заменяю вообще на \n без \r. Какая разница, это ж не C++ а просто моя "интерпретация".
Практическая разница между \r\n и \n (часто встречается в OpenSource readme.txt -изначально видимо Linux-происхождения) то что последнее в блокноте лепится в одну строку через квадратики, но в Wordpad например читабельно.
P.S. Ну вероятность что в реальном тексте будет реальное \r\n конечно меньше чем \n, но и последнее маловероятно. Ну, прыгнет строчка, и фиг с ней, юзер почешет репу и поставит пробел например.
6 окт 17, 17:44    [20849186]     Ответить | Цитировать Сообщить модератору
 Re: А какой Registry Value Types лучше использовать для многострочного текста?  [new]
Изопропил
Member

Откуда:
Сообщений: 30632
Дмитрий77
юзер почешет репу и поставит пробел например.

юзер же не в реестре правит?
при сохранении в реестр просто заменяй \r и \n на ascii представление и при чтении обратно.
6 окт 17, 19:17    [20849437]     Ответить | Цитировать Сообщить модератору
 Re: А какой Registry Value Types лучше использовать для многострочного текста?  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 2404
считаю, что хранить в реестре большие объёмы данных такого типа это плохая практика, используйте файлы. Файлы кустов реестра не резиновые.
6 окт 17, 20:48    [20849556]     Ответить | Цитировать Сообщить модератору
 Re: А какой Registry Value Types лучше использовать для многострочного текста?  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 142395
Дмитрий77,

"REG_MULTI_SZ - вроде как убивает пустые строки, не годится" - не убивает, годится. Пустая строка - 0x00
6 окт 17, 22:58    [20849927]     Ответить | Цитировать Сообщить модератору
 Re: А какой Registry Value Types лучше использовать для многострочного текста?  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 142395
Roman Mejtes
считаю, что хранить в реестре большие объёмы данных такого типа это плохая практика, используйте файлы. Файлы кустов реестра не резиновые.
.
Считаю что вообще что-то хранить в реестре - дурная практика, но Микрософт так хранит описание счетчиков

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009 Counter

У меня 14 728 строк
6 окт 17, 23:09    [20849940]     Ответить | Цитировать Сообщить модератору
 Re: А какой Registry Value Types лучше использовать для многострочного текста?  [new]
Дмитрий77
Member

Откуда:
Сообщений: 4097
Cat2
Roman Mejtes
считаю, что хранить в реестре большие объёмы данных такого типа это плохая практика, используйте файлы. Файлы кустов реестра не резиновые.
.
Считаю что вообще что-то хранить в реестре - дурная практика, но Микрософт так хранит описание счетчиков

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009 Counter

У меня 14 728 строк

В моем случае реестр вполне оправдан. Явно не 14000 строк, а м.б. 10-20 "кустов- правил" (но скорее на практике 2-3).
В основном там Dword(0/1), какое-то к-во коротких строк.
ini-файл (которым отдаю предпочтение для общих настроек) здесь неудобен
городить огород из "своих кучи файлов" - думаю не стоит
БД - для такой задачи слишком накладно (нет там "кучи данных").

Ограничился стандартным REG_SZ с тупой заменой \n<>vbCrlf туда сюда. Сойдет.
9 окт 17, 11:33    [20853891]     Ответить | Цитировать Сообщить модератору
 Re: А какой Registry Value Types лучше использовать для многострочного текста?  [new]
refreg
Member

Откуда: Саратов
Сообщений: 726
Дмитрий77
Cat2
пропущено...
.
Считаю что вообще что-то хранить в реестре - дурная практика, но Микрософт так хранит описание счетчиков

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009 Counter

У меня 14 728 строк

В моем случае реестр вполне оправдан. Явно не 14000 строк, а м.б. 10-20 "кустов- правил" (но скорее на практике 2-3).
В основном там Dword(0/1), какое-то к-во коротких строк.
ini-файл (которым отдаю предпочтение для общих настроек) здесь неудобен
городить огород из "своих кучи файлов" - думаю не стоит
БД - для такой задачи слишком накладно (нет там "кучи данных").

Ограничился стандартным REG_SZ с тупой заменой \n<>vbCrlf туда сюда. Сойдет.
Раз вопрос в ветке .NET, то самое оптимальное user config (почему противопоставляются ini-файлы, совсем непонятно)

Дмитрий77
REG_BINARY - не хотелось бы мудохаться
Ну, а если "ну очень хочется реестр", я бы выбрал для этой задачи именно REG_BINARY.
9 окт 17, 12:00    [20854004]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить