![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Pakshin A. S. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 21 Всего: 61 |
Функция AnsiQuotedStr() возвращает строку S, заключенную в смволы Quote. При этом каждый внутренний символ Quote, находящийся в строке, удваивается.
Было: asdf Взяли: s Получили: sassdfs Нафиг оно нуно? Кто пользовался и для чего? |
|||
|
||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 5 Всего: 7 |
мне так кажется что он не удваивается а разделяется, т.е. этим символом обрамляются части исходной строки разделенной им.
asdfsgfdfgh c s получим как бы sAs + sDFs + sDFDFGHs обрамлялка, мне так кажется |
|||
|
||||
| Петрович |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 25 Всего: 55 |
Ребята, ну вы даете
Ну если не умеете читать хелп, то хоть на примере пробуйте
Подумай, что будет результатом следующего вызова:
-------------------- Все знать невозможно, но хочется |
||||||
|
|||||||
| Pakshin A. S. |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 21 Всего: 61 |
Добавлено @ 08:54 Проще: та же строка... |
||||
|
|||||
| Петрович |
|
||||||||||||||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 25 Всего: 55 |
Не совсем та же. Это она выглядет похоже
На самом-то деле, ты в функцию передавал строку:
А в результате и правда получил:
Зачем? Да очень просто. Представь себе что тебе надо построить список строк разделенных запятой. Соответственно, в последситвии из этого надо будет извлекать отдельные строки. Кажется что просто. Но, только до тех пор пока в одной из строк не встретится сам символ запятой. Например имеем строки:
После преобразования получим:
После обратного преобразования получим:
А это, не совсем то что мы имели в начале. Способов избежать этого есть много. Один из наиболее распространенных это при формировании списка заключать в кавычки каждую строку. Тогда, при обратном преобразовании, все разделители (в данном случае ',') между кавычками не считать разделителями. Тогда получим:
После преобразования получим:
После обратного преобразования получим:
Казалось бы теперь все нормально. Но, это опять не так. А если в исходной строке встретится символ кавычка? Вот для борьбы с этим и используется алгоритм удваиания ограничивающего символа (QuotedChar). Тогда, при обратном преобразовании, если за QuotedChar следует опять QuotedChar, то второй удаляется, и считается что первый не был ограничивающим. Например было:
После преобразования получим:
После обратного преобразования получим:
Именно такой алгоритм используется например и в самом Delphi для записи строковых констант. Для обратного преобразования существует функция AnsiDequotedStr. А еще, например, есть у каждого tString свойство CommaText. Оно тоже работает по похожему алгоритму. Его можно например использовать для записи многострочного текста из tMemo в один параметр ini-файла. Ну вот вроде и все. А получилась целая лекция. -------------------- Все знать невозможно, но хочется |
||||||||||||||||||||||
|
|||||||||||||||||||||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 5 Всего: 7 |
Офигеть...
P.S. а и не читал хелп Добавлено @ 15:00 Ааа.... понял, да, действительно полезная штука. Сэнкс. |
|||
|
||||
![]()
|
| Правила форума "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. |