hovadur писал(а):Не надо гадать, UTF8 без BOM и точка. Если не так, то программа неверно будет отображать данные, и человек сам сконвертит как надо.
Вы либо тормоз, либо таким прикидываетесь. Есть файл, Вы не знаете в каком он формате, т.к. в его имени этого не сказано, ВОМ нет, как Вы и говорите. Как определите, что это файл UTF8? Как программа должна это сделать, например, программа iconv, чтобы не делать неправильных преобразований?
Я конечно понимаю, что любой анализ можно делать вручную, можно выкинуть комп и считать на счетах, можно для определения кодировки текстового файла использовать мозги человека. Но зачем тогда комп, если для рутинной операции нужен человек?
Добавлено спустя 19 минут 21 секунду:hovadur писал(а):Да, я согласен. А ты согласись, что "с8:=utf8[j]" правильная операция, если мы ищем обычный пробел.
Если мне задали задачу решить пример "сколько будет 2+2?", а я в ответе напишу "10-6=4", будет ли это верным ответом на поставленную задачу? Результаты же совпали.
Во-первых, Вы допустили смысловую ошибку, присвоив в переменную с типом UTF8String из другой строки UTF8String символ (AnsiChar), тем самым введя в заблуждение. С точки зрения кодировки UTF8 переменная с8 будет содержать непонятно что.
Во-вторых, с точки зрения самого тестирования, вместо того, чтобы символ (AnsiChar) сравнивать с кодом символа пробела, вы сделали присвоение символа ANSI в строку UTF8String, что требует лишнего времени. В итоге Вы получили искаженный результат в части быстродействия. Вы получили замедление в 33 раза, вместо того, чтобы получить замедление в 1,5 раза. В моем примере я получал в UTF8String (AnsiString) литерал в кодировке UTF8. В Вашем варианте Вы не получали литерала, и для чего тогда использовали строковый, а не символьный тип?
Добавлено спустя 13 минут 58 секунд:hovadur писал(а):Так никакой конвертации на самом деле не происходит. utf8 это и есть ansistring.
Опять ошибаетесь. Посмотрите на Length(utf8) и Length(ansi) в указанном примере.
Вышеуказанные уже систематические ошибки говорят, что Вы не только "пальцегнуты", но еще и банально не умеете программировать. Зато встревать в темы, в которых плаваете Вы мастер, тут у Вас не отнимешь дара. У меня возникло подоозрение, когда Вы настойчиво требовали примеров, вместо того, чтобы привести свой пример. Теперь понятно, Вы тогда просто не сумели написать свой пример, вот SeZuka - он смог за 5 минут. А Вы только языком можете. Все ясно.