ZEOS RUSSIAN
Модератор: Модераторы
ZEOS RUSSIAN
Как сделать чтоб ошибки виводились на русском.
Если ставлю в Zeos.inc {$DEFINE RUSSIAN} то показивает такоe: ???????????????????????????????
Если ставлю в Zeos.inc {$DEFINE RUSSIAN} то показивает такоe: ???????????????????????????????
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Re: ZEOS RUSSIAN
Телепаты ушли в отпуск, поэтому совершенно непонятно где и как показывает и знает ли топикстартер про преобразование кодировок...
Re: ZEOS RUSSIAN
kit писал(а):{$DEFINE RUSSIAN}
это ни что иное, как cp1251, если Вам это о чём то говорит...
Re: ZEOS RUSSIAN
С кодировками в лазарусе/фри-паскале еще та задница!!!!
Вот с недавних пор у меня начались чудеса в программе которая в фирме уже 5 лет трудится.
Передаю методу имя файла (юзвери повадились теперь длинные имена давать - удобно так).
Чтобы проще было 163 символа
А вот получает метод уже обрезанное имя файла
Вот что приходит
Чтобы проще было 148 символов
Естественно, файл не найден и досвиданья.
Уж я его и в такой кодировке, и в другой кодировке ... кучу типов строк перепробовал (String, AnsiString, WideByteString, ...)
В общем ... "Стаю на асфальте я в лыжи обутый..."
Куда копать? Кто знает?
Вот с недавних пор у меня начались чудеса в программе которая в фирме уже 5 лет трудится.
Передаю методу имя файла (юзвери повадились теперь длинные имена давать - удобно так).
Код: Выделить всё
Od := TOpenDialog.Create(Self);
Od.Filter := WinCPToUTF8('grf Проект (*.grf)|*.grf');
Od.InitialDir := PathData;
if Od.Execute
then begin
SourceDataFileName := (Od.FileName);
SourceData.Destroy;
SourceData := TSourceData.Create(false, FormMainFobos);
if (SourceData.LoadDataFromFile(SourceDataFileName)) then
begin
SourceData.SetDataToScreenForm;
Код: Выделить всё
SourceDataFileName = 'D:\OP204W4\Work\Опора 5 ростверк по бортам\Эксплуатация с бульдозером большой ростверк с подпорной стенкой_врм\ОПОРА 5 СТОЙКА ДИАМ 25 сечение перемычки шаг 150.GRF'Чтобы проще было 163 символа
А вот получает метод уже обрезанное имя файла
Код: Выделить всё
{ Загрузка данных из текстового файла }
function TSourceData.LoadDataFromFile(aFileName: String): Boolean;
var
GRF: TStringList;
I, Count: integer;
S: String;
begin
FileName := AnsiToUtf8(aFileName);
Result := true;
if (FileName = '') then Exit;
if not (FileExists(FileName))
then begin
S := 'Файл "' + UTF8ToWinCP(FileName) + '" не найден.';
MessageDlgSysToUTF8('Файл исходных данных', S, mtInformation, [mbCancel], 0);
Result := false;
Exit;
end;
Вот что приходит
Код: Выделить всё
aFileName = 'D:\OP204W4\Work\Опора 5 ростверк по бортам\Эксплуатация с бульдозером большой ростверк с подпорной стенкой_врм\ОПОРА 5 СТОЙКА ДИАМ 25 сечение перем?'Чтобы проще было 148 символов
Естественно, файл не найден и досвиданья.
Уж я его и в такой кодировке, и в другой кодировке ... кучу типов строк перепробовал (String, AnsiString, WideByteString, ...)
В общем ... "Стаю на асфальте я в лыжи обутый..."
Куда копать? Кто знает?
Re: ZEOS RUSSIAN
уже "катались" на форуме по теме AnsiToUtf8 и WinCPToUTF8. Ну не всегда оно работаетЬ. Использовать аналоги CP1251To... или наоборот...Куда копать? Кто знает?
FileExists есть же FileExists для Utf8. Он то же не проходит и обрезает?
п.с.
А "залить" всё это художество в базу?
Или проводник всё наше... и плохо что мало влазит в именах. Вот бы ещё кратенькую характеристику втиснуть.
- serbod
- постоялец
- Сообщения: 449
- Зарегистрирован: 16.09.2016 10:03:02
- Откуда: Минск
- Контактная информация:
Re: ZEOS RUSSIAN
Код: Выделить всё
Od.Filter := WinCPToUTF8('grf Проект (*.grf)|*.grf');Ахтунг, русские буквы в исходниках! Какая кодировка у самих исходников? Может там и не нужно ничего в UTF8 конвертить?
Re: ZEOS RUSSIAN
pupsik
Обрезает раньше. Значение параметра уже кастрировано.
Вот это я не понял. Гуишная прога. Заполняем форму с данными (куча вкладок). Сохраняем все это в файл. Если надо читаем, считаем, но ... опаньки! Нет такого файла. Юзвери приходят меня пинать, типа, чтозанах! Я все делал, посчитал, сохранил, хочу чёто поменять пересчитать... и привет!
Причем, все это началось недавно. Толи винду как-то обновили что-то там подругому стало... толи еще чего в космосе случилось. Пять лет так работали. И длинные имена были, и всякоразно. Вдруг такие косяки.
Стал смотреть дебагером. Параметр передается правильно, а внутри метода принятый параметр уже усеченный.
Картинку бы сюда положить. У меня скриншоты есть. Только их куда-то в инет сначала надо затолкать...
serbod
Исходники в UTF8.
FileExists есть же FileExists для Utf8. Он то же не проходит и обрезает?
Обрезает раньше. Значение параметра уже кастрировано.
А "залить" всё это художество в базу?
Вот это я не понял. Гуишная прога. Заполняем форму с данными (куча вкладок). Сохраняем все это в файл. Если надо читаем, считаем, но ... опаньки! Нет такого файла. Юзвери приходят меня пинать, типа, чтозанах! Я все делал, посчитал, сохранил, хочу чёто поменять пересчитать... и привет!
Причем, все это началось недавно. Толи винду как-то обновили что-то там подругому стало... толи еще чего в космосе случилось. Пять лет так работали. И длинные имена были, и всякоразно. Вдруг такие косяки.
Стал смотреть дебагером. Параметр передается правильно, а внутри метода принятый параметр уже усеченный.
Картинку бы сюда положить. У меня скриншоты есть. Только их куда-то в инет сначала надо затолкать...
serbod
Ахтунг, русские буквы в исходниках! Какая кодировка у самих исходников? Может там и не нужно ничего в UTF8 конвертить?
Исходники в UTF8.
Re: ZEOS RUSSIAN
Если сохраняет... Знч. вы что то упустили при открытии. Ищите где.Обрезает раньше....Сохраняем все это в файл.
По поводу базы. Ну кто виноват что у вас таким образом сохраняется? Применение базы часто облегчает жизнь. Да же при локальном использовании и редким доступом в сеть.
Re: ZEOS RUSSIAN
Посмотрите этот параметр:

Re: ZEOS RUSSIAN
sign
Нету
https://cloud.mail.ru/public/4iM7/w4CqKCbiR/regedit.png
Добавлено спустя 15 минут 48 секунд:
Вот если в облако доступ получился
https://cloud.mail.ru/public/7qNY/6fbPGNN7p/KO206_%D0%9F%D0%BE%D0%BB%D0%BD%D0%BE%D0%B5%20%D0%B8%D0%BC%D1%8F%20%D1%84%D0%B0%D0%B9%D0%BB%D0%B0.png
https://cloud.mail.ru/public/7qNY/6fbPGNN7p/KO206_%D0%98%D0%BC%D1%8F%20%D1%84%D0%B0%D0%B9%D0%BB%D0%B0%20%D1%83%D0%B6%D0%B5%20%D0%BE%D0%B1%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%BE.png
Добавлено спустя 27 минут 52 секунды:
Обалдеть!!!!
Вся проблема в том что куда-то пропал {$H+}. Соответственно тип string стал ShortString.
Проблема решена!
Нету
https://cloud.mail.ru/public/4iM7/w4CqKCbiR/regedit.png
Добавлено спустя 15 минут 48 секунд:
Вот если в облако доступ получился
https://cloud.mail.ru/public/7qNY/6fbPGNN7p/KO206_%D0%9F%D0%BE%D0%BB%D0%BD%D0%BE%D0%B5%20%D0%B8%D0%BC%D1%8F%20%D1%84%D0%B0%D0%B9%D0%BB%D0%B0.png
https://cloud.mail.ru/public/7qNY/6fbPGNN7p/KO206_%D0%98%D0%BC%D1%8F%20%D1%84%D0%B0%D0%B9%D0%BB%D0%B0%20%D1%83%D0%B6%D0%B5%20%D0%BE%D0%B1%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%BE.png
Добавлено спустя 27 минут 52 секунды:
Обалдеть!!!!
Код: Выделить всё
unit SourceData;
{$mode objfpc}
{$H+}
interface
uses
Вся проблема в том что куда-то пропал {$H+}. Соответственно тип string стал ShortString.
Проблема решена!
