Поиск:

Ответ в темуСоздание новой темы Создание опроса
> считывание из ini файла 
:(
    Опции темы
SABROG
Дата 11.12.2007, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 3
Всего: 91



Зачем тебе пихать что-то в memo в цикле, оно затираться будет в любом случае ?

Я говорю про кусок кода, где тебе нужно выводить строки. Я правильно понимаю структуру, в ListBox'e есть итемы, каждому итему назначена структура grp, каждая структура grp содержит какие-то данные, в том числе и многострочное info ? Видимо при клике на итем куда-то у тебя отображаются все эти данные из grp. Некое подобие базы данных ? Так вот я не вижу никаких припятствий в том, чтобы AnsiString заменить на указатели TStringList. А при выборе итема делать Memo->Assign(grp->moyStringList); 


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
artsb
Дата 11.12.2007, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



SABROG огромное тебе спасибо, ты натолкнул на мысль. Сделал проще:
Структуру не менял. Просто в обработчике клика по ListBox1 написал:
Код

Memo1->Lines->Delimiter='|';
Memo1->Lines->DelimitedText=grp[index].inf;

А при добавлении записи в вектор:
Код

gr temp;
temp.name=Edit2->Text;
temp.www=Edit1->Text;
Memo1->Lines->Delimiter='|';
temp.inf=Memo1->Lines->DelimitedText;
grp.push_back(temp);

В inf у меня всегда хранится DelimitedText. Всё сохраняется и считывается, т.е. всё круто. Ещё раз ОГРОМНОЕ тебе спасибо!

Но у меня маленький вопросик:
Если в Memo:
       ===========================
       привет
       как дела
       пока
       ===========================
то в inf:
       ===========================
       привет|"как дела"|пока
       ===========================
Так вот, если юзверь захочет в Memo нарисовать рожицу с использованием '|', могут быть проблемы. Можно ли вместо одного символа использовать несколько.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
SABROG
Дата 11.12.2007, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 3
Всего: 91



Нет, там тип char. Т.е. всего 1 байт отведен под эти цели. Но можно попробывать использовать непечатные символы, например 0x00-0x1F. Только не знаю запишется ли строка в .ini файл.

Еще есть сомнения насчет интерпретации разделителя внутри кавычек " ". Экспериментируй, сделай стресстест.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
artsb
Дата 11.12.2007, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Всё равно, БОЛЬШОЕ тебе спасибо.

Это сообщение отредактировал(а) artsb - 11.12.2007, 22:19


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
ama_kid
Дата 11.12.2007, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 10
Всего: 95



Народ, если честно - не понимаю, зачем так все сложно? Есть ведь функция StringReplace. Юзается примерно следующим образом:
При записи в ini-файл:
Код
fl->WriteString(IntToStr(i),"info",StringReplace(grp[i].inf.c_str(),"\r\n","||",TReplaceFlags() << rfReplaceAll));

Считывается, соответственно, с обратной заменой
Код
temp.inf=StringReplace(fl->ReadString(IntToStr(i),"info",""),"||","\r\n",TReplaceFlags() << rfReplaceAll));
Писал навскидку, где-то мог и накосячить, по мелочам отсылаю к отладке... В данном способе - можно в качестве разделителя строк использовать любой шаблон, какой взбредет в голову, хоть другую строку...


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
artsb
Дата 11.12.2007, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



ama_kid ты прав, спасибо попробую.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
SABROG
Дата 12.12.2007, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 3
Всего: 91



Цитата(artsb @ 11.12.2007,  23:33)
ama_kid ты прав, спасибо попробую.

Как по мне, так мой вариант все же компактней. И я проверил, если разделитель стоит внутри кавычек, то он не считается разделителем. Даже если пользователь напишет строку в кавычках, скажем цитирование, да еще и со смайликом:
"Ни дня без строчки кода :|"

То все обрабатывается нормально и точно также выведется без искажений. Внутренние кавычки не посчитаются за новую строку и смайлик не посчитается за разделитель.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
artsb
Дата 12.12.2007, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



SABROG кавычки ставятся только если есть пробелы в строке (обрати внимание).
Например:
-------------------------
Привет.
Как дела?
Пока.
-------------------------
будет записано как:
Привет.|"Как дела?"|Пока

А если так:
-------------------------
Привет.
Какдела?
Пока.
-------------------------
то будет записано как:
Привет.|Какдела?|Пока

Это сообщение отредактировал(а) artsb - 12.12.2007, 15:26


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
SABROG
Дата 13.12.2007, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 3
Всего: 91



Отсутствие кавычек никак не влияет на работу

user posted image

В общем, если символ разделителя или пробелы появляются в строке, то она экранируется кавычками.

Это сообщение отредактировал(а) SABROG - 13.12.2007, 14:30


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
artsb
Дата 13.12.2007, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Теперь всё норамально. Спасибо.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0528 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.