我正在尝试使用新的Borland C ++ - Builder(Embarcadero Studio XE2)编译旧程序。
我认为这很容易,但我收到了很多错误。例如使用类似somefunction(TPoint(0,0))
之类的东西在它期待引用时不起作用,所以我不得不写TPoint t=TPoint(0,0);somefunction(t)
...也有一些错误,比如math.log可以使用double的double但是得到了uint,所以它无法决定...
但主要问题似乎是OWL。我在那里有一个代码行说明了一些与函数参数类型不匹配的内容:
DEFINE_RESPONSE_TABLE1(TTSCalibDialog,TDialog) EV_LVN_ENDLABELEDIT(IDC_CALIBMASSES,MassCol_EndLableEditResp), EV_COMMAND(IDC_CALIBRATEBUT,CalibrateResp), EV_COMMAND(IDC_CALIBSAVEBUT,CalibSaveResp), EV_COMMAND(IDC_CALIBLOADBUT,CalibLoadResp), EV_COMMAND(IDC_CALIBRESTORE,CalibRestoreResp), EV_COMMAND(IDC_CALIBSETNUMMASSES,CalibSetNumMassesResp), EV_WM_DESTROY,// Ev_WM_Destroy END_RESPONSE_TABLE;
该行
EV_LVN_ENDLABELEDIT(IDC_CALIBMASSES, MassCol_EndLableEditResp)
给出错误
[BCC32 Fehler] AcMode_TS_Dial.CPP(13):E2285KeineÜbereinstimmungfür “b_LV_DISPINFO_NOTIFY_Sig(无效 (TTSCalibDialog :: *)(TLvDispInfoNotify&))'gefunden 而第二个参数被声明 void MassCol_EndLableEditResp(TLwDispInfoNotify& nmHdr)
{MassCol-> EndLableEditResp(NMHDR);};
第一个论点在这里使用似乎也是合法的......
后来有一行使用
EV_LVN_ENDLABELEDIT(IDC_SIMWEIGHTCOL,AddCol0_EndLableEditResp),
有相同的错误,所以我认为可能有一个包含或命名空间缺失...
是否有人知道此功能或可能导致错误的原因?
答案 0 :(得分:1)
过了一段时间,我也在OWLNext论坛上问过,在那里收到正确答案:
http://sourceforge.net/p/owlnext/discussion/97175/thread/a0cc4131/
void TTSCalibDialog::MassCol_EndLableEditResp(TLwDispInfoNotify& nmHdr)
{MassCol->EndLableEditResp(nmHdr);}
此函数返回void,但是需要bool。更改类型并返回true inside解决了这个问题。
还有一些其他问题,但现在该程序很乐意在XE2-Studio上进行编译。