5、#define宏定义。宏只是简单的文本替换,很容易引起歧义。
#include <stdio.h>
#define CONS(a,b) (int)(a##e##b)
#define STR(s) #s
int main()
{
printf(STR(vck));
printf("\n");
printf("%d\n",CONS(2,3));
return 0;
}
在本程序中,使用#将宏参数变为一个字符串,用##把两个宏参数贴合在一起,结果为:
vck
2000
6、宏定义得到字的高位和低位字节
#define WORD_LO(xxx) ((byte)((word)(xxx)&255))
#define WORD_HI(xxx) ((byte)((word)(xxx)>>8))
7、const与#define的个子特点与区别
#define只是用来做文本替换,那么,当程序进行编译的时候,编译器首先会将“#define PI 3.1415826”以后所有代码中的PI全部换成“3.1415826”然后再进行编译。因为#define长了生命周至于编译期,它存在于程序的 代码段,在实际程序中,它只是一个常数,一个命令中的参数,并没有时间的存在。
const常量存在于程序的数据段中,并在堆栈中分配了空间,const常量是一个Run-time的概念,它在程序中确确实实存在着并可以被调用,传递。 ......
5、#define宏定义。宏只是简单的文本替换,很容易引起歧义。
#include <stdio.h>
#define CONS(a,b) (int)(a##e##b)
#define STR(s) #s
int main()
{
printf(STR(vck));
printf("\n");
printf("%d\n",CONS(2,3));
return 0;
}
在本程序中,使用#将宏参数变为一个字符串,用##把两个宏参数贴合在一起,结果为:
vck
2000
6、宏定义得到字的高位和低位字节
#define WORD_LO(xxx) ((byte)((word)(xxx)&255))
#define WORD_HI(xxx) ((byte)((word)(xxx)>>8))
7、const与#define的个子特点与区别
#define只是用来做文本替换,那么,当程序进行编译的时候,编译器首先会将“#define PI 3.1415826”以后所有代码中的PI全部换成“3.1415826”然后再进行编译。因为#define长了生命周至于编译期,它存在于程序的 代码段,在实际程序中,它只是一个常数,一个命令中的参数,并没有时间的存在。
const常量存在于程序的数据段中,并在堆栈中分配了空间,const常量是一个Run-time的概念,它在程序中确确实实存在着并可以被调用,传递。 ......
ASP通过cookie实现自动记住密码的功能
把以下代码加入验证页:
<%if Trim(Cstr(request.QueryString("check")))="true" then ‘用来判断是否有选择记住密码
Response.Cookies("UserCookie")("username") = Trim(Cstr(request.Form("username")))
Response.Cookies("UserCookie")("passwords") = trim(request.Form("passwords"))
'Response.Cookies("UserCookie").Path = "/login.asp"
Response.Cookies("UserCookie").Expires= DateAdd("y",1,Now())
end if%>
登录页代码:
//这段代码是用来判断是否有选择记住密码,同时也发送一个判断字段给后台
<script type="text/javascript">
function check()
{if(document.getElementById("checkbox").checked)
alert(document.getElementById("checkbox").checked)
document.getElementById("ddd").action='check.asp?id=user&check='+document.getElementById("checkbox").checked;}
</script>
‘以下代码是用来实现记住密码的功能
<%
strUsername=Request.Cookies("UserCookie")("username")
strPassword=Request.Cookies("UserCookie")("passwo ......
存储进程就是作为可执行对象存放在数据库中的一个或多个SQL命令。
定义总是很抽象。存储进程其实就是能完成一定操作的一组SQL语句,只不过这组语句是放在数据库中的(这里我们只谈SQL SERVER)。如果我们通过创建存储进程以及在ASP中调用存储进程,就可以避免将SQL语句同ASP代码混杂在一起。这样做的好处至少有三个:
第一、大大提高效率。存储进程本身的执行速度非常快,而且,调用存储进程可以大大减少同数据库的交互次数。
第二、提高安全性。假如将SQL语句混合在ASP代码中,一旦代码失密,同时也就意味着库结构失密。
第三、有利于SQL语句的重用。
在ASP中,一般通过COMMAND对象调用存储进程,根据不同情况,本文也介绍其它调用方法。为了方便说明,根据存储进程的输入输出,作以下简单分类:
1. 只返回单一记录集的存储进程
假设有以下存储进程(本文的目的不在于讲述T-SQL语法,所以存储进程只给出代码,不作说明):
/*SP1*/
& ......
存储进程就是作为可执行对象存放在数据库中的一个或多个SQL命令。
定义总是很抽象。存储进程其实就是能完成一定操作的一组SQL语句,只不过这组语句是放在数据库中的(这里我们只谈SQL SERVER)。如果我们通过创建存储进程以及在ASP中调用存储进程,就可以避免将SQL语句同ASP代码混杂在一起。这样做的好处至少有三个:
第一、大大提高效率。存储进程本身的执行速度非常快,而且,调用存储进程可以大大减少同数据库的交互次数。
第二、提高安全性。假如将SQL语句混合在ASP代码中,一旦代码失密,同时也就意味着库结构失密。
第三、有利于SQL语句的重用。
在ASP中,一般通过COMMAND对象调用存储进程,根据不同情况,本文也介绍其它调用方法。为了方便说明,根据存储进程的输入输出,作以下简单分类:
1. 只返回单一记录集的存储进程
假设有以下存储进程(本文的目的不在于讲述T-SQL语法,所以存储进程只给出代码,不作说明):
/*SP1*/
& ......
Function WriteToUTF(content,sFilen)'content为替换后的字符串,filename为生成的文件名
dim objStream
Set objStream = Server.CreateObject("ADODB.Stream")
With objStream
.Open
.Charset = "utf-8"' //编码,这里你可以改成任何编码
.Position = objStream.Size
.WriteText = content' //模版+数据 写入内容
.SaveToFile server.mappath("../"&sFilen),2' //生成文件路径
.Close
End With
Set objStream = Nothing
End Function ......
第一种方法:
<%
d = date()
response.write d&" "&WeekdayName(Weekday(d))
%>
输出样式:2004-5-7 星期五
***********************************************************************************
第二种方法:
<%=FormatDateTime(date, vbLongDate)%><%
d = date()
response.write " "&WeekdayName(Weekday(d))
%>
输出样式:2004年5月7日 星期五
************************************************************************************************************
第三种方法:
////////////第一步:把下面语句放在顶部.
<%
'日期函数
sub datetime
dat=int(datediff("d",dateserial(2000,8,27),now) mod 7)
response.write(formatdatetime(now,1))&" "
select case dat
case 0
response.write "星期天"
case 1
response.write "星期一"
case 2
response.w ......
一、asp.net DataGridView导出到Excel的三个方法
#region DataGridView数据显示到Excel
/// <summary>
/// 打开Excel并将DataGridView控件中数据导出到Excel
/// </summary>
/// <param name="dgv">DataGridView对象 </param>
/// <param name="isShowExcle">是否显示Excel界面 </param>
/// <remarks>
/// add com "Microsoft Excel 11.0 Object Library"
/// using Excel=Microsoft.Office.Interop.Excel;
/// </remarks>
/// <returns> </returns>
public bool DataGridviewShowToExcel(DataGridView dgv, bool isShowExcle)
{
if (dgv.Rows.Count == 0)
return false;
//建立Excel对象
Excel.Application excel = new Excel.Application();
excel.Application.Workbooks.Add(true);
excel.Visible = isShowExcle;
//生成字段名称
for (int i = 0; i < dgv.ColumnCount; i++)
{
excel.Cells[1, i + 1] = dgv.Columns[i].HeaderText;
}
//填充数据
for (int i = 0; i < dgv.RowCount - 1; i++)
{
for (int j = 0; j < d ......