![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 14 Всего: 48 |
Посоветуйте каким образом в TIniFile лучше хранить многострочный текст. Надо сохранить\прочитать строковое значение такого вида:
Хранить надо именно в ini-файлах, т.к. сторонние утилиты для, которых нужен этот файл требуют ini и ни чего другого. -------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
Pakshin A. S. |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 21 Всего: 61 |
Легче не придумать!!!
Заменяем ^M^J на какой-нить символ, например | Запихиваем это в файл... При чтении заменяем | на ^M^J Запихиваем это в мемо.... |
|||
|
||||
stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 14 Всего: 48 |
Парадоксально, но именно так и пробовал, пишется нормально, а вот читается только до первой трубы (|), а дальше нет, пробовал на Windows XP Pro Eng SP2. Плюс к этому, в документации написано, что символы с кодами меньше 32 (пробел) могут не читаться.
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
|
|||
|
||||
Pakshin A. S. |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 21 Всего: 61 |
Вот код на всякий случай:
Добавлено @ 08:48
Все работает... на достаточно больших мемо... Это сообщение отредактировал(а) Pakshin A. S. - 16.6.2005, 08:48 |
||||
|
|||||
stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 14 Всего: 48 |
Pakshin A. S., не работает в общем этот метод, попробую другие разделители...
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
Pakshin A. S. |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 21 Всего: 61 |
У меня ХР Prof работает с 1000 строк по четыре буквы в каждой...
Не наю... Может не то что-то написал? |
|||
|
||||
stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 14 Всего: 48 |
Может можно как-нибудь без разделителей обойтись? Хранить, например, каждую строку в отдельном значении... т.е. что-то вроде:
или как-то проще можно? -------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
Pakshin A. S. |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 21 Всего: 61 |
НАФИГ? Проверь корректность кода... У меня свободно работает прога с цифрами в каждой строчке от 1 до 64000... Долго правда, но все-таки работает!
|
|||
|
||||
stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 14 Всего: 48 |
А все, понял в чем беда, при записи ^J оставался. Спасибо за то, что убедил, что метод рабочий, а то я уже начал всякие извращения выдумывать.
![]() -------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
Pakshin A. S. |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 21 Всего: 61 |
Т. е.? Что в итоге написал?
Добавлено @ 09:13 Кстати, а ини файл то не безразмерный! Я бы все-таки в отдельном текстовом хранил... Или вообще для всего этого создал бы базу данных и работал с нею, т. к. по-моему это быстрее... Добавлено @ 09:16 Вариант разонравился... ![]() ![]() ![]() |
|||
|
||||
Pakshin A. S. |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 21 Всего: 61 |
О! Вот это больше нравится...
Только RichEdit нуна спрятать или заменить его на что-нить создаваемое тут же... Добавлено @ 09:29 Вместо NextIdent можно какой-нить постфикс использовать и дописывать его к преобразованному тексту... |
|||
|
||||
stab |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 14 Всего: 48 |
Как у тебя, у меня замена была по ^M только.
Я бы тоже, но нужно, как говориться, backward compatibility обеспечить. -------------------- 6, 6, 6 - the number of the beast. |
||||
|
|||||
Pakshin A. S. |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 21 Всего: 61 |
А по-русски? |
|||
|
||||
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Pakshin A. S. Видимо, "обратная совместимость"
![]() Добавлено @ 12:24 Имхо, плохая идея хранить такие массивы текста в Ini... Обязательно должен быть другой выход. Почему, к примеру, не хранить пути в INI к реальным файлам с данными? -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
Pakshin A. S. |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 21 Всего: 61 |
Все-равно ен понял, что требуется... ![]() |
|||
|
||||
EKoshelev |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 509 Регистрация: 1.9.2004 Репутация: нет Всего: нет |
Ребята, я может тормоз, но чем не подходит то, что dsergey предложил??????
-------------------- Вежливым и адекватным предлагаю общаться на "ты". |
|||
|
||||
stab |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 14 Всего: 48 |
Требуется хранить многострочный текст в одном из значений в ini файле, есть уже готовый софт (не мой), который эти ini файлы читает и переделывать его ни кто не собирется, следовательно так просто формат\способ хранения данных изменить нельзя, т.е. нужна обратная совместимость с этим софтом. Что бы хотя бы эти файлы коректно (без эксепшенов) читались без модификации софта, не важно что данные слегка кривоватые будут, надо что бы просто читалось.
Там тексты маленькие, максимум строчек 10, так что все ок.
Пардон, но мне кажется, что его код к ini файлам имеет отношение только одним местом -- расширением, если его поменять на bmp, то можно будет сказать, что многострочный текст можно хранить и в графических файлах ![]() -------------------- 6, 6, 6 - the number of the beast. |
||||||
|
|||||||
Dynamic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 372 Регистрация: 5.7.2004 Где: Салехард Репутация: 12 Всего: 15 |
имелось ввиду, что твои ini-файлы именно как INI рассматривает, возможно та чужая прога, а что тебе мешает рассматривать их как обычные текстовые файлы и работать с ними обычным способом (см. совет dsergey)?? Лучше покажи один файлик и что с ним надо сотворить. -------------------- Было бы о чем молчать, а уж что сказать – всегда найдется... |
|||
|
||||
s-mike |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 16.1.2005 Где: Киев Репутация: 9 Всего: 16 |
Многострочный текст лучше всего хранить в XML.
|
|||
|
||||
Pakshin A. S. |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 21 Всего: 61 |
Вот ини файл, в котором текс от двух компонентов: Memo1=asdfasdfasdfkadhfkajdghfkjagfsdf... Memo2=asdfasjdgfasdhfgkasjgfkasjfhgkasjfhgk... Причем В тексте обоих компонентов может встречаться и Enter, который выводит в файле вот это: Memo1=asdfasdfasdfkadhfkajdghfkjagfsdf... asdfasdfasdfasdf... Memo2=asdfasjdgfasdhfgkasjgfkasjfhgkasjfhgk... Т. е. нарушается структура файла... ![]() |
|||
|
||||
EKoshelev |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 509 Регистрация: 1.9.2004 Репутация: нет Всего: нет |
Pakshin A. S., это единственное, что мешает рассматривать файл как текстовый. Или есть ещё причины???
-------------------- Вежливым и адекватным предлагаю общаться на "ты". |
|||
|
||||
Pakshin A. S. |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 21 Всего: 61 |
Впринцепе да...
|
|||
|
||||
Quadr0 |
|
|||
Unregistered |
...
Это сообщение отредактировал(а) Quadr0 - 14.7.2011, 21:25 |
|||
|
||||
Dynamic |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 372 Регистрация: 5.7.2004 Где: Салехард Репутация: 12 Всего: 15 |
Ну сохраняй типа такого:
-------------------- Было бы о чем молчать, а уж что сказать – всегда найдется... |
||||
|
|||||
Pakshin A. S. |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 21 Всего: 61 |
Т.к. наш ини файл не резиновый, то последний метод занимать будет больше места... Вообще по-нормальному соответственно нужен отдельный файл для инфы!
|
|||
|
||||
Dynamic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 372 Регистрация: 5.7.2004 Где: Салехард Репутация: 12 Всего: 15 |
Автору топика, кажись, эта дискуссия уже неинтересна....
-------------------- Было бы о чем молчать, а уж что сказать – всегда найдется... |
|||
|
||||
Pakshin A. S. |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 21 Всего: 61 |
Наверное... ведь решение как я понимаю он получил...
Добавлено @ 12:20 Блин... не прочитал один пост: ![]()
И ЭТИМ РЕАЛЬНО ВСЕ СКАЗАНО! |
|||
|
||||
Lence |
|
||||
Чухарадземадзупэ ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 9.5.2006 Где: Ташкент Репутация: 3 Всего: 3 |
у меня такая проблема - в ini файл сохраняется даные из стороннего компонента, сохраняются цифры, компонет делит введенное число на сотни, например если в обычном Edit написать 1111111 - то так и будет написано, в этом компоненте остается 1 111 111 - и таким же образом сохраняется в ини файл.
Я попробовал проверять на пробелы и заменять их. Не помогло. Сам ини выглядит так :
я посмотрел данный файл HEX редактором и вот что в нем.
в HEX символ пробела 20, а здесь почемуто A0 между цифрами 1[A0]111[A0]111 - вот такая фигня по идеии ![]() кто знает как мне читать данный символ и заменять его ??? и что это вообще за символ ? --------------------
Шуруп, забитый молотком, крепче сидит чем гвоздь, закрученный отверткой .... |
||||
|
|||||
Lence |
|
|||
Чухарадземадзупэ ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 9.5.2006 Где: Ташкент Репутация: 3 Всего: 3 |
решил проблему добавив chr($A0)
--------------------
Шуруп, забитый молотком, крепче сидит чем гвоздь, закрученный отверткой .... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |