Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.05.25;
Скачать: CL | DM;

Вниз

Приведение типов в FPC   Найти похожие ветки 

 
@!!ex ©   (2008-04-09 19:40) [0]

Сейчас переделываю код с дельфи под FPC
столкнулся с тем, что там более жесткий конвертер типов.
Тупо не позволяет приводить типы.
Например, не работает PChar(S), приходится писать PChar(@S[1])
Это еще ладно.
Но что делать вот в таком случае??
NewPointer:=Pointer(integer(DataForSend)+DataSize);
Говорит:
Error: Illegal type conversion: "Int64" to "^untyped"
И как иначе то???


 
знаток   (2008-04-09 19:43) [1]

А как ты собрался Int64 к указателю приводить?


 
@!!ex ©   (2008-04-09 19:44) [2]

> [1] знаток   (09.04.08 19:43)

integer(DataForSend) и DataSize - integer
integer - должен без проблем приводится к Pointer


 
palva ©   (2008-04-09 19:49) [3]

Наверно, у вас DataSize беззнаковое. Вот сумма и привeлась к Int64. Надо ее обратно к Integer возвращать.


 
@!!ex ©   (2008-04-09 19:49) [4]

Ладно, решил проблему жестким приведением сначала к integer, потом к Pointer.

Теперь не хочет компилится ассемблерная функция:

function FastArcCos(const X: Extended): Extended; Assembler;
asm
 fld    X
 fld    X
 fmul
 fld1
 fsubr
 fsqrt
 fld    X
 fpatan
 fwait
end;


Fatal: Selected assembler reader not supported


 
@!!ex ©   (2008-04-09 19:51) [5]

> [3] palva ©   (09.04.08 19:49)

Точно! Оно и было! Спасибо!


 
palva ©   (2008-04-09 19:58) [6]

@!!ex ©   (09.04.08 19:49) [4]
Это надо смотреть параметры командной строки. Поменять там какие-нибудь параметры ассемблера. У меня ассемблер на Free Pasсal шел. Сейчас не помню подробностей.


 
знаток   (2008-04-09 20:02) [7]

Ассемблер в настройках переключается. По умолчанию вроде там линуксовый синтаксис используется.


 
@!!ex ©   (2008-04-09 20:14) [8]

Да! Нашел!


 
@!!ex ©   (2008-04-09 20:36) [9]

Кстати, приведение типов тоже решается включение опцией.
Правда он кучу варнингов пишет: типа приведение не портабельно.
Но это не суть, сейчас хотя бы на винде запустить...


 
@!!ex ©   (2008-04-09 20:49) [10]

А вот это что такое??
HUDUnit.pas(27,1) Fatal: Internal error 200310221

type
 THUD = class
 public
   Resolution:integer;

   Messages:TMessanger;
   PlayerEnabled:integer;
   PlayerFadeOut:integer;

   texture_Indicator:integer;
   texture_Indicator_Grid:integer;
   Indicator_Value:PInteger;
   Indicator_Text:string;

   texture_Radar:integer;
   texture_Camera:integer;

   texture_Missile:integer;
   texture_Missile_Target:integer;
   texture_Bomb_Target:integer;
   texture_Gun:integer;
   texture_AttackAngle:integer;

   Radar:TRadar;
   BigRadar:boolean;
   p1:single;

   SmallRadar:TSmallRadar;
   font_Arial10:integer;
   font_ArialBlack18:integer;

   Constructor Create;
   Procedure   Draw(dt:integer);
 protected
 end;


Выделяет строку texture_Camera:integer;


 
@!!ex ©   (2008-04-09 20:59) [11]

Это был баг компилятора.
При повторной компиляции это само решилось.
Теперь вопрос, что такое
Fatal: Can"t find unit StdConvs
Что за StdConvs и где его взять??


 
TUser ©   (2008-04-09 21:01) [12]

Имхо, опции компилятора не выставлены, надо поставить -Mdelphi

{$apptype console}

var S: string;
   P: PChar;
begin
 S := "aaa";
 P := PChar (S);
 writeln (P);
end.

E:\temp>dcc32 pc
Borland Delphi Version 15.0
Copyright (c) 1983,2002 Borland Software Corporation
pc.dpr(9)
10 lines, 0.23 seconds, 10600 bytes code, 1805 bytes data.

E:\temp>pc
aaa

E:\temp>fpc pc.dpr
Free Pascal Compiler version 2.2.0 [2007/09/09] for i386
Copyright (c) 1993-2007 by Florian Klaempfl
Target OS: Win32 for i386
Compiling pc.dpr
pc.dpr(7,8) Error: Illegal type conversion: "ShortString" to "^Char"
pc.dpr(9,4) Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted
Error: C:\Program Files\FPC220\bin\i386-win32\ppc386.exe returned an error
exitcode (normal if you did not specify a source file to be compiled)

E:\temp>fpc -Mdelphi pc.dpr
Free Pascal Compiler version 2.2.0 [2007/09/09] for i386
Copyright (c) 1993-2007 by Florian Klaempfl
Target OS: Win32 for i386
Compiling pc.dpr
Linking pc.exe
8 lines compiled, 0.1 sec, 23488 bytes code, 1224 bytes data

E:\temp>pc
aaa

E:\temp>


 
tesseract ©   (2008-04-09 21:11) [13]


> Правда он кучу варнингов пишет: типа приведение не портабельно.
> Но это не суть, сейчас хотя бы на винде запустить...


Вроде была ссылка на  openet про приведение и работу с указателями. Правда на С.


 
@!!ex ©   (2008-04-09 21:15) [14]

> [13] tesseract ©   (09.04.08 21:11)

Да это варнинги не критичные, когда портить буду - поправлю.
Сейчас бы запустить хотя бы на винде. :))


 
tesseract ©   (2008-04-09 21:18) [15]


> приходится писать PChar(@S[1])


А он конец строки кстати как отрабатывает ?


 
palva ©   (2008-04-09 21:39) [16]


> > приходится писать PChar(@S[1])
>

А @S[1] разве не работает? Вроде бы тот же тип.



Страницы: 1 вся ветка

Текущий архив: 2008.05.25;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.027 c
2-1209010231
azamatufa
2008-04-24 08:10
2008.05.25
Rave Designer как сделать подсчет строк в DataBand ?


3-1198064534
Егоров А.Н.
2007-12-19 14:42
2008.05.25
Многострочный заголовок в DBAltGrid


15-1207680695
ProgRAMmer Dimonych
2008-04-08 22:51
2008.05.25
Электронная почта


15-1207919957
IvanBs
2008-04-11 17:19
2008.05.25
SSL


15-1208092475
Дмитрий С
2008-04-13 17:14
2008.05.25
Плазменый ТВ