함수가 있습니다.기본 클래스와 다른 이름으로 Delphi 추상 함수 호출
function GetFieldName(FieldIndex: Integer; FieldName: PChar;
Len: Integer): Integer; virtual; abstract;
를 추가하려고합니다.
function GetFieldNameA(FieldIndex: Integer; FieldName: PAnsiChar;
Len: Integer): Integer;
그러면 데이터베이스 연결이 일시적으로 유니 코드에 연결됩니다.
GetFieldName을 계속 호출하여 추상화하지 않고 GetFieldNameA를 호출하기 위해 약간의 바이트 변환을 수행합니다. GetFieldNameA는 첫 번째 GetFieldName의 기술적 추상 버전이됩니다. (나는 기본 클래스를 전혀 바꾸고 싶지 않다.)
외부 참조에 'name'키워드를 추가하는 것과 같은 방법으로 서브 클래스에 다른 이름을 가진 추상 함수를 가질 수 있습니까?
내가 끝내고 있다고 생각하는 것은 다음과 같습니다.
function GetFieldName(FieldIndex: Integer; FieldName: PChar;
Len: Integer): Integer;
function GetFieldNameA(FieldIndex: Integer; FieldName: PAnsiChar;
Len: Integer): Integer name 'GetFieldName Virtual Abstract';
정확히 달성하려는 것은 무엇입니까?실제로 GetFieldName을 사용하는 코드를 변경하지 않고도 GetFieldName에있는 (재정의 된) 구현의 현재 계층 구조를 GetFieldNameA의 (오버라이드 된) 구현 계층 구조로 이동하려고합니까? –
@marjan GetFieldNameA (및 다른 함수의 호스트) GetFieldName 델파이 7 않았다 같은 기능을 추가하려면 노력하고있어. GetFieldName 유니 코드를 사용하여 호출 할, 변환 및 GetFieldNameA 호출 할. 문제는 GetFieldName이 추상이고 구현이 완전히 다른 프로젝트에 있다는 것입니다. 이것은 이상한 오래된 코드입니다. –
가상 추상 기능의 구현이 다른 프로젝트에있는 경우, 실제로 DS (문제의 선호도에 따라 깊은 똥이나 무서운 해협)에 있습니다. 실제로 Rob의 솔루션이 필요하거나 GetFieldNameA 가상 추상화를 수행하고 구현 라이브러리의 메소드 이름을 바꿉니다. 그런 다음 유니 코드 버전을 라이브러리에서 GetFieldNameW로 코딩하면 기본 클래스의 GetFieldName에서 호출 할 결정을 적어도 유지할 수 있습니다. 이는 Windows API 요리 책과 Delphi의 외부 선언에서 잎을 취하는 것과 같습니다. –