|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.10.2013, 09:36 | #1 |
Пользователь
Регистрация: 03.03.2012
Сообщений: 33
|
StringReplace косяк Delphi XE3 кто знает что делать?
В Delphi XE3
если в StringReplace установить оба флага rfReplaceAll, rfIgnoreCase функция перестает понимать русские буквы и начинает глючить (заменяя "Русские буквы" на ????? или другие неправильные символы), хотя заменяемую часть на русском продолжает понимать. s2:=StringReplace(s1, 'Заменяемая часть', 'Русские буквы',[rfReplaceAll, rfIgnoreCase]) Было "АБВ" меняем на "яяя" получаем "yyy" Было "абв" меняем на "ююю" получаем "???" по отдельности s2:=StringReplace(s1, 'Заменяемая часть', 'Русские буквы',[rfReplaceAll]) s2:=StringReplace(s1, 'Заменяемая часть', 'Русские буквы',[rfIgnoreCase]) работают корректно
QuickSortStr04.rar работа с динамическими 1D,2Dмассивами строк
* быстрая сортировка по любому алфавиту, добавление, удаление элементов. * чтение, запись(файл<-->дин. массив) |
18.10.2013, 10:34 | #2 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,887
|
А исходная строка в какой кодировке? Это кому-нибудь известно?
|
18.10.2013, 11:16 | #3 |
Пользователь
Регистрация: 03.03.2012
Сообщений: 33
|
Какая разница в какой - все работает нормально пока я оба флага [rfReplaceAll, rfIgnoreCase] не ставлю.
По моему кодировка ANSI, с юникодом программа вообще неработает.
QuickSortStr04.rar работа с динамическими 1D,2Dмассивами строк
* быстрая сортировка по любому алфавиту, добавление, удаление элементов. * чтение, запись(файл<-->дин. массив) Последний раз редактировалось Suny-o; 18.10.2013 в 11:27. |
18.10.2013, 11:21 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
+1
а ещё, не исключено, что проблема напрямую связана с unicode... AnsiString использовать не пытались? попробуйте перевести вашу строку s1 в UpperCase, посмотрите на полученный результат. В зависимости от полученных результатов - и принимайте меры. Код:
|
18.10.2013, 11:41 | #5 |
Пользователь
Регистрация: 03.03.2012
Сообщений: 33
|
Код:
QuickSortStr04.rar работа с динамическими 1D,2Dмассивами строк
* быстрая сортировка по любому алфавиту, добавление, удаление элементов. * чтение, запись(файл<-->дин. массив) |
18.10.2013, 11:57 | #6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
В XE2 есть
System.AnsiStrings.StringReplace для AnsiString System.SysUtils.StringReplace для UnicodeString а еще System.WideStrUtils.WideStringRepla ce для WideString в XE3 не думаю что по другому. Какой StringReplace у вас?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
21.10.2013, 11:41 | #7 |
Пользователь
Регистрация: 03.03.2012
Сообщений: 33
|
Я написал аналог StringReplace - точную копию FRstr, сейчас это часть библиотеки
QuickSortStr 2.0 - посмотреть FRstr можно здесь Функция работает нормально - проверял на строках Memo4 Memo5 Но глюки остались те же, выяснилось что по какой то причине глючит Writeln(f2,s2) - отладчик до момента записи показывает в списке переменных нормальную строку с корректной заменой букв строки s2 без глюков и кракозябр а уже после записи в файл происходит что то не понятное. Можно предположить что и функция StringReplace работает корректно. Есть ли функция - аналог Writeln(f2,s2)? Пока мне не ясно что вообще происходит и где косяк - как я уже говорил если писать флаги для функции StringReplace по одиночке в файл записываются нормальные буквы тоже самое касается новой функции FRstr s2:=FRstr(s1, FromS1, ToS2,[rfReplaceAll]); s2:=FRstr(s1, FromS1, ToS2,[rfIgnoreCase]); В такой постановке все работает нормально, но совместите эти два флага и появляется - ошибка.
QuickSortStr04.rar работа с динамическими 1D,2Dмассивами строк
* быстрая сортировка по любому алфавиту, добавление, удаление элементов. * чтение, запись(файл<-->дин. массив) Последний раз редактировалось Suny-o; 21.10.2013 в 12:06. |
21.10.2013, 12:32 | #8 |
Пользователь
Регистрация: 03.03.2012
Сообщений: 33
|
Я уже написал функцию Чистилище для строки - я только выяснил что строковые переменные тут не причем с вероятностью 95%
Код:
QuickSortStr04.rar работа с динамическими 1D,2Dмассивами строк
* быстрая сортировка по любому алфавиту, добавление, удаление элементов. * чтение, запись(файл<-->дин. массив) |
20.12.2013, 04:29 | #9 |
Пользователь
Регистрация: 03.03.2012
Сообщений: 33
|
Я окончательно разобрался с этим вопросом - я поставил Delphi XE5 и там все работает нормально.
QuickSortStr04.rar работа с динамическими 1D,2Dмассивами строк
* быстрая сортировка по любому алфавиту, добавление, удаление элементов. * чтение, запись(файл<-->дин. массив) |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
тема-кубик рубика!может кто-то знает как делать? | сега21 | Помощь студентам | 1 | 20.05.2012 13:57 |
кто-нибудь знает каааак делать?? :( многочлен.динамический список(Delphi) | tralala | Помощь студентам | 0 | 09.05.2012 00:18 |
Кто что знает и кто скока получает? | Marsel737 | Свободное общение | 23 | 12.04.2011 10:16 |
No_name (кто что знает) | ToHuK13 | Общие вопросы C/C++ | 0 | 06.05.2010 22:13 |
Прошу помощи ! Люди отзовитесь пожалуйста кто знает что делать ! | Jenya1982 | JavaScript, Ajax | 2 | 29.08.2008 23:17 |