그래서 델파이를 사용하여 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;
우리가이 [mcve] –
문서는 다른 식별자와 충돌되지 않을 열거 상수 이름을 사용하는 것이 좋습니다하시기 바랍니다 볼 수 있습니다. 식별자가 동일한 범위 내의 다른 목적으로 사용되면 이름 충돌이 발생합니다. 또한 열거 유형에 더 고유 한 이름을 사용하십시오. –
나는 또한 당신이 쓴 것을 믿기가 어렵다고 생각합니다. 나는 옵션 2와 4가 쓰여지는대로 컴파일된다는 약간 회의적이다. 추측해야만한다면 enum이 범위가 지정된 열거 형으로 선언되어 있고 유닛을 사용하고 전체 범위의 값을 참조해야한다고 생각했습니다. 'Document.Extension : = Extension.pdf' 또는'Extension'이 다른 것과 충돌하면'Document.Extension : = SOAPAPI_Unit.Extension.pdf. 유형을 다시 선언하려고 시도하면 결코 작동하지 않습니다. 확실히 그것이 왜 그렇게인지 주셔서 감사합니다. 짐작하지 마라. 이해하려고 노력 해봐. –