|
|
|
Lazarus
|
|||
|---|---|---|---|
|
#18+
alekcvpСуррогатные пары есть даже в AnsiString, насколько я помню Мультибайт это не суррогатные пары. alekcvpЧто не так? Вот есть у тебя дельфийская строка - у неё длина в символах равна длине в байтах/размер символа Вот это и не так. Суррогатная пара требует два кодпоинта, и преобразована она будет в один. Все кодпоинты за пределами BMP будут кодироваться суррогатными парами. Но это всё равно проще, чем чекать все последовательности UTF-8. UTF-8 не для обработки строк - строго для хранения и передачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 13:20 |
|
||
|
Lazarus
|
|||
|---|---|---|---|
|
#18+
Да уж работать с utf8 это почти также геморно как работать с base64. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 13:40 |
|
||
|
Lazarus
|
|||
|---|---|---|---|
|
#18+
Вот сколько кодю, ни разу не понадобилось узнавать, что же за символ по конкретному индексу в строке... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 14:33 |
|
||
|
Lazarus
|
|||
|---|---|---|---|
|
#18+
Василий 2Вот сколько кодю, ни разу не понадобилось узнавать, что же за символ по конкретному индексу в строке... Что, ни разу не использовали конструкцию s[x] := ... ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 14:55 |
|
||
|
Lazarus
|
|||
|---|---|---|---|
|
#18+
alekcvpА как определить длину строки UTF8 с латиницей и кириллицей вперемешку? я не совсем тебя понял, тебе что надо-то в конце концов? Длину "дельфийской" строки в Лазаре? Юзай UTF8Length из LazUTF8. Если тебе надо посимвольно, то ищешь посредством UTF8Pos(первый аргумент может быть и строкой, и Char'ом). Если побайтно, то загоняй свою строку в RawByteString и ползай по ней, куда угодно. Там все аналогично дельфям :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 15:06 |
|
||
|
Lazarus
|
|||
|---|---|---|---|
|
#18+
Василий 2Вот сколько кодю, ни разу не понадобилось узнавать, что же за символ по конкретному индексу в строке... ну, не скажи. Неужели ни разу строку не парсил? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 15:07 |
|
||
|
Lazarus
|
|||
|---|---|---|---|
|
#18+
ДокДлину "дельфийской" строки в Лазаре? Юзай UTF8Length из LazUTF8. Ну вот и сравни скорость этой функции с дельфийской Length(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 15:22 |
|
||
|
Lazarus
|
|||
|---|---|---|---|
|
#18+
15.10.2019 15:22, alekcvp пишет: > Ну вот и сравни скорость этой функции с дельфийской Length(). ога. а тёплое сравни с мягким. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 15:49 |
|
||
|
Lazarus
|
|||
|---|---|---|---|
|
#18+
alekcvpНу вот и сравни скорость этой функции с дельфийской Length(). так тебе шашечки или ехать? © Для нафига тебе посимвольный доступ? Хочешь быстро, заполняй строкой массив байт и вперде. Будет работать гарантированно на любой кодовой странице. Правда, возни больше :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 16:58 |
|
||
|
Lazarus
|
|||
|---|---|---|---|
|
#18+
Василий 2, повезло. у нас - то сплошь и рядом. utf8 в лазаре знатно добавил работы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 17:21 |
|
||
|
Lazarus
|
|||
|---|---|---|---|
|
#18+
Доктак тебе шашечки или ехать? © Если продолжить аналогии то Utf18 - такси с шашечками, а Utf8 - велосипед "чтобы ехать". У лучше на такси. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 17:33 |
|
||
|
Lazarus
|
|||
|---|---|---|---|
|
#18+
makhaonutf8 в лазаре знатно добавил работы Что вам мешает использовать UnicodeString? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 17:54 |
|
||
|
Lazarus
|
|||
|---|---|---|---|
|
#18+
alekcvpЧто, ни разу не использовали конструкцию s[x] := ... ? Обычно этот х не берется с потолка, а как-то вычисляется. соответственно без разницы, какой будет этот х, и какой вообще формат строк - utf8, ansi или utf16 - итоговый код одинаков для всего. Докну, не скажи. Неужели ни разу строку не парсил? :) Парсил конечно, но как-то так получалось, что все служебные символы были ANSI и проверялись в цикле, а все остальные заглатывались скопом. Типа такого (полу-псевдокод) Код: pascal 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 18:33 |
|
||
|
Lazarus
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexeymakhaonutf8 в лазаре знатно добавил работы Что вам мешает использовать UnicodeString? По-хорошему, тогда уж UCS4String. Иначе один фиг суррогатные пары могут добавить веселья ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 18:35 |
|
||
|
Lazarus
|
|||
|---|---|---|---|
|
#18+
makhaonutf8 в лазаре знатно добавил работы Дим, если не секрет, где конкретно и на какой платформе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 18:40 |
|
||
|
Lazarus
|
|||
|---|---|---|---|
|
#18+
Василий 2По-хорошему, тогда уж UCS4String. Иначе один фиг суррогатные пары могут добавить веселья UCS4 для всего это слишком жирно, но в определённых сценариях вполне себе вариант. А с суррогатами в UTF-16 всё довольно просто, буквально пара условий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 18:46 |
|
||
|
Lazarus
|
|||
|---|---|---|---|
|
#18+
Василий 2Типа такого (полу-псевдокод) Без UTF8...-аналогов сомневаюсь. На никсах прокатит, а на винде - фиг, если только строка не явно 1-байтовая. Попробуй сам, "погуляй" отладчиком в виндовом Лазаре по String'у - он будет 2х-байтовым :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 18:48 |
|
||
|
Lazarus
|
|||
|---|---|---|---|
|
#18+
На самом деле, по-хорошему, для переносимого кода работа с char должна быть строго ограничена ansi диапазоном. Все остальные случаи должны использовать функции типа GetCharAt или GetNextChar, возвращающие UCS4, либо строки. Например - делаем мы функцию Split с разделителем-символом на Delphi со строками в utf16. Всё было хорошо, пока кто-то не захотел расщепить строку по символу 1F708 ALCHEMICAL SYMBOL FOR AQUA VITAE. И всё, облом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 18:49 |
|
||
|
Lazarus
|
|||
|---|---|---|---|
|
#18+
ДокВасилий 2Типа такого (полу-псевдокод) Без UTF8...-аналогов сомневаюсь. На никсах прокатит, а на винде - фиг, если только строка не явно 1-байтовая. Попробуй сам, "погуляй" отладчиком в виндовом Лазаре по String'у - он будет 2х-байтовым :) В смысле, в чем сомневаешься? Код универсальный под любую кодировку строк. Про отладчик в Лазаре не напоминай... это боль и страдания ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 18:53 |
|
||
|
Lazarus
|
|||
|---|---|---|---|
|
#18+
Василий 2Код универсальный под любую кодировку строк. в этом. Попробуй сделать под виндой Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. Потом поделишься впечатлениями :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 19:10 |
|
||
|
Lazarus
|
|||
|---|---|---|---|
|
#18+
Василий 2Например - делаем мы функцию Split с разделителем-символом на Delphi со строками в utf16. Всё было хорошо, пока кто-то не захотел расщепить строку по символу 1F708 ALCHEMICAL SYMBOL FOR AQUA VITAE. И всё, облом. Это вопрос элементарного дизайна: Код: pascal 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 20:14 |
|
||
|
Lazarus
|
|||
|---|---|---|---|
|
#18+
Док, на линукске. у нас довольно много обработки строк посимвольно. кровушки попило, но уже вылизали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 21:54 |
|
||
|
Lazarus
|
|||
|---|---|---|---|
|
#18+
Василий 2Обычно этот х не берется с потолка, а как-то вычисляется. соответственно без разницы, какой будет этот х, и какой вообще формат строк - utf8, ansi или utf16 - итоговый код одинаков для всего. Код в программе - да, а вот под капотом: UTF16 - пишем новый символ на место старого, UTF8 - при замене латинского символа на кириллицу, например, там будет куча операций, потому что под кириллицу надо больше места, чем под латиницу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 22:32 |
|
||
|
Lazarus
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. Изображения на диске не прозрачные а черные. Что я делаю не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 22:46 |
|
||
|
Lazarus
|
|||
|---|---|---|---|
|
#18+
И еще вопрос. Можно ли как нибудь настроить удаленную отладку на headless линуксе из винды? Желательно без ручного запихивания каждый раз запускаемого файла и кучи телодвижений. Хотелось бы как в дельфях с PAServer-ом. Ну или "хотя бы как". Что куда ставить и жать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2019, 22:49 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39876721&tid=2037658]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
163ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
88ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 542ms |

| 0 / 0 |
