2010-06-29 3 views
0

에 대한 델파이에 다음 예제 코드를 변환하고있어 전달하는 방법 : 문제는 내가 필요가있다문자열 인덱스는 OleVariant에

 
var 
    vTable, vRow: OleVariant; 
begin 
.... 

    while vTable.EndOfTable = False do 
    begin 
    vRow := vTable.GetNextRow; 
    sEmail := vRow['Email1Address']; 
    ShowMessage(sEmail); 
    end; 
end; 

:

http://msdn.microsoft.com/en-us/library/bb176406%28v=office.12%29.aspx

내 코드가 뭔가처럼 문자열 색인 'Email1Address'를 전달하지만 델파이는 다음과 같은 오류를 표시합니다. 호환되지 않는 유형 : 정수 및 문자열.

다른 유형의 변형을 사용해야합니까?

TIA

답변

3

은 내가 TLB 파일에서 생성 된 전망 단위에서 살펴 보았다 그것은 다음과 같습니다

_Row = interface(IDispatch) 
    ['{000630D3-0000-0000-C000-000000000046}'] 
    //snip 
    function Item(Index: OleVariant): OleVariant; safecall; 
    //snip 
    end; 

행 인터페이스는 OleVariant에 걸리는 방법 항목을 가지고 있습니다. 따라서 이것을 사용하십시오 :

sEmail := vRow.Item('Email1Address'); 

MSDN help도보십시오.

+0

감사합니다. The_Fox. FTR, 나는 아웃룩 소스를 확인했지만 Outlook XP까지만 가지고 GetTable은 Outlook 2007까지 도입되지 않았다. – Xanyx

+0

당신은 내가 직접 만든 파일들을 생성 할 수있다. Delphi를 시작하고 Project \ Import Type Library를 선택하고 Microsoft Outlook 12.0 Object Library를 찾고 거기에 없으면 % programfiles % \ Microsoft Office \ Office12 \ msoutl.olb를 추가 할 수 있습니다. "Generate Component Wrapper"를 확인하고 단위 디렉토리를 지정하십시오. 이제 "Create Unit"을 클릭하십시오. Office_TLB.pas 및 Outlook_TLB.pas가 생성됩니다. –

+0

우수, 감사합니다. – Xanyx

관련 문제