2016-11-22 59 views
-2

以下代码使用Delphi 5编译和工作,但未使用Delphi 10.1 Berlin;在Delphi 10.1中使用BDE API(BdiCopyTable)柏林

function CopyTable(const tSource: TwwTable; const Destination: string): DBIResult; 
var 
    pSourceTableName, pDestination: array[0..DBIMAXTBLNAMELEN] of char; 
begin 
    tSource.Open; 
    StrPCopy(pSourceTableName, tSource.TableName); 
    StrPCopy(pDestination, Destination); 
    Result := DbiCopyTable(tSource.DBHandle, False, pSourceTableName, nil, pDestination); 
    tSource.Close; 
end; 

编译器报告[dcc32错误] SUPPORT1.PAS(3655):E2010不兼容的类型: 'PAnsiChar' 和 '阵列字符的[0..260]' 的两倍。

我该如何改变它,使其编译清洁并按预期工作? NB。在大规模迁移的这个阶段,我不能放弃BDE。

+1

你看过StrPCopy的声明 - http://docwiki.embarcadero.com/Libraries/Seattle/en/System.SysUtils.StrPCopy? – RBA

+1

始终包含编译器/异常错误消息。 –

+0

我很震惊BDE可以用这样一个现代版的Delphi工作。我以为他们在很多版本之前彻底删除了它。你是否手动安装它? –

回答

3

DbiCopyTable预计AnsiChar,所以你应该相应地声明两个字符数组。

+0

非常感谢你把'char'改成'ansichar'似乎已经成功了!^^ –

+0

@SLBentall看起来你从未接受过任何答案在这里堆栈溢出。为了表示您的谢意,您应该认真考虑将答案标记为“已接受”。这会奖励回答并帮助您提供可信度的人。这里的人们并不倾向于回答有人不接受他们的历史的问题。 –

+0

杰里道奇 - 我很抱歉,如果我已经让你进攻 - 虽然从你的评论我不知道如何。我对使用这种设备很陌生 - 如果我没有做到,请解释一下。我上面的评论我希望非常清楚,我很感谢我获得的建议 - 我还应该做些什么? –