1
Mason Wheeler는 문자열 목록을 비교하는 매우 좋은 절차를 작성했지만 콜백 절차 TStringCompareProc을 작성하는 방법을 이해하지 못합니다. 어떤 사람이 이것을 컴파일하도록 도울 수 있습니까?호환되지 않는 형식 수정 방법
type
TStringCompareProc = procedure(const value: string; const data: TObject) of object;
procedure StringListCompare(List1, List2: TStringList; matchProc: TStringEqualProc;
list1Proc, list2Proc: TStringCompareProc; presorted: boolean = false);
Usage:
procedure TForm1.MatchProc(const value: string; const data: TObject);
// match is found between the two lists
begin
//
end;
procedure TForm1.List1Proc(const value: string; const data: TObject);
// when the first list contains a string not in the second list
begin
//
end;
procedure TForm1.List2Proc(const value: string; const data: TObject);
// when the second list contains a string not in the first list
begin
//
end;
procedure TForm1.Compare1Click(Sender: TObject);
var
MatchProc: TStringEqualProc;
List1Proc: TStringCompareProc;
List2Proc: TStringCompareProc;
iValue: string;
iData: ^PString;
begin
iFinalStringList := StringListCompare(iNewFilesStringList, iExistingFilesStringList,
nil, nil, List1Proc(iValue, @iData), List2Proc(iValue, @iData), False); <- [DCC Error] Unit1.pas(1336): E2010 Incompatible types: 'TStringCompareProc' and 'procedure, untyped pointer or untyped parameter'
end;
의 쓰기, 당신은 새로운 일에 질문을 변경할 수 없습니다. 그것은 사람들을 혼란스럽게하고 당신이 찾고있는 질문을 찾기가 어렵게 만듭니다. 또한,이 질문에는 대답이 있기 때문에 아무도 그것을 방문하지 않고 도움을줍니다. 따라서이 질문을 원래 상태로 복원 한 다음 새 프로그래밍 질문에 * 새 * 질문을 작성해야합니다. 나는 당신을 위해 첫 번째 부분을했습니다. –
감사합니다 Andreas, 나는 그것을 다루는 방법을 몰랐습니다 ... 한편 MatchProc을 제거하여 힌트와 경고 문제를 해결했습니다 : TStringEqualProc; List1Proc : TStringCompareProc; List2Proc : TStringCompareProc; vars ... 이제 작동합니다 ... 도와 줘서 고마워. – Bill