Текущий архив: 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 200310221type
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