Строки в FPC 2.7

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Re: Строки в FPC 2.7

Сообщение SSerge » 25.01.2012 08:18:45

Brainenjii писал(а):Если потом перезапустить из под рута же, но вручную - всё ок...


При запуске из под cron'a, shell скриптам и программам не передается. Соответственно, те переменные окружения, которые выставляет bash, будут отсутствовать.

Аналогичная картина с Апачем, причем хуже. Что он выставляет программе из environment - зависит от него самого и его настроек. Поскольку это - окружение апача, а не операционной системы (фактически, может быть даже "песочницей"), какие либо предположения о кодовых страницах, локали, etc - делать сомнительно. Однако ж, насколько помню, модуль system при инициализации выставляет ряд внутренних переменных, основываясь на окружении (угу, откуда ему еще данные брать). Ну, и некоторые функции полагаются на эти переменные. Но вот чтобы строковая арифметика ломалась... Здесь, imho, навскидку только представляются какие-то ключи компиляции по умолчанию (или неумолчанию), интерпретирующие строки либо как WideStrings (поскольку по описанию, они всегда используют неявные преобразования при операциях с другими строковыми типами), либо ShortStrings символа по 32 (не влезло в представление - хвост обрезался, utf поломан).

Так, размышления...
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Строки в FPC 2.7

Сообщение Brainenjii » 25.01.2012 10:07:52

Всё так - указал LC_ALL - все заработало
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Строки в FPC 2.7

Сообщение Павел Ишенин » 26.01.2012 15:39:19

1. Проверить что DefaultSystemCodePage = CP_UTF8
2. Передать компилятору информацию о том что строки находятся в UTF8 либо через {$codepage utf8} либо через -Fcutf8
Павел Ишенин
постоялец
 
Сообщения: 475
Зарегистрирован: 24.03.2007 10:16:52

Re: Строки в FPC 2.7

Сообщение SSerge » 26.01.2012 18:20:47

Павел Ишенин писал(а):1. Проверить что DefaultSystemCodePage = CP_UTF8


Боюсь, в данной ситуации уже надо не проверять, а принудительно устанавливать.
и достаточно ли будет присвоения DefaultSystemCodePage := CP_UTF8; наверно, не всё так просто.

Павел Ишенин писал(а):2. Передать компилятору информацию о том что строки находятся в UTF8 либо через {$codepage utf8} либо через -Fcutf8


Зачем? Насколько я понимаю концепцию, эти ключи имеют значения, когда компилятор должен совершить _преобразования_ строк. Если же текст действительно в UTF-8, и widestrings не используются, что это даст (кроме искажений)?
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Строки в FPC 2.7

Сообщение alexs » 26.01.2012 23:25:14

Павел Ишенин писал(а):1. Проверить что DefaultSystemCodePage = CP_UTF8

МАСТЕР! Мои респекты и уважухи :D
Было
Код: Выделить всё
CP_ASCII   = 20127; // us-ascii

Постявил явно в коде
Код: Выделить всё
DefaultSystemCodePage:=CP_UTF8;

Всё стало нормально.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Строки в FPC 2.7

Сообщение Павел Ишенин » 27.01.2012 05:10:28

alexs писал(а):Постявил явно в коде
Код: Выделить всё
DefaultSystemCodePage:=CP_UTF8;

Всё стало нормально.


Желательно через SetMultiByteConversionCodePage(CP_UTF8)
Павел Ишенин
постоялец
 
Сообщения: 475
Зарегистрирован: 24.03.2007 10:16:52

Re: Строки в FPC 2.7

Сообщение GAMER » 27.01.2012 12:09:56

Павел Ишенин писал(а):
alexs писал(а):Постявил явно в коде
Желательно через SetMultiByteConversionCodePage(CP_UTF8)

Спасибо, с этим вызовом ушел от некоторых проблем. Например от этой.
http://bugs.freepascal.org/view.php?id=21104

Добавлено спустя 2 часа 33 минуты 21 секунду:
Кстати.

Если использую SetMultiByteConversionCodePage(CP_UTF8), то не могу переконвертировать строку в Ansi. (1251). Использую UTF8toAnsi
как побороть, или єто баг?

Добавлено спустя 4 часа 23 минуты 56 секунд:
Еще один баг. не работает и Image1.Picture.LoadFromFile(OpenDialog1.FileName);
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Пред.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru