⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 随便说说最近项目中的三层架构吧。讲点实际的东西。我最讨厌空讲道理。网上讲道理的太多了
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, DBGrids, DB, DBClient, MConnect,AppEvnts,SConnect,
  ComObj,
  CardServer_TLB,
  userVO, ValueObjectUnit, TValueObjectListUnit;


type
  TForm1 = class(TForm)
    Button1: TButton;
    ClientDataSet1: TClientDataSet;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    Edit1: TEdit;
    Edit2: TEdit;
    Button2: TButton;
    Edit3: TEdit;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    Button12: TButton;
    Button13: TButton;
    DCOMConnection1: TDCOMConnection;
    Button14: TButton;
    Button15: TButton;
    ds2: TClientDataSet;
    DataSource2: TDataSource;
    Button16: TButton;
    Button17: TButton;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Button18: TButton;
    Button19: TButton;
    Button20: TButton;
    Button21: TButton;
    SocketConnection1: TSocketConnection;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure ClientDataSet1ReconcileError(DataSet: TCustomClientDataSet;
      E: EReconcileError; UpdateKind: TUpdateKind;
      var Action: TReconcileAction);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button14Click(Sender: TObject);
    procedure Button15Click(Sender: TObject);
    procedure Button16Click(Sender: TObject);
    procedure Button17Click(Sender: TObject);
    procedure Button18Click(Sender: TObject);
    procedure Button19Click(Sender: TObject);
    procedure Button20Click(Sender: TObject);
    procedure Button21Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  MyInterface, MyI: IRDMCardServer;
  ii: IRDMCardServerDisp;
  pp: TValueObjectList;
 
implementation
  uses PublicFuncUnit, DataPersistentUnit;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  ProviderName: PAnsiChar;
  siLeng: Shortint;
  sProviderName: String;
  ss : WideString;
  disp: IRDMCardServerDisp;
  rs: TRDMDataSet;
begin
  ClientDataSet1.Close;
  disp := IRDMCardServerDisp( IDispatch(SocketConnection1.GetServer));
  if disp = nil then
  begin
    ShowMessage('error');
    exit;
  end;
  disp.SelectData(Edit1.Text, ss);
  sProviderName := Copy(ss, 1, length(ss));
  ClientDataSet1.ProviderName := Trim(sProviderName);
  ClientDataSet1.RemoteServer := SocketConnection1;
  ClientDataSet1.Open;
  DataSource1.DataSet := ClientDataSet1;
  disp := nil;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  dd: TRDMDataSet;
  ws: WideString;
begin
  ClientDataSet1.Close;
  dd := TRDMDataSet.Create(SocketConnection1);
  if not dd.BeginTrans(ws) then
    exit;
  ShowMessage(ws);
  dd.UpdateRDMDS(Edit3.Text, ws);
  ShowMessage(ws);
  ws := '';
  if not dd.CommitTrans(ws) then
    exit;
  ShowMessage(ws);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  ClientDataSet1.ApplyUpdates(0);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  DCOMConnection1.Close;
  if DCOMConnection1.Connected then
    ShowMessage('Error')
  else
    ShowMessage('OK!');
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
 // DCOMConnection1.Open;
   SocketConnection1.Open;

end;

procedure TForm1.ClientDataSet1ReconcileError(
  DataSet: TCustomClientDataSet; E: EReconcileError;
  UpdateKind: TUpdateKind; var Action: TReconcileAction);
begin
  ShowMessage(e.Message);
  Action := raCorrect;
end;

procedure TForm1.Button6Click(Sender: TObject);
var
  CPName: PAnsiChar;
  clength: Cardinal;
begin
{
  New(CPName);
  clength := MAX_COMPUTERNAME_LENGTH;
  GetComputerName(CPName, clength);
  if not DCOMConnection1.Connected then
    DCOMConnection1.ComputerName := Edit2.Text;
  DCOMConnection1.GetServer.QueryInterface(IID_IMyInter, MyInterface);
  MyInterface.CustomerInfo(CPName);
  MyInterface := nil;
  FreeMem(CPName);  }
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
{
  if not ClientDataSet1.Active then
    Exit;
  if not DCOMConnection1.Connected then
    DCOMConnection1.ComputerName := Edit2.Text;
  DCOMConnection1.GetServer.QueryInterface(IID_IMyInter, MyInterface);
  MyInterface.CloseDataset(ClientDataSet1.ProviderName);
  MyInterface := nil; }
end;

procedure TForm1.Button8Click(Sender: TObject);
{
var
  MyThrd: MyThread;  }
begin
{
  ClientDataSet1.Close;
  DataSource1.DataSet := nil;
  MyThrd := MyThread.Create(True);
  MyThrd.ServerName := DCOMConnection1.ServerName;
  MyThrd.ServerGUIID := DCOMConnection1.ServerGUID;
  MyThrd.FreeOnTerminate := True;
  MyThrd.Resume;
  DataSource1.DataSet := ClientDataSet1;
  }
end;

procedure TForm1.Button9Click(Sender: TObject);
var
  ProviderName: WideString;

begin
  ClientDataSet1.Close;
  ClientDataSet1.RemoteServer := DCOMConnection1;
//  DCOMConnection1.GetServer.QueryInterface(IID_IMyInter, MyI);
 // MyI := DCOMConnection1.GetServer as IDataPersistent;
  MyI.SelectData(Form1.Edit1.Text, ProviderName);
  ClientDataSet1.ProviderName := Trim(ProviderName);
  ClientDataSet1.Open;
  DataSource1.DataSet := ClientDataSet1;
  //MyI.CloseDataset(ClientDataSet1.ProviderName);
  MyI := nil;
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
  ClientDataSet1.Close;
  ClientDataSet1.ProviderName := 'DSP1';
  ClientDataSet1.Open;
end;

procedure TForm1.Button11Click(Sender: TObject);
var
  ProviderName: PAnsiChar;
  siLeng: Shortint;
  sProviderName: String;
  a, b : Olevariant;
  ss : WideString;
begin
  ClientDataSet1.Close;
 // MyInterface := DCOMConnection1.GetServer as IDataPersistent;
  //MyInterface.SelectData(Edit1.Text, ProviderName, siLeng);
  //ii :=(DCOMConnection1.GetServer as IDataPersistent);
 // (DCOMConnection1.GetServer as IRDMDataPersistent).SelectData(Edit1.Text, ss);
 // ii.SelectData(Edit1.Text, ProviderName, siLeng);
  ClientDataSet1.ProviderName := Trim(ss);
  ClientDataSet1.RemoteServer := DCOMConnection1;
  if siLeng <> 0  then
    ClientDataSet1.Open;
  DataSource1.DataSet := ClientDataSet1;
  MyInterface := nil;
end;


procedure TForm1.Button12Click(Sender: TObject);
var
  ss : WideString;
  disp : IDispatch;
begin
 // ii := IDataPersistentDisp( IDispatch(DCOMConnection1.GetServer) );

  //ii.SelectDataEx(WideString(Edit1.Text), ss);

end;

procedure TForm1.Button13Click(Sender: TObject);
var
  ProviderName: PAnsiChar;
  siLeng: Shortint;
  sProviderName: String;
  ss : WideString;
begin
  ClientDataSet1.Close;

  //DCOMConnection1.GetServer.QueryInterface(IID_IDataPersistent, MyInterface);

  if MyInterface = nil then
  begin
    ShowMessage('error');
    exit;
  end;
 // (DCOMConnection1.GetServer as IDataPersistent).SelectDataEx(Edit1.Text, ss);
  MyInterface.SelectData(Edit1.Text, ss);
  sProviderName := Copy(ss, 1, siLeng);
  ShowMessage(sProviderName);
  ClientDataSet1.ProviderName := Trim(sProviderName);
  ClientDataSet1.RemoteServer := DCOMConnection1;
  if siLeng <> 0  then
    ClientDataSet1.Open;
  DataSource1.DataSet := ClientDataSet1;
  MyInterface := nil;
end;


procedure TForm1.Button14Click(Sender: TObject);
var
  ProviderName: PAnsiChar;
  siLeng: Shortint;
  sProviderName: String;
  ss : WideString;
   dd: TRDMDataSet;
begin
  ClientDataSet1.Close;
  //DCOMConnection1.GetServer.QueryInterface(IID_IDataPersistent, MyInterface);
  if MyInterface = nil then
  begin
    ShowMessage('error');
    exit;
  end;
 // dd := TRDMDataSet.Create(MyInterface,DCOMConnection1 );
 // dd.SelectRDMDS(Edit1.Text, ClientDataSet1);
 // MyInterface := nil;
end;

procedure TForm1.Button15Click(Sender: TObject);
var
  ProviderName: PAnsiChar;
  siLeng: Shortint;
  sProviderName: String;
  ss : WideString;
  dd: TRDMDataSet;
begin
  ds2.Close;
//  DCOMConnection1.GetServer.QueryInterface(IID_IDataPersistent, MyInterface);
  if MyInterface = nil then
  begin
    ShowMessage('error');
    exit;
  end;

  //dd := TRDMDataSet.Create(MyInterface,DCOMConnection1 );
  //dd.SelectRDMDS(Edit1.Text, ClientDataSet1);
end;

procedure TForm1.Button16Click(Sender: TObject);
var
  ProviderName: PAnsiChar;
  siLeng: Shortint;
  sProviderName: String;
  ss : WideString;
  oo, pp, a1: olevariant;
  i, j, k: integer;

  df: TValueObjectList;
begin
  ClientDataSet1.Close;
 // DCOMConnection1.GetServer.QueryInterface(IID_IBODataPersistent, MyInterface2);
 {
  if MyInterface2 = nil then
  begin
    ShowMessage('error');
    exit;
  end;

  MyInterface2.getvoList('','', oo);
      }
  for i:=0 to VarArrayHighBound(oo,1) do
  begin
    pp := oo[i];
    if not VarIsArray(pp) then
      Exit;



    for j:=0 to VarArrayHighBound(pp,1) do
    begin
      a1 := pp[j];

      for k:=0 to VarArrayHighBound(a1,1) do
      begin
        ShowMessage( String(a1[k]) );
      end;
    end;


  end;

end;


procedure TForm1.Button17Click(Sender: TObject);
var
  oo: OleVariant;
  i_i: integer;
  ss: TValueObject;
begin
  {
  ClientDataSet1.Close;
 { DCOMConnection1.GetServer.QueryInterface(IID_IBODataPersistent, MyInterface2);

  if MyInterface2 = nil then
  begin
    ShowMessage('error');
    exit;
  end;

  MyInterface2.getvoList('TUserBO', '' , oo);   }
 {
  pp := TValueObjectList.Create;
  pp.OLEToDS(oo);

  dataSource1.DataSet := pp.pDataSet;   }

  {

  if assigned(ss) then
    ShowMessage(ss.ClassName)
  else
    showmessage('ero');
  exit;  }

   {
  pp.pVOClassName := TUserVO;
  pp.POLEDataList := oo;

  ss := TUserVO(pp.GetItem(1));
  if ss<>nil then
  ShowMessage((ss as TUserVO).pName);  }


end;

procedure TForm1.Button18Click(Sender: TObject);
begin
  dataSource1.DataSet.Append;
end;

procedure TForm1.Button19Click(Sender: TObject);
begin     {
  if pp.pDataSet.State in [dsEdit, dsInsert] then
  begin
    pp.pDataSet.Fields[0].Value:= Edit4.Text;
    pp.pDataSet.Fields[1].Value:= Edit5.Text;
    pp.pDataSet.Fields[2].Value:= Edit6.Text;
    pp.pDataSet.Post;
  end
  else
    pp.pDataSet.Edit;    }
end;

procedure TForm1.Button20Click(Sender: TObject);
begin
{ pp.pDataSet.Open;
 pp.pDataSet.Edit; }
end;

procedure TForm1.Button21Click(Sender: TObject);
var
  j: Integer;
  oo: OleVariant;
  userVO: TUserVO;
begin
  //changecount > 0 , delta is not null .
  {
  pp := TValueObjectList.Create;

  if pp.pDataSet.ChangeCount>0 then
    ShowMessage('ok')
  else
    ShowMessage('no data');

  userVO :=TUserVO.Create;
  userVO.pID := EDIT3.Text;
  userVO.pName := Edit4.Text;
  userVO.pPwd := Edit5.Text;
  pp.AddItem(1,userVO);    }
end;


end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -