Непонятки с Uses

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

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

Непонятки с Uses

Сообщение Janex72 » 20.04.2013 12:41:40

Привет всем.

Вот простеишая процедура:

Код: Выделить всё
procedure udf_Quote(Str, Delim, RetStr: PAnsiChar); cdecl; export;
begin
  StrPCopy(RetStr, UTF8Encode(QuoteC(UTF8ToString(Str), Char(Delim[0]))));
end;


Если ету процедуру ставлю в пустои проект, типа Application (екзешник) то комилится.
Если ставлю в пустои проект типа Library (dll) то ругается, что ненаходит функции QuoteC и UTF8ToString :(

В Uses добовляю всё то что имеет проект Application где ето компилится,
добовляю и LCL пакеидж ... некомпилится хоть убеи :(
Немогу понять где что нехватает, где живут функции QuoteC и UTF8ToString :(

Есть идеи у когото ?
WBR
Janex

Добавлено спустя 3 минуты 31 секунду:
Ои ... извените ... нефига и Application некомпилится, окозалось что
если несохранить новыи проект, то он и некомпилил вообше етот юнит ... :)

Добавлено спустя 24 минуты 24 секунды:
Ок, хрен с етими QuoteC и UTF8ToString :)
Идея там следуюшая - ето UDF функция для Firebird.
Там всё на на UTF-8, типо, входяшие параметри передаются как PAnsiChar в котором содержатся
текст в формате UTF-8 ...

Мне надо ети входяшие преобразить в нормальные String, чтоб обработать (Uppercase, copy, trim итп.), и потом
обратно в етот UTF-8 как PAnsiChar...
Кстати - в FPC (2.6.2) по дефаулту String он кто - Unicode, UTF8, UTF16 или что ?

Как ето правильно делается в FPC немогу понять :(
Janex72
новенький
 
Сообщения: 10
Зарегистрирован: 13.02.2012 15:16:57

Re: Непонятки с Uses

Сообщение Сквозняк » 21.04.2013 06:17:42

Janex72 писал(а):В Uses добовляю всё то что имеет проект Application где ето компилится, добовляю и LCL пакеидж ... некомпилится хоть убеи Немогу понять где что нехватает, где живут функции QuoteC и UTF8ToString Есть идеи у когото ?

Когда в линуксе настраивал компиляцию программы с лазарусным проектом из коммандной строки то получилось где-то так:
Код: Выделить всё
fpc proga.pp -Fu/usr/lib64/lazarus/lcl/units/x86_64-linux/gtk2 -dLCL -dLCLgtk2 -Fu/usr/lib64/lazarus/lcl/units/x86_64-linux  -Fu/usr/lib64/lazarus/components/lazutils/lib/x86_64-linux/ -Fu\lib/x86_64-linux/*  -Fu\i_dr/* -Fu\laz/* -CR -O3 -Mfpc -Tlinux


А при сборке для виндовса важно чтобы лазарусные -Fu шли раньше фэпэцешных. В лазарусе как минимум один модуль имеет конфликтное название и если слинковать не с тем, то случится лажа. Поищи в исходниках лазаруса и fpc модули в которых объявляются нужные тебе функции. Или в самом лазарусе попробуй выделить в исходнике имя функции и через контекстное меню найти объявление - вдруг повезёт :P

Мне надо ети входяшие преобразить в нормальные String


Функции AnsiToUtf8 и Utf8ToAnsi модуля System или использовать лазарусные аналоги.

Кстати - в FPC (2.6.2) по дефаулту String он кто - Unicode, UTF8, UTF16 или что ?


По умолчанию String это ShortString - строка длиной в 255 символов. Но если в исходнике использована директива компилятора {$H+} то нормальный String в этом исходнике превращается в AnsiString. Соответственно при {$H-} String = ShortString.
Сквозняк
энтузиаст
 
Сообщения: 1129
Зарегистрирован: 29.06.2006 22:08:32

Re: Непонятки с Uses

Сообщение Janex72 » 21.04.2013 23:25:25

>>По умолчанию String это ShortString - строка длиной в 255 символов. Но если в исходнике использована директива компилятора {$H+} то нормальный
>>String в этом исходнике превращается в AnsiString. Соответственно при {$H-} String = ShortString.

Я имел ввиду немношко другое.
До сих пор я работал в Дельфи, там String до версии 2009 били AnsiString а начиная с версии 2009 полностю всё юниокодовое,
тоесть String по дефаулту в кодировке юникода, если неошибюсь то UTF-16, но могу соврать ...
Вот интересует какая кодировка по дефаулту в FPC для String ?
Janex72
новенький
 
Сообщения: 10
Зарегистрирован: 13.02.2012 15:16:57

Re: Непонятки с Uses

Сообщение Сквозняк » 22.04.2013 04:05:20

Вот интересует какая кодировка по дефаулту в FPC для String ?

Да никакая, можно пихать любые данные, что туда загрузишь, то через writeln в консоль и выплюнет. В этой ветке форума где-то была статья как врубить через опции компилятора в исходнике поддержку utf-8, чтобы всё автоматом конвертировалось и AnsiString содержал поле с указанием кодировки, но там fpc нужен поновее, SSerge ссылку кидал. Нашёл похожую статью http://freepascal.ru/article/freepascal/20120718142000/ Пользы от такого подхода для себя пока не обнаружил, больше похоже на костыли для ускорения тормозной utf-8 а зависимость от системных библиотек для перекодировки - вообще "радует".
Сквозняк
энтузиаст
 
Сообщения: 1129
Зарегистрирован: 29.06.2006 22:08:32

Re: Непонятки с Uses

Сообщение SSerge » 22.04.2013 08:44:36

Сквозняк писал(а):Нашёл похожую статью http://freepascal.ru/article/freepascal/20120718142000/

Вот дополнение к статье: http://sirserge.altai.info/articles/?id=45
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул


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

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

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

Рейтинг@Mail.ru