2017-01-17 2 views
1

그래서 델파이를 사용하여 SOAP 서비스를 사용하고 있지만 열거 형 값을 설정하는 데 어려움을 겪고 있습니다. 다음은 enum 선언입니다.다른 단위의 델파이 열거 형

Extension = (pdf, xls, txt, xlsx, docx, doc, xml, png, jpg, gif); 

이것은 WSDL을 가져 오면 Delphi 가져 오기 단위로 선언됩니다. 이제 내 앱에서이 장치를 사용하고 있으며 아래 옵션을 시도했지만 아무 소용이 없습니다.

옵션 1 : (선언되지 않은 식별자 컴파일되지 않습니다. 'PDF')

uses SOAPAPI_Unit 
type 
    Extension = SOAPAPI_Unit.Extension; 
.... 
procedure TForm1.Button2Click(Sender: TObject); 
var 
    Ext : Extension; 
begin 
    Document.Extension := pdf; 
end; 

옵션 2 : (컴파일을하지만 객체 심판 설정하지 말 서버 오류)

uses SOAPAPI_Unit 

.... 
procedure TForm1.Button2Click(Sender: TObject); 
var 
    Ext : SOAPAPI_Unit.Extension; 
begin 
    Document.Extension := Ext(0); 
end; 

옵션 3 (재 선언 주를 .pas 파일에 열거를, 그러나 나는 호환되지 않는 유형을 얻을 : 'SOAPAPI_Unit.Extension'와 'formMain.Extension')

uses SOAPAPI_Unit 
type 
    Extension = (pdf, xls, txt, xlsx, docx, doc, xml, png, jpg, gif); 
.... 
procedure TForm1.Button2Click(Sender: TObject); 
var 
    Ext : Extension; 
begin 
    Document.Extension := pdf; 
end; 

옵션 4 (컴파일하지만, 객체 심판 서버에서 오류를 설정하지 얻을) 기본적으로

uses SOAPAPI_Unit 
.... 
procedure TForm1.Button2Click(Sender: TObject); 
var 
    Ext : Extension; 
begin 
    Document.Extension := Ext.pdf; 
end; 
+0

우리가이 [mcve] –

+0

문서는 다른 식별자와 충돌되지 않을 열거 상수 이름을 사용하는 것이 좋습니다하시기 바랍니다 볼 수 있습니다. 식별자가 동일한 범위 내의 다른 목적으로 사용되면 이름 충돌이 발생합니다. 또한 열거 유형에 더 고유 한 이름을 사용하십시오. –

+4

나는 또한 당신이 쓴 것을 믿기가 어렵다고 생각합니다. 나는 옵션 2와 4가 쓰여지는대로 컴파일된다는 약간 회의적이다. 추측해야만한다면 enum이 범위가 지정된 열거 형으로 선언되어 있고 유닛을 사용하고 전체 범위의 값을 참조해야한다고 생각했습니다. 'Document.Extension : = Extension.pdf' 또는'Extension'이 다른 것과 충돌하면'Document.Extension : = SOAPAPI_Unit.Extension.pdf. 유형을 다시 선언하려고 시도하면 결코 작동하지 않습니다. 확실히 그것이 왜 그렇게인지 주셔서 감사합니다. 짐작하지 마라. 이해하려고 노력 해봐. –

답변

5

는 WSDL-가져 오기는 활성 범위의 열거로 코드를 생성합니다. 이렇게하려면 모든 enum 앞에 해당 유형이 있어야합니다. 실제 가져 오기 파일을 모른 채 나는이 다음 작업을해야 같아요

uses SOAPAPI_Unit 
.... 
procedure TForm1.Button2Click(Sender: TObject); 
begin 
    Document.Extension := Extension.pdf; 
end; 
+0

고맙습니다. 아래의 내 솔루션과 마찬가지로 작동합니다. – Stingray