Delphi调用COM

delphi6/7

准备

1. Windows 系统引入

运行 -> Regsvr32 x:/FCV.dll

2. Delphi 引入

Project -> Import Type Library ->“FCV 1.1 Type Library (Version1.1)”

code

unit
    UntMain; interface uses Windows, Messages, SysUtils, Variants, Classes,
	Graphics, Controls, Forms, Dialogs, StdCtrls, OleServer, FCVLib_TLB;

type
  TfrmMain = class(TForm)
	lblFileVal: TLabel;
	lblFcvVal: TLabel;
	edtFilePath: TEdit;
	btnGenFCN: TButton;
	edtFCVpath: TEdit;
	btnCalFileValue: TButton;
	btnReadFCV: TButton;
	btnCreatFCV: TButton;
	UCRC321: TUCRC32;
	procedure btnCreatFCVClick(Sender: TObject);
	procedure btnGenFCNClick(Sender: TObject);
	procedure btnCalFileValueClick(Sender: TObject);
	procedure btnReadFCVClick(Sender: TObject);
  private
      { Private declarations }
      myFCV: IUCRC32;
  public
      { Public declarations }
      instanceFlag: Boolean;

end;

var
    frmMain: TfrmMain;  

implementation
    {$R *.dfm}

	procedure TfrmMain.btnCreatFCVClick(Sender: TObject);
	begin
		myFCV:= CoUCRC32.Create;
		instanceFlag := True;
	end;

	procedure TfrmMain.btnGenFCNClick(Sender: TObject);
	var
	    saveFile, checkFile: WideString; i112: Integer;
	begin
	    //
		if not instanceFlag then exit;
		saveFile:= edtFCVpath.Text;
		checkFile:= edtFilePath.Text;
		i112:= myFCV.SaveFCN(saveFile, checkFile);
		ShowMessage(inttostr(i112));
	end;

	procedure TfrmMain.btnCalFileValueClick(Sender: TObject);
	var
	    filePath: WideString;
		retVal: DWORD;
	begin
	    if not instanceFlag then exit;
		filePath:= edtFilePath.Text;
		retVal:= myFCV.CalCRC32(filePath);
		lblFileVal.Caption:= IntToHex(retVal, 8);
	end;

	procedure TfrmMain.btnReadFCVClick(Sender: TObject);
	var
	  filePath: WideString;
		retVal: DWORD;
	begin
	//
		if not instanceFlag then exit;
		filePath:= edtFCVpath.Text;
		retVal:= myFCV.ReadFCN(filePath);
		lblFcvVal.Caption:= IntToHex(retVal, 8);
	end;

end.