2016-11-22 10 views
-2

다음 코드는 Delphi 5를 사용하여 컴파일하고 작동하지만 Delphi 10.1 Berlin을 사용하지는 않습니다.Delphi 10.1 Berlin에서 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

DbiCopyTableAnsiChar을 예상하므로 그에 따라 두 가지 문자 배열을 모두 선언해야합니다.

+0

감사합니다. 'char'를 'ansichar'로 변경하면 트릭이 완료된 것으로 보입니다. 8 ^) –

+0

@SLBentall 답변을 수락 한 적이없는 것으로 보입니다 여기에 스택 오버플로. 감사의 마음을 표시하려면 답변을 "수락 됨"으로 표시하는 것이 중요합니다. 이는 답변 한 사람에게 보상을주고 신뢰를주는 데 도움이됩니다. 여기에있는 사람들은 받아들이지 않는 사람들의 질문에 대답하는 것을 좋아하지 않습니다. –

+0

Jerry Dodge - 내가 당신을 불쾌하게 만들었다면 미안해. 나는이 시설을 처음 사용하는데 익숙하지 않다. 위의 저의 의견은 내가받은 조언에 감사함을 분명히 밝혔습니다. 그 밖의 어떤 조치를 취해야합니까? –