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

📄 pubvar.pas

📁 关于利用DELPHI来进行企业级方案解决的著作的附书源码
💻 PAS
字号:
unit PubVar;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, DbTables, StdCtrls, ExtCtrls, Buttons, Dialogs,Registry,Db,
  ComCtrls;


Function  AllTrim(strtmp:string):string;
Function  HandelException(E: Exception):Integer;
Function  To_Yesterday(Today:Tdate):Tdate;
FUNCTION  ISINT(STR:STRING):BOOLEAN;
FUNCTION  ISFLOAT(STR:STRING):BOOLEAN;
Procedure  PreviousMonth(CurrMonth:string;MonNum:integer; var LYear:string;var LMonth:string);
FUNCTION  MonthDay(YY,MM:integer):integer;
FUNCTION  MonthLastDate(YY,MM:integer):Tdate;


const
cTreeCodeFormat='122222'; //编码格式。
cTreeMaxLevel=6;
cTreeRootTxt='单位字典' ;

var
	Guser:	String;			//用户
	gLoginName:	String;			//当前登录的用户名
  GLogInTime:	TDatetime; //登录功能模块的时间,取服务器的系统时间, 退出时写日志用
	GDwName:	String[40]= '';	 {当前使用程序的单位}
        guserDep:       String[20]; //用户单位
        gDBMS:          String[20];    //数据库名
        gBackupTables:  String[20]; //备份表名
        gCurVerNo:      String[4];    //当前版本号
        gVerDate:       String[20];    //版本日期
        gBackupFile:    String; //备份文件
        gBackupDate:    String; //备份日期
        gUpdatedFlag:   String[1];//更改标志
        gUpdatedFDate:  String[20];//更改日期
        gNodelevel:     integer;  // 树节点层次
        gNodeID:        String;  // 树节点ID
        gNode:          ttreenode; //当前节点
     mustIMP:boolean;
     SysIni: TRegIniFile;
implementation
USES
dataModel;

Function AllTrim(strtmp:string):string;
var s1:string;
begin
  s1:=Strtmp;
  WHile True Do begin
	if Copy(s1,1,1)=' ' Then
	  delete(s1,1,1)
	else
	  Break;
  end;
  WHile True Do begin
	if Copy(s1,length(s1),1)=' ' Then
	  delete(s1,length(s1),1)
	else
	  Break;
  end;
  Alltrim:=s1
end;

Function HandelException( E: Exception):Integer;
{返回值分三种: 0:正常错误,继续执行
			   1:非法错误,退出当前过程
			   2:无权限,停止运行当前模块
			   3:其它错,交由系统处理,'RAISE'
}
var tmp,tmp1:String;
	tmpstr:PChar;
	i,i2:Integer;
begin
   tmp:=E.Message;
   tmp[length(tmp)+1]:=#0;
   if E.Message='At end of table' Then
   begin
	 result:=0;
	 exit;
   end;
   i:=pos('] SQL',tmp);
   if i<>0 Then
   begin
	 tmpstr:=@tmp[i+2];
	 tmp1:=strpas(tmpstr);
	 i:=pos('N',tmp1);
	 tmpstr[i+1]:=#0;
	 tmp:=strpas(tmpstr);
   end;
   if AllTrim(tmp)='SQL1403N' Then
   begin
	 application.MessageBox('错误的用户名和口令!','操作错误',mb_iconerror);
	 Result:=2;
	 Exit;
   end;
   if AllTrim(tmp)='SQL0567N' Then
   begin
	 application.MessageBox('错误的用户名和口令!','操作错误',mb_iconerror);
	 Result:=2;
	 Exit;
   end;
   if Alltrim(tmp)='SQL0551N' Then
   begin
	 application.MessageBox('抱歉!您尚不具备当前的操作权限!','操作错误',mb_iconerror);
	 Result:=2;
	 Exit;
   end;
   if Alltrim(tmp)='SQL0204N' Then
   begin
	 application.MessageBox('抱歉!您选的表不存在!','操作错误',mb_iconerror);
	 ShowMessage(E.Message);
	 Result:=2;
	 Exit;
   end;
   if Alltrim(tmp)='SQL1042C' Then
   begin
	  application.MessageBox('程序无法继续进行,请检测操作系统!'+#13+'建议热启动后重新运行本程序!','操作错误',mb_iconerror);
	  Result:=2;
	  Exit;
   end;
   if AllTrim(tmp)='SQL1046N' Then
   begin
	  application.MessageBox('错误的用户名和口令!','操作错误',mb_iconerror);
	  Result:=2;
	  Exit;
   end;
//以下是字段不能为空错误
   i:=pos('Field',tmp);
   i2:=pos('must have a value',tmp);
   if ((i<>0) and (i2<>0)) Then
   begin
        application.MessageBox('标记为黄色的项目必须输入,不能为空,请检查后输入正确的值!','操作错误',mb_iconerror);
        Result:=2;
	Exit;
   end;
//以下是表或视图不存在错误
   i:=pos('ORA-00942',tmp);
   if (i<>0)  Then
   begin
        Result:=942;
	 Exit;
   end;

//以下是违反唯一性限制错误
   i:=pos('ORA-00001',tmp);
   if (i<>0)  Then
   begin
        application.MessageBox('刚才输入的单位内码或单位编码已经存在,请检查后输入正确的新值!','操作错误',mb_iconerror);
        Result:=2;
	 Exit;
   end;

   application.MessageBox('数据库操作有误,请检查您的数据!'+#13+'或记录下面的错误并和作者联系!','操作错误',mb_iconerror);
   ShowMessage(E.Message);
   Result:=1;
end;

//根据当前的字符串计算出前一个月
Procedure  PreviousMonth(CurrMonth:string;MonNum:integer; var LYear:string;var LMonth:string);
VAR
	Year, Month: integer;
	CurrDate, PrevDate: TDateTime;
begin
	Year := StrtoInt(Copy(Currmonth,1,4));
	Month :=  StrToInt(Copy(Currmonth, 6,2));
	CurrDate :=EncodeDate(Year, Month, 1);

	PrevDate :=IncMonth(CurrDate, MonNum);
	LYear := FormatDateTime( 'YYYY', PrevDate);
	LMonth := FormatDateTime( 'MM', PrevDate);
end;

{*************************************************
计算昨天
**************************************************}
Function To_Yesterday(Today:Tdate):Tdate;
VAR
	YY,MM,DD	:Word;
BEGIN
	 DecodeDate(Today, YY,MM,DD);

	 IF DD>1 THEN
		DD := DD-1
	 ELSE	//月份-1
	 BEGIN

		IF MM >1 THEN
			MM :=MM -1
		ELSE
		BEGIN
			MM := 12;
			YY := YY -1;
		END;
		dd :=MonthDay(YY,mm);
	 END;
	 Result :=EncodeDate(YY,MM,DD);
END;

{*****************************************
计算每月天数
******************************************
}
FUNCTION  MonthDay(YY,MM:integer):integer;
begin
	CASE MM OF
	1,3,5,7,8,10,12:
		Result:=31;
	4,6,9,11:
		Result:=30;
	2:
		IF ISLEAPYEAR(YY) THEN
			Result:=29
		ELSE
			Result:=28;
	END;
end;

{*****************************************
计算每月的最后一天
******************************************
}
FUNCTION  MonthLastDate(YY,MM:integer):Tdate;
var dd:integer;
begin
	DD := MonthDay(yy,mm);
	result := Encodedate( YY,mm, dd);
end;

{*****************************************
	判断字符串是否为数字, 假设STR的前后没有空格
*****************************************
}

FUNCTION ISFLOAT(STR:STRING):BOOLEAN;
BEGIN
	RESULT :=TRUE;
	if Str= '' then Exit;
	try
		strtofloat(str);
	except
		on EConvertError do result := FALSE;
	end;
END;

FUNCTION ISInt(STR:STRING):BOOLEAN;
BEGIN
	RESULT :=TRUE;
	if Str= '' then Exit;
	try
		strtoint(str);
	except
		on EConvertError do result := FALSE;
	end;
END;




end.

⌨️ 快捷键说明

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