Проблема Freepascal с переходом с 2.0.2 на 2.0.4

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

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

Проблема Freepascal с переходом с 2.0.2 на 2.0.4

Сообщение 3G » 01.09.2006 12:12:14

Есть у меня любимый модуль для FPC - CURL.

Работает тьфу-тьфу-тьфу отлично, программки относительно простые с ним писать я умею, но вот незадача, программы не могут откомпилироваться на 2.0.4, хотя работают прекрасно на 2.0.2. И не могу понять почему, что изменилось в момент перехода между версии, там где модули курла собирались без проблем, теперь 13 ошибок. Ругаться стал на конструкцию

Error: Illegal type conversion: "ShortString" to "^Char"
"в коде например pChar(aStr)"

Может кто знает в чем может быть проблема?
3G
незнакомец
 
Сообщения: 6
Зарегистрирован: 01.09.2006 12:02:02

Сообщение SergKam » 01.09.2006 13:14:08

Вероятно надо включить в компиляторе использование AnsiString
SergKam
постоялец
 
Сообщения: 251
Зарегистрирован: 16.11.2005 21:31:11
Откуда: Украина,Харьков

Сообщение 3G » 01.09.2006 18:05:09

Тогда 2 вопроса рождается.

1) Подскажите, пожалуйста как! ибо не сталкивался с этим вопросом, уж больно хочется пересесть на 2.0.4, ибо там как раз улучшена работа с AnsiStrings.
2) Может кто знает почему тогда одинаковые параметры компиляции устанавливают разные параметры?
3G
незнакомец
 
Сообщения: 6
Зарегистрирован: 01.09.2006 12:02:02

Сообщение 3G » 01.09.2006 18:07:02

C первым определился быстрее чем почитал ответ ppc386.exe (-Sh) а со вторым непонятность.
3G
незнакомец
 
Сообщения: 6
Зарегистрирован: 01.09.2006 12:02:02

Сообщение 3G » 01.09.2006 18:10:42

(-Sh) не помогает :-(
3G
незнакомец
 
Сообщения: 6
Зарегистрирован: 01.09.2006 12:02:02

Сообщение 3G » 01.09.2006 18:13:15

Где копать?
3G
незнакомец
 
Сообщения: 6
Зарегистрирован: 01.09.2006 12:02:02

Сообщение Sergei I. Gorelkin » 01.09.2006 19:31:22

А этот модуль с какими строками должен быть по задумке авторов? Возможно, строгости ради просто запретили преобразование ShortString в PChar?
Если ответ на первый вопрос - все-таки AnsiStrings, то нужно учесть, что {$mode objfpc}, если она есть, отключает Ansi строки, т.е. -Sh в командной строке может и не подействовать - нужно -S2h.
Наконец, у меня часто при обновлении бывает, что какой-то модуль берется не из нужного места. В этом случае помогает ключ -vu и внимательный анализ вывода.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение 3G » 02.09.2006 18:46:51

Сейчас попробую.
CURL pascal (curlpas) можно найти при небольшом желании в сети :)

Не помогает к сожалению :?
Вот как он ругается. Еще раз отмечу, что на 2.0.2 - тишина, компиляция ошибок не выдает, только хинты.

ocurlacc.inc(75,5) Hint: Local variable "FH" does not seem to be initialized
ocurlacc.inc(100,23) Hint: Type size mismatch, possible loss of data / range che
ck error
ocurlcll.inc(27,37) Error: Illegal type conversion: "ShortString" to "^Char"
ocurlcll.inc(31,17) Error: Illegal type conversion: "ShortString" to "^Char"
ocurlcll.inc(132,22) Error: Illegal type conversion: "ShortString" to "^Char"
ocurlcll.inc(361,5) Hint: Local variable "f" does not seem to be initialized
ocurlcll.inc(495,5) Hint: Local variable "f" does not seem to be initialized
ocurlcb2.inc(164,26) Error: Illegal type conversion: "ShortString" to "^Char"
ocurlset.inc(11,64) Error: Illegal type conversion: "ShortString" to "^Char"
ocurlset.inc(19,21) Error: Illegal type conversion: "ShortString" to "^Char"
ocurlget.inc(8,24) Error: Call by var parameters have to match exactly: Got "Sho
rtString" expected "WideString"
ocurlprv.inc(18,11) Hint: Found declaration: UniqueString(var WideString)
ocurluse.inc(513,11) Hint: Found declaration: UniqueString(var AnsiString)
curlobj.pas(161,20) Error: Illegal type conversion: "ShortString" to "^Char"
curlobj.pas(163,22) Error: Call by var parameters have to match exactly: Got "Sh
ortString" expected "WideString"
ocurlprv.inc(18,11) Hint: Found declaration: UniqueString(var WideString)
ocurluse.inc(513,11) Hint: Found declaration: UniqueString(var AnsiString)
curlobj.pas(171,22) Error: Illegal type conversion: "ShortString" to "^Char"
curlobj.pas(173,22) Error: Call by var parameters have to match exactly: Got "Sh
ortString" expected "WideString"
ocurlprv.inc(18,11) Hint: Found declaration: UniqueString(var WideString)
ocurluse.inc(513,11) Hint: Found declaration: UniqueString(var AnsiString)
curlobj.pas(186,5) Hint: Local variable "buf" does not seem to be initialized
curlobj.pas(191,41) Error: Call by var parameters have to match exactly: Got "Sh
ortString" expected "WideString"
ocurlprv.inc(18,11) Hint: Found declaration: UniqueString(var WideString)
ocurluse.inc(513,11) Hint: Found declaration: UniqueString(var AnsiString)
curlobj.pas(195,43) Error: Call by var parameters have to match exactly: Got "Sh
ortString" expected "WideString"
ocurlprv.inc(18,11) Hint: Found declaration: UniqueString(var WideString)
ocurluse.inc(513,11) Hint: Found declaration: UniqueString(var AnsiString)
curlobj.pas(222) Fatal: There were 13 errors compiling module, stopping
curlobj.pas(1,40) Fatal: Compilation aborted
3G
незнакомец
 
Сообщения: 6
Зарегистрирован: 01.09.2006 12:02:02

Сообщение SergKam » 04.09.2006 22:43:41

судя по этой строче всетаки AnsiString предпологался
Код: Выделить всё
ocurluse.inc(513,11) Hint: Found declaration: UniqueString(var AnsiString)


Может вместо {$mode objfpc}, поставить {$mode delphi}, и {$AnsiStrings}(я не помню как правильно ман смотри).
короче если в тексте стоит явно указание {$mode objfpc} то никаие ключи компилятора просто не действуют.
есть другой вариант- все обьявления в тексте String Заменить на AnsiString чтобы явно тип задавался, а где константами привести AnsiString("Текст")
SergKam
постоялец
 
Сообщения: 251
Зарегистрирован: 16.11.2005 21:31:11
Откуда: Украина,Харьков


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

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

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

Рейтинг@Mail.ru