468 lines
12 KiB
ObjectPascal
468 lines
12 KiB
ObjectPascal
![]() |
unit U_ZdyAttachmentBJ;
|
|||
|
|
|||
|
interface
|
|||
|
|
|||
|
uses
|
|||
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|||
|
Dialogs, cxGraphics, cxCustomData, cxStyles, cxTL, cxMaskEdit, DB, ADODB,
|
|||
|
cxInplaceContainer, cxDBTL, cxControls, cxTLData, ComCtrls, ToolWin,
|
|||
|
StdCtrls, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, DBClient,
|
|||
|
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, ExtCtrls,
|
|||
|
cxSplitter, cxGridLevel, cxClasses, cxGridCustomView, cxGrid,
|
|||
|
cxGridCustomPopupMenu, cxGridPopupMenu, RM_Dataset, RM_System, RM_Common,
|
|||
|
RM_Class, RM_GridReport, IdBaseComponent, IdComponent, IdTCPConnection,
|
|||
|
IdTCPClient, IdFTP,ShellAPI,IniFiles, cxCheckBox, cxCalendar,
|
|||
|
cxButtonEdit, cxTextEdit, cxDBLookupComboBox, RM_e_Xls, RM_E_llPDF, cxPC;
|
|||
|
|
|||
|
type
|
|||
|
TfrmZdyAttachmentCB = class(TForm)
|
|||
|
ToolBar1: TToolBar;
|
|||
|
TBRafresh: TToolButton;
|
|||
|
TBDel: TToolButton;
|
|||
|
ADOQueryTemp: TADOQuery;
|
|||
|
ADOQueryCmd: TADOQuery;
|
|||
|
Panel1: TPanel;
|
|||
|
ToolButton2: TToolButton;
|
|||
|
ADOQueryMain: TADOQuery;
|
|||
|
ToolButton1: TToolButton;
|
|||
|
Label3: TLabel;
|
|||
|
custNo: TEdit;
|
|||
|
cxGrid2: TcxGrid;
|
|||
|
Tv2: TcxGridDBTableView;
|
|||
|
cxGridLevel1: TcxGridLevel;
|
|||
|
cxGridPopupMenu2: TcxGridPopupMenu;
|
|||
|
DS_Main: TDataSource;
|
|||
|
CDS_Main: TClientDataSet;
|
|||
|
TBADD: TToolButton;
|
|||
|
v2Column6: TcxGridDBColumn;
|
|||
|
v2Column1: TcxGridDBColumn;
|
|||
|
v2Column2: TcxGridDBColumn;
|
|||
|
v2Column3: TcxGridDBColumn;
|
|||
|
v2Column5: TcxGridDBColumn;
|
|||
|
v2Column7: TcxGridDBColumn;
|
|||
|
v2Column8: TcxGridDBColumn;
|
|||
|
v2Column9: TcxGridDBColumn;
|
|||
|
v2Column10: TcxGridDBColumn;
|
|||
|
TBedit: TToolButton;
|
|||
|
v2Column11: TcxGridDBColumn;
|
|||
|
v2DEFStr7: TcxGridDBColumn;
|
|||
|
v2Column12: TcxGridDBColumn;
|
|||
|
v2Column13: TcxGridDBColumn;
|
|||
|
Label5: TLabel;
|
|||
|
begdate: TDateTimePicker;
|
|||
|
Label6: TLabel;
|
|||
|
enddate: TDateTimePicker;
|
|||
|
v2Column4: TcxGridDBColumn;
|
|||
|
custName: TEdit;
|
|||
|
Label2: TLabel;
|
|||
|
v2Column15: TcxGridDBColumn;
|
|||
|
ToolButton5: TToolButton;
|
|||
|
ADOQueryPrint: TADOQuery;
|
|||
|
RM1: TRMGridReport;
|
|||
|
RMllPDFExport1: TRMllPDFExport;
|
|||
|
RMXLSExport1: TRMXLSExport;
|
|||
|
RMDBDataSet1: TRMDBDataSet;
|
|||
|
v2Column18: TcxGridDBColumn;
|
|||
|
v2Column19: TcxGridDBColumn;
|
|||
|
v2Column14: TcxGridDBColumn;
|
|||
|
v2Column16: TcxGridDBColumn;
|
|||
|
v2Column17: TcxGridDBColumn;
|
|||
|
v2Column20: TcxGridDBColumn;
|
|||
|
v2Column21: TcxGridDBColumn;
|
|||
|
v2Column22: TcxGridDBColumn;
|
|||
|
v2Column28: TcxGridDBColumn;
|
|||
|
Tchk: TToolButton;
|
|||
|
Tnochk: TToolButton;
|
|||
|
cxTabControl1: TcxTabControl;
|
|||
|
v2Column23: TcxGridDBColumn;
|
|||
|
v2Column24: TcxGridDBColumn;
|
|||
|
ToolButton3: TToolButton;
|
|||
|
TCopy: TToolButton;
|
|||
|
v2Column25: TcxGridDBColumn;
|
|||
|
Panel4: TPanel;
|
|||
|
Label14: TLabel;
|
|||
|
Panel10: TPanel;
|
|||
|
Image2: TImage;
|
|||
|
Button1: TButton;
|
|||
|
RadioGroup1: TRadioGroup;
|
|||
|
P_Code: TEdit;
|
|||
|
Label1: TLabel;
|
|||
|
P_CodeName: TEdit;
|
|||
|
Label4: TLabel;
|
|||
|
TBClosexx: TToolButton;
|
|||
|
procedure FormDestroy(Sender: TObject);
|
|||
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|||
|
procedure TBClosexxClick(Sender: TObject);
|
|||
|
procedure TBDelClick(Sender: TObject);
|
|||
|
procedure FormShow(Sender: TObject);
|
|||
|
procedure TBRafreshClick(Sender: TObject);
|
|||
|
procedure ToolButton2Click(Sender: TObject);
|
|||
|
procedure custNoChange(Sender: TObject);
|
|||
|
procedure ToolButton1Click(Sender: TObject);
|
|||
|
procedure TBeditClick(Sender: TObject);
|
|||
|
procedure TBADDClick(Sender: TObject);
|
|||
|
procedure FormCreate(Sender: TObject);
|
|||
|
procedure ToolButton5Click(Sender: TObject);
|
|||
|
procedure TchkClick(Sender: TObject);
|
|||
|
procedure TnochkClick(Sender: TObject);
|
|||
|
procedure cxTabControl1Change(Sender: TObject);
|
|||
|
procedure ToolButton3Click(Sender: TObject);
|
|||
|
procedure TCopyClick(Sender: TObject);
|
|||
|
procedure Tv2CellDblClick(Sender: TcxCustomGridTableView;
|
|||
|
ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
|
|||
|
AShift: TShiftState; var AHandled: Boolean);
|
|||
|
procedure Image2Click(Sender: TObject);
|
|||
|
procedure Button1Click(Sender: TObject);
|
|||
|
private
|
|||
|
|
|||
|
{ Private declarations }
|
|||
|
procedure InitGrid();
|
|||
|
procedure SetStatus();
|
|||
|
public
|
|||
|
fkhType:string;
|
|||
|
Fmanage:string;
|
|||
|
canshu1:string;
|
|||
|
end;
|
|||
|
|
|||
|
var
|
|||
|
frmZdyAttachmentCB: TfrmZdyAttachmentCB;
|
|||
|
|
|||
|
implementation
|
|||
|
uses
|
|||
|
U_DataLink,U_Fun10,U_ZDYHelp,
|
|||
|
U_ZdyAttachmentBJ_Edit;
|
|||
|
|
|||
|
{$R *.dfm}
|
|||
|
|
|||
|
procedure TfrmZdyAttachmentCB.SetStatus();
|
|||
|
begin
|
|||
|
TBedit.Visible:=false;
|
|||
|
Tbdel.Visible:=false;
|
|||
|
Tchk.Visible:=false;
|
|||
|
Tnochk.Visible:=false;
|
|||
|
|
|||
|
IF trim(canshu1)='ҵ<><D2B5>Ա' then
|
|||
|
begin
|
|||
|
case cxTabControl1.TabIndex of
|
|||
|
0:begin
|
|||
|
TBedit.Visible:=true;
|
|||
|
Tbdel.Visible:=true;
|
|||
|
end;
|
|||
|
1:begin
|
|||
|
// tbcdel.Visible:=true;
|
|||
|
end;
|
|||
|
end;
|
|||
|
end
|
|||
|
else
|
|||
|
begin
|
|||
|
case cxTabControl1.TabIndex of
|
|||
|
0:begin
|
|||
|
TBedit.Visible:=true;
|
|||
|
Tbdel.Visible:=true;
|
|||
|
Tchk.Visible:=true;
|
|||
|
end;
|
|||
|
1:begin
|
|||
|
Tnochk.Visible:=true;
|
|||
|
end;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmZdyAttachmentCB.InitGrid();
|
|||
|
begin
|
|||
|
try
|
|||
|
ADOQueryMain.DisableControls;
|
|||
|
with ADOQueryMain do
|
|||
|
begin
|
|||
|
|
|||
|
Close;
|
|||
|
Filtered:=False;
|
|||
|
SQL.Clear;
|
|||
|
sql.Add('select A.* from KH_CP_BJ A');
|
|||
|
sql.Add(' where A.CRTime>='''+formatdateTime('yyyy-MM-dd',begdate.DateTime)+'''');
|
|||
|
sql.Add(' and A.CRTime<'''+formatdateTime('yyyy-MM-dd',enddate.DateTime+1)+'''');
|
|||
|
IF trim(canshu1)='ҵ<><D2B5>Ա'then
|
|||
|
sql.Add(' and A.Filler='+quotedstr(trim(DName)));
|
|||
|
if cxTabControl1.TabIndex<2 then
|
|||
|
sql.Add('and A.status='''+inttostr(cxTabControl1.TabIndex)+''' ');
|
|||
|
Open;
|
|||
|
end;
|
|||
|
SCreateCDS20(ADOQueryMain,CDS_Main);
|
|||
|
SInitCDSData20(ADOQueryMain,CDS_Main);
|
|||
|
finally
|
|||
|
ADOQueryMain.EnableControls;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
|
|||
|
procedure TfrmZdyAttachmentCB.FormDestroy(Sender: TObject);
|
|||
|
begin
|
|||
|
frmZdyAttachmentCB:=nil;
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmZdyAttachmentCB.FormClose(Sender: TObject; var Action: TCloseAction);
|
|||
|
begin
|
|||
|
Action:=caFree;
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmZdyAttachmentCB.TBClosexxClick(Sender: TObject);
|
|||
|
begin
|
|||
|
WriteCxGrid(self.Caption+'1',Tv2,'<27>ͻ<EFBFBD><CDBB>Զ<EFBFBD><D4B6><EFBFBD>');
|
|||
|
Close;
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmZdyAttachmentCB.TBDelClick(Sender: TObject);
|
|||
|
begin
|
|||
|
if CDS_Main.IsEmpty then Exit;
|
|||
|
if Application.MessageBox('ȷ<><C8B7>Ҫɾ<D2AA><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>','<27><>ʾ',32+4)<>IDYES then Exit;
|
|||
|
|
|||
|
with ADOQueryCmd do
|
|||
|
begin
|
|||
|
Close;
|
|||
|
SQL.Clear;
|
|||
|
sql.Add('delete KH_CP_BJ where BJNO='''+Trim(CDS_Main.fieldbyname('BJNO').AsString)+'''');
|
|||
|
ExecSQL;
|
|||
|
end;
|
|||
|
initgrid();
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmZdyAttachmentCB.FormShow(Sender: TObject);
|
|||
|
begin
|
|||
|
ReadCxGrid(self.Caption+'1',Tv2,'<27>ͻ<EFBFBD><CDBB>Զ<EFBFBD><D4B6><EFBFBD>');
|
|||
|
cxTabControl1.TabIndex:=0;
|
|||
|
SetStatus();
|
|||
|
InitGrid();
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmZdyAttachmentCB.TBRafreshClick(Sender: TObject);
|
|||
|
begin
|
|||
|
InitGrid();
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmZdyAttachmentCB.ToolButton2Click(Sender: TObject);
|
|||
|
begin
|
|||
|
if ADOQueryMain.Active then
|
|||
|
begin
|
|||
|
SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2));
|
|||
|
SCreateCDS20(ADOQueryMain,CDS_Main);
|
|||
|
SInitCDSData20(ADOQueryMain,CDS_Main);
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmZdyAttachmentCB.custNoChange(Sender: TObject);
|
|||
|
begin
|
|||
|
ToolButton2.Click;
|
|||
|
end;
|
|||
|
|
|||
|
|
|||
|
procedure TfrmZdyAttachmentCB.ToolButton1Click(Sender: TObject);
|
|||
|
begin
|
|||
|
if ADOQueryMain.IsEmpty then Exit;
|
|||
|
TcxGridToExcel(self.Caption,cxgrid2);
|
|||
|
// SelExportData(Tv2,ADOQueryMain,'<27>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>');
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmZdyAttachmentCB.TBeditClick(Sender: TObject);
|
|||
|
begin
|
|||
|
IF CDS_main.IsEmpty then exit;
|
|||
|
try
|
|||
|
frmZdyAttachmentBJ_Edit:=TfrmZdyAttachmentBJ_Edit.Create(Application);
|
|||
|
with frmZdyAttachmentBJ_Edit do
|
|||
|
begin
|
|||
|
fkeyNo:=self.cds_main.fieldbyname('BJNO').asstring;
|
|||
|
fType:=1;
|
|||
|
canshu1:=self.canshu1;
|
|||
|
if ShowModal=1 then
|
|||
|
begin
|
|||
|
TBRafresh.Click;
|
|||
|
end;
|
|||
|
end;
|
|||
|
finally
|
|||
|
frmZdyAttachmentBJ_Edit.Free;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmZdyAttachmentCB.TBADDClick(Sender: TObject);
|
|||
|
begin
|
|||
|
try
|
|||
|
frmZdyAttachmentBJ_Edit:=TfrmZdyAttachmentBJ_Edit.Create(Application);
|
|||
|
with frmZdyAttachmentBJ_Edit do
|
|||
|
begin
|
|||
|
fkeyNO:='';
|
|||
|
fType:=0;
|
|||
|
canshu1:=self.canshu1;
|
|||
|
if ShowModal=1 then
|
|||
|
begin
|
|||
|
TBRafresh.Click;
|
|||
|
end;
|
|||
|
end;
|
|||
|
finally
|
|||
|
frmZdyAttachmentBJ_Edit.Free;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmZdyAttachmentCB.FormCreate(Sender: TObject);
|
|||
|
begin
|
|||
|
enddate.Date:=date();
|
|||
|
begdate.Date:=strtodate(formatdateTime('yyyy-MM',enddate.Date)+'-01');
|
|||
|
canshu1:=trim(DParameters2);
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmZdyAttachmentCB.ToolButton5Click(Sender: TObject);
|
|||
|
var
|
|||
|
fPrintFile:string;
|
|||
|
Porderno:string;
|
|||
|
i,j:Integer;
|
|||
|
begin
|
|||
|
Panel4.Left:=(self.Width-Panel4.Width) div 2;
|
|||
|
Panel4.Visible:=true;
|
|||
|
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmZdyAttachmentCB.TchkClick(Sender: TObject);
|
|||
|
begin
|
|||
|
if CDS_Main.IsEmpty then exit;
|
|||
|
try
|
|||
|
with ADOQueryCmd do
|
|||
|
begin
|
|||
|
close;
|
|||
|
sql.Clear;
|
|||
|
sql.Add('update KH_CP_BJ SET status=''1'' ');
|
|||
|
sql.Add('where BJNO='+quotedstr(trim(CDS_Main.fieldbyname('BJNO').AsString)));
|
|||
|
execsql;
|
|||
|
end;
|
|||
|
application.MessageBox('<27><><EFBFBD>˳ɹ<CBB3><C9B9><EFBFBD>','<27><>ʾ<EFBFBD><CABE>Ϣ');
|
|||
|
TBRafresh.Click;
|
|||
|
except
|
|||
|
application.MessageBox('<27><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>','<27><>ʾ<EFBFBD><CABE>Ϣ',0);
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmZdyAttachmentCB.TnochkClick(Sender: TObject);
|
|||
|
begin
|
|||
|
if CDS_Main.IsEmpty then exit;
|
|||
|
try
|
|||
|
with ADOQueryCmd do
|
|||
|
begin
|
|||
|
close;
|
|||
|
sql.Clear;
|
|||
|
sql.Add('update KH_CP_BJ SET status=''0'' ');
|
|||
|
sql.Add('where BJNO='+quotedstr(trim(CDS_Main.fieldbyname('BJNO').AsString)));
|
|||
|
execsql;
|
|||
|
end;
|
|||
|
application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳ɹ<CBB3><C9B9><EFBFBD>','<27><>ʾ<EFBFBD><CABE>Ϣ');
|
|||
|
TBRafresh.Click;
|
|||
|
except
|
|||
|
application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>','<27><>ʾ<EFBFBD><CABE>Ϣ',0);
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmZdyAttachmentCB.cxTabControl1Change(Sender: TObject);
|
|||
|
begin
|
|||
|
SetStatus();
|
|||
|
InitGrid();
|
|||
|
// TBClose.Visible:=True;
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmZdyAttachmentCB.ToolButton3Click(Sender: TObject);
|
|||
|
var
|
|||
|
fPrintFile:string;
|
|||
|
Porderno:string;
|
|||
|
i,j:Integer;
|
|||
|
begin
|
|||
|
if CDS_Main.IsEmpty then Exit;
|
|||
|
fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\<5C><><EFBFBD><EFBFBD><EFBFBD>嵥.rmf' ;
|
|||
|
with ADOQueryPrint do
|
|||
|
begin
|
|||
|
Close;
|
|||
|
sql.Clear;
|
|||
|
sql.Add('select A.*,B.CYMF,B.CYKZ, ');
|
|||
|
sql.Add('FilesOther=(select Top 1 X1.FilesOther from TP_File X1,CP_YDang X2 where X1.WBID=X2.CYID and X2.CYNO=A.P_Code) ');
|
|||
|
sql.Add('from KH_CP_BJ A ');
|
|||
|
sql.Add('left join CP_YDang B on B.CYNO=A.P_Code');
|
|||
|
sql.Add('Where A.BJNO='''+Trim(CDS_Main.fieldbyname('BJNO').AsString)+'''');
|
|||
|
Open;
|
|||
|
end;
|
|||
|
if FileExists(fPrintFile) then
|
|||
|
begin
|
|||
|
RMVariables['dtxz'] :=FormatDateTime('yyyy-mm-dd',date());
|
|||
|
RMVariables['zdr'] :=trim(DName);
|
|||
|
RMVariables['Filler'] :=trim(CDS_Main.fieldbyname('Filler').AsString);
|
|||
|
RM1.LoadFromFile(fPrintFile);
|
|||
|
RM1.ShowReport;
|
|||
|
end else
|
|||
|
begin
|
|||
|
Application.MessageBox(PChar('û<><C3BB><EFBFBD><EFBFBD>'+trim(fPrintFile)),'<27><>ʾ',0);
|
|||
|
exit;
|
|||
|
end;
|
|||
|
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmZdyAttachmentCB.TCopyClick(Sender: TObject);
|
|||
|
begin
|
|||
|
IF CDS_main.IsEmpty then exit;
|
|||
|
try
|
|||
|
frmZdyAttachmentBJ_Edit:=TfrmZdyAttachmentBJ_Edit.Create(Application);
|
|||
|
with frmZdyAttachmentBJ_Edit do
|
|||
|
begin
|
|||
|
fkeyNo:=self.cds_main.fieldbyname('BJNO').asstring;
|
|||
|
fType:=2;
|
|||
|
canshu1:=self.canshu1;
|
|||
|
if ShowModal=1 then
|
|||
|
begin
|
|||
|
TBRafresh.Click;
|
|||
|
end;
|
|||
|
end;
|
|||
|
finally
|
|||
|
frmZdyAttachmentBJ_Edit.Free;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmZdyAttachmentCB.Tv2CellDblClick(
|
|||
|
Sender: TcxCustomGridTableView;
|
|||
|
ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
|
|||
|
AShift: TShiftState; var AHandled: Boolean);
|
|||
|
begin
|
|||
|
TBedit.Click;
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmZdyAttachmentCB.Image2Click(Sender: TObject);
|
|||
|
begin
|
|||
|
Panel4.Visible:=false;
|
|||
|
end;
|
|||
|
|
|||
|
procedure TfrmZdyAttachmentCB.Button1Click(Sender: TObject);
|
|||
|
var
|
|||
|
fPrintFile:string;
|
|||
|
Porderno:string;
|
|||
|
i,j:Integer;
|
|||
|
begin
|
|||
|
if CDS_Main.IsEmpty then Exit;
|
|||
|
fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\'+trim(RadioGroup1.Items.Strings[RadioGroup1.ItemIndex])+'.rmf' ;
|
|||
|
with ADOQueryPrint do
|
|||
|
begin
|
|||
|
Close;
|
|||
|
sql.Clear;
|
|||
|
sql.Add('select A.*, ');
|
|||
|
sql.Add('FilesOther=(select Top 1 X1.FilesOther from TP_File X1,CP_YDang X2 where X1.WBID=X2.CYID and X2.CYNO=A.P_Code)');
|
|||
|
sql.Add('from KH_CP_BJ A ');
|
|||
|
sql.Add('Where A.BJNO='''+Trim(CDS_Main.fieldbyname('BJNO').AsString)+'''');
|
|||
|
Open;
|
|||
|
end;
|
|||
|
if FileExists(fPrintFile) then
|
|||
|
begin
|
|||
|
RM1.LoadFromFile(fPrintFile);
|
|||
|
RM1.ShowReport;
|
|||
|
Panel4.Visible:=false;
|
|||
|
end else
|
|||
|
begin
|
|||
|
Application.MessageBox(PChar('û<><C3BB><EFBFBD><EFBFBD>'+trim(fPrintFile)),'<27><>ʾ',0);
|
|||
|
exit;
|
|||
|
end;
|
|||
|
end;
|
|||
|
|
|||
|
end.
|
|||
|
|
|||
|
|