2017-11-20 1 views
-1

여러분 안녕하세요, 오늘 전에 .NET 라이브러리를 사용한 적이 없다고 말하기 시작합니다..NET 모호한 일치가 발견되었습니다.

머리말

내가 고객의 라벨을 인쇄하기 위해 (액티브 X를 통해) NiceLabel 6를 사용하는 응용 프로그램을했습니다. NiceLabel (2017)의 새 버전은 이제 더 이상이 기술을 지원하지 않지만 .NET에서만 작동합니다. 저는 CrystalNet .Net 런타임 라이브러리 (Delphi 용)를 통해 .NET 라이브러리를 읽는 .pas 유닛을 만들었습니다. 델파이

에서 이용

.NET

나는 CrystalNet 제품에서 생성 된 일단의 .pas 기기를 사용하는 간단한 델파이 프로젝트를 만들었습니다. 여기에 소스 :

unit Main; 

interface 

uses 
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, 
    System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, 
    Vcl.StdCtrls, SDK.NET.Interface_; 

type 
    TfrmMain = class(TForm) 
    btnLoadLabel: TButton; 
    procedure btnLoadLabelClick(Sender: TObject); 
    private 
    NLLabel: TILabel; 
    NLLabelOle: OleVariant; 
    public 
    { Public declarations } 
    end; 

const 
    LabelPath = 'C:\Users\Eros\Desktop\nicelabel 2017\codesol\labels\'; 

var 
    frmMain: TfrmMain; 

implementation 

{$R *.dfm} 

procedure TfrmMain.btnLoadLabelClick(Sender: TObject); 
begin 
    NLLabel := SDK.NET.Interface_.TILabel.Create(NLLabelOle); 
end; 

end. 

델파이가 제대로 컴파일 문제 그러나 나는이 오류를 얻을 IB 실행하면

enter image description here

나는이의 영어 버전을 얻을 수 없다 오류가 있지만 다음과 비슷한 것으로 생각됩니다. "모호한 일치를 찾았습니다." 문제가 무엇인지 이해할 수 없으며 .NET의 주제를 매우 잘 모릅니다.

저는 CrystalNet에서 만든 단위가 올바르지 않다고 생각하지만 이해가되지 않습니다. 여기 명확히하기 위해 일부 기기가 약 3.000 선 길이 생성, 이동

uses 
    CNClrLib.Host, CNClrLib.Core, CNClrLib.Host.Utils, CNClrLib.Collections, 
    CNClrLib.System, CNClrLib.IO, CNClrLib.Runtime, CNClrLib.Xml, 
    CNClrLib.Drawing, CNClrLib.TypeNames, SDK.NET.Interface_Enums, 
    SDK.NET.Interface_Const; 

type 
{ Forward Declarations } 

    TIVariable = Class; 
    TIFieldList = Class; 
    TIDocumentRevisionArray = Class; 
    TIDocument = Class; 
    TIField = Class; 
    TILabelObjectList = Class; 
    TILabelSettings = Class; 
    TIPrintSettings = Class; 
    TIVariableList = Class; 
    TILabel = Class; 
    TILabelPreviewSettings = Class; 
    TIPrintRequest = Class; 
    TIPrintToGraphicsSettings = Class; 
    TIPrintToGraphicsResult = Class; 
    TILabelObject = Class; 
    TIPageLayout = Class; 
    TIControlCenterProperties = Class; 
    TIPrintServiceSettings = Class; 
    TIDocumentStorage = Class; 
    TISolution = Class; 
    TSDKException = Class; 
    TIPrintEngine = Class; 

    ... 

{ TILabel } 

    TILabel = Class(TClrBaseObject) 
    private 
     function Get_Author: String; 
     function Get_DataSets: _GenericList; 
     function Get_Description: String; 
     function Get_Directory: String; 
     function Get_FileName: String; 
     function Get_FilePath: String; 
     function Get_LabelObjects: TILabelObjectList; 
     function Get_LabelSettings: TILabelSettings; 
     function Get_PrintSettings: TIPrintSettings; 
     function Get_Revision: Integer; 
     function Get_Title: String; 
     function Get_Variables: TIVariableList; 
    public 
     constructor Create(AObjVar: OleVariant); 
     function Clone: TILabel; 
     procedure CreateLabelVariant(outputFileName: String; printTimeDataSourceNames: _StringArray); 
     function CreateXMLLabelInformation: _XDocument; 
     procedure EndSessionPrint(sessionPrintRequest: TISessionPrintRequest); 
     function GetLabelPreview(settings: TILabelPreviewSettings): Olevariant; 
     function Print(quantity: Integer): TIPrintRequest; 
     function PrintAll: TIPrintRequest; 
     function PrintAllAsync: TIPrintRequest; 
     function PrintAsync(quantity: Integer): TIPrintRequest; 
     function PrintToGraphics(settings: TIPrintToGraphicsSettings): TIPrintToGraphicsResult; 
     procedure SaveAs(fileName: String; overwrite: Boolean); 
     procedure SessionPrint(quantity: Integer; sessionPrintRequest: TISessionPrintRequest); 
     procedure SetVariableValues(variablesList: String; ignoreMissingVariables: Boolean); 
     procedure SetVariableValuesXml(variablesList: String; ignoreMissingVariables: Boolean); 
     function StartSessionPrint: TISessionPrintRequest; 
     procedure StoreToPrinter(labelName: String; storeVariant: String); 
     property Author: String read Get_Author; 
     property DataSets: _GenericList read Get_DataSets; 
     property Description: String read Get_Description; 
     property Directory: String read Get_Directory; 
     property FileName: String read Get_FileName; 
     property FilePath: String read Get_FilePath; 
     property LabelObjects: TILabelObjectList read Get_LabelObjects; 
     property LabelSettings: TILabelSettings read Get_LabelSettings; 
     property PrintSettings: TIPrintSettings read Get_PrintSettings; 
     property Revision: Integer read Get_Revision; 
     property Title: String read Get_Title; 
     property Variables: TIVariableList read Get_Variables; 
    end; 


... 

{ TILabel } 

constructor TILabel.Create(AObjVar: OleVariant); 
begin 
    inherited Create(AObjVar); 
end; 

function TILabel.Clone: TILabel; 
begin 
    Result := TILabel(TClrBaseObject.CreateInstance(InvokeMethod('Clone'))); 
end; 

procedure TILabel.CreateLabelVariant(outputFileName: String; printTimeDataSourceNames: _StringArray); 
begin 
    InvokeMethod('CreateLabelVariant', [S_CnClr_System_String, sC_Sys_StringArray], [outputFileName, printTimeDataSourceNames]); 
end; 

function TILabel.CreateXMLLabelInformation: _XDocument; 
begin 
    Result := CoXDocument.Wrap(InvokeMethod('CreateXMLLabelInformation')); 
end; 

procedure TILabel.EndSessionPrint(sessionPrintRequest: TISessionPrintRequest); 
begin 
    InvokeMethod('EndSessionPrint', [sC_NicSDK_ISessionPrintRequest], [GetDefaultIntf(sessionPrintRequest)]); 
end; 

function TILabel.GetLabelPreview(settings: TILabelPreviewSettings): Olevariant; 
begin 
    Result := InvokeMethod('GetLabelPreview', [sC_NicSDK_ILabelPreviewSettings], [GetDefaultIntf(settings)]); 
end; 

function TILabel.Print(quantity: Integer): TIPrintRequest; 
var 
    objVar: OleVariant; 
begin 
    Result := nil; 
    objVar := InvokeMethod('Print', [S_CnClr_System_Int32], [quantity]); 
    if VarIsAssigned(objVar) then 
     Result := TIPrintRequest(TClrBaseObject.Create(objVar)); 
end; 

function TILabel.PrintAll: TIPrintRequest; 
begin 
    Result := TIPrintRequest(TClrBaseObject.CreateInstance(InvokeMethod('PrintAll'))); 
end; 

function TILabel.PrintAllAsync: TIPrintRequest; 
begin 
    Result := TIPrintRequest(TClrBaseObject.CreateInstance(InvokeMethod('PrintAllAsync'))); 
end; 

function TILabel.PrintAsync(quantity: Integer): TIPrintRequest; 
var 
    objVar: OleVariant; 
begin 
    Result := nil; 
    objVar := InvokeMethod('PrintAsync', [S_CnClr_System_Int32], [quantity]); 
    if VarIsAssigned(objVar) then 
     Result := TIPrintRequest(TClrBaseObject.Create(objVar)); 
end; 

function TILabel.PrintToGraphics(settings: TIPrintToGraphicsSettings): TIPrintToGraphicsResult; 
var 
    objVar: OleVariant; 
begin 
    Result := nil; 
    objVar := InvokeMethod('PrintToGraphics', [sC_NicSDK_IPrintToGraphicsSettings], [GetDefaultIntf(settings)]); 
    if VarIsAssigned(objVar) then 
     Result := TIPrintToGraphicsResult(TClrBaseObject.Create(objVar)); 
end; 

procedure TILabel.SaveAs(fileName: String; overwrite: Boolean); 
begin 
    InvokeMethod('SaveAs', [S_CnClr_System_String, S_CnClr_System_Boolean], [fileName, overwrite]); 
end; 

procedure TILabel.SessionPrint(quantity: Integer; sessionPrintRequest: TISessionPrintRequest); 
begin 
    InvokeMethod('SessionPrint', [S_CnClr_System_Int32, sC_NicSDK_ISessionPrintRequest], [quantity, GetDefaultIntf(sessionPrintRequest)]); 
end; 

procedure TILabel.SetVariableValues(variablesList: String; ignoreMissingVariables: Boolean); 
begin 
    InvokeMethod('SetVariableValues', [S_CnClr_System_String, S_CnClr_System_Boolean], [variablesList, ignoreMissingVariables]); 
end; 

procedure TILabel.SetVariableValuesXml(variablesList: String; ignoreMissingVariables: Boolean); 
begin 
    InvokeMethod('SetVariableValuesXml', [S_CnClr_System_String, S_CnClr_System_Boolean], [variablesList, ignoreMissingVariables]); 
end; 

function TILabel.StartSessionPrint: TISessionPrintRequest; 
begin 
    Result := TISessionPrintRequest(TClrBaseObject.CreateInstance(InvokeMethod('StartSessionPrint'))); 
end; 

procedure TILabel.StoreToPrinter(labelName: String; storeVariant: String); 
begin 
    InvokeMethod('StoreToPrinter', [S_CnClr_System_String, S_CnClr_System_String], [labelName, storeVariant]); 
end; 

function TILabel.Get_Author: String; 
begin 
    Result := GetPropertyValue('Author'); 
end; 

function TILabel.Get_DataSets: _GenericList; 
begin 
    Result := CoGenericList.Wrap(GetPropertyValue('DataSets')); 
end; 

function TILabel.Get_Description: String; 
begin 
    Result := GetPropertyValue('Description'); 
end; 

function TILabel.Get_Directory: String; 
begin 
    Result := GetPropertyValue('Directory'); 
end; 

function TILabel.Get_FileName: String; 
begin 
    Result := GetPropertyValue('FileName'); 
end; 

function TILabel.Get_FilePath: String; 
begin 
    Result := GetPropertyValue('FilePath'); 
end; 

function TILabel.Get_LabelObjects: TILabelObjectList; 
var 
    objVar: OleVariant; 
begin 
    Result := nil; 
    objVar := GetPropertyValue('LabelObjects'); 
    if VarIsAssigned(objVar) then 
     Result := TILabelObjectList(TClrBaseObject.Create(objVar)); 
end; 

function TILabel.Get_LabelSettings: TILabelSettings; 
var 
    objVar: OleVariant; 
begin 
    Result := nil; 
    objVar := GetPropertyValue('LabelSettings'); 
    if VarIsAssigned(objVar) then 
     Result := TILabelSettings(TClrBaseObject.Create(objVar)); 
end; 

function TILabel.Get_PrintSettings: TIPrintSettings; 
var 
    objVar: OleVariant; 
begin 
    Result := nil; 
    objVar := GetPropertyValue('PrintSettings'); 
    if VarIsAssigned(objVar) then 
     Result := TIPrintSettings(TClrBaseObject.Create(objVar)); 
end; 

function TILabel.Get_Revision: Integer; 
begin 
    Result := GetPropertyValue('Revision'); 
end; 

function TILabel.Get_Title: String; 
begin 
    Result := GetPropertyValue('Title'); 
end; 

function TILabel.Get_Variables: TIVariableList; 
var 
    objVar: OleVariant; 
begin 
    Result := nil; 
    objVar := GetPropertyValue('Variables'); 
    if VarIsAssigned(objVar) then 
     Result := TIVariableList(TClrBaseObject.Create(objVar)); 
end; 

답변

0

닷넷 컴파일러가 같은 이름을 가진 두 개 이상의 객체이며, 컴파일러는 '아무튼 경우 경우 모호한 참조 오류가 발생합니다 어느 것을 골라야하는지 알지 못한다. 중복 된 네임 스페이스 또는 개체 이름을 확인하십시오. 다른 방법으로 개체를 참조하기 전에 네임 스페이스를 사용하여이 문제를 방지 할 수 있습니다. 예 : namespace.object

관련 문제