Не понятная проблем с лишним знаком вопроса. (решено)
Модератор: Модераторы
Не понятная проблем с лишним знаком вопроса. (решено)
Не знал куда корректней отписать проблему.
Есть сторонний софт, который писан на делфях. Он загружает тест из файла (текстового), сохраненного в настройках.
Есть мой управляющий софт (писан на всеми нами любимом), который заменяет родной загружаемый файл на мой и запускает софтину (которая на буржуйских/криворуких делфях). В некоторых моментах в управляемой софтине, в текстах, появляются символы "?" (знак вопроса). Все преобразования кодировок проведены, текст читаем, но этот-вот "?" я не могу нигде споймать. Нет никаких скрытых символов, нет никаких несоответствий кодировок, нет никаких непечатных символов ни в одном редакторе, но "?" есть... даже не знаю куда копать...
Есть сторонний софт, который писан на делфях. Он загружает тест из файла (текстового), сохраненного в настройках.
Есть мой управляющий софт (писан на всеми нами любимом), который заменяет родной загружаемый файл на мой и запускает софтину (которая на буржуйских/криворуких делфях). В некоторых моментах в управляемой софтине, в текстах, появляются символы "?" (знак вопроса). Все преобразования кодировок проведены, текст читаем, но этот-вот "?" я не могу нигде споймать. Нет никаких скрытых символов, нет никаких несоответствий кодировок, нет никаких непечатных символов ни в одном редакторе, но "?" есть... даже не знаю куда копать...
Последний раз редактировалось Deimos 30.03.2018 08:53:17, всего редактировалось 1 раз.
Deimos писал(а):но "?" есть
это не знак ?, это на самом деле половина буквы.
я такое иногда вижу. ищите некорректное обрезание текста / строки.
Например обрезаете строку строго на 33 символа и она иногда будет возвращать вопрос.
при склейке таких строк, знак вопроса будет в центре строки.
Это один из вариантов, безусловно есть ещё варианты, но суть:
ищите некорректное обрезание строки или нечто, позволяющее обрезать пол буквы.
пересмотрите свой код. Возможно не заметили мелочь.даже не знаю куда копать..
В какой кодировке файл?
Ошибка в 17-й строке. Без твоего кода это просто угадайка
zoltanleo писал(а):Без твоего кода это просто угадайка
Тоже да. Но код совсем простенький, вот и думал, что не нужен...
Код: Выделить всё
var
tmplist:tstringlist;
aprocess:tprocess;
begin
//текст
tmplist:=tstringlist.create;
tmplist.LoadFromFile(me.Text);
tmplist.Text:=UTF8ToWinCP(tmplist.Text);
tmplist.SaveToFile('soft.txt');
aprocess:=tprocess.Create(nil);
aprocess.Options:=[];
aprocess.CommandLine:=softRun.FileName;
aprocess.Execute;
freeandnil(aprocess);
freeandnil(tmplist);
end;Никаких обрезаний текста нет в принципе. Кодировка оригинала - UTF8. "?" появляется первым знаком перед текстом.
Добавлено спустя 1 минуту 48 секунд:
Mirage писал(а):Значит это скорее всего символ, которого нет в используемом шрифте.
в оригинальном тексте на этой позиции нет никакого символа.
вопрос снят и закрыт. недосмотрел. Это был BOM
упс - вопрос закрыт.
- Ichthyander
- энтузиаст
- Сообщения: 701
- Зарегистрирован: 04.04.2007 08:32:43
- Откуда: Астрахань
- Контактная информация:
Ох уж этот BOM )
-
ElectroGuard
- новенький
- Сообщения: 71
- Зарегистрирован: 03.06.2016 11:10:22
Лучше бы его автоматом распознавать, конечно. Как Delphi часто делает.
