
word中如何进行关键词检索
word中进行关键词检索的方法:1、首先打开要修改的word文档。
2、然后点击菜单栏的编辑——查找,或者在文档中直接输入Ctrl+F的快捷键,打开搜索框。
3、在搜索框中输入要查找的关键字或字符,然后点击“查找下一处”按钮。
4、如果查找有结果,光标就会定格到查找的结果上。
不断点击“查找下一处”,光标会不断下移。
一段C语言代码,有点疑问,请帮忙~!
代码如下:using System;using System.IO;public partial class _Default : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){}/// /// 保存文件/// /// 事件源/// 事件参数protected void btnSave_Click(object sender, EventArgs e){if (!fld.HasFile){Alert("请先选择要上传的文件!");return;}if (!FileExtendsCheck(fld.FileName)){Alert("文件格式不正确!");return;}string path = Server.MapPath("FileUpload") + "\\" + fld.FileName;if (File.Exists(path)){Alert("文件已存在!"); // 对此,可以选择构造动态文件名,这里只作演示return;}try{fld.SaveAs(Server.MapPath("FileUpload") + "\\" + fld.FileName);}catch (Exception ex){Alert("错误:"+ex.Message);return;}Alert("上传成功!");}/// /// 文件后缀名检查/// /// 文件名/// private bool FileExtendsCheck(string fileName){// 允许的上传的文件的后缀名string [] allowExtends = new string[]{".doc",".docx",".pdf",".xls",".ppt"};fileName = fileName.ToLower();bool allow = false;foreach (var allowExtend in allowExtends){if (fileName.EndsWith(allowExtend)){allow = true;break;}}return allow;}/// /// 提示消息/// /// 消息内容private void Alert(string msg){ClientScript.RegisterClientScriptBlock(this.GetType(),"DefaultKeys","alert(\""+msg+"\");",true);}}// 备注:fld 为 FileUpload 控件
有没有解析word文档的js库
在安装Office2003以后,有一个ActiveX控件被安装到了系统中,这个控件位于“Program Files/Microsoft Office/OFFICE11/owssupp.dll”。
通过这个控件,客户端页面上的JavaScript就可以激活本地的Office软件,来实现打开、编辑Office文档。
(另,Office XP应该就已经包含这个ActiveX控件了。
)首先,用Script创建一个本地的对象:openDocObj = new ActiveXObject("SharePoint.OpenDocuments.2"); // 为了兼容Office XP,可以创建“SharePoint.OpenDocuments.1”然后,调用openDocObj的相应的方法。
比如打开服务器上的一个Office文档:openDocObj.ViewDocument("http://www.abc.com/documents/sample.doc");openDocObj对象会根据参数中不同的Office文档类型(.doc、.xls、.ppt)来打开不同的程序(Word、Excel、PowerPoint)。
ViewDocument()方法还有一个重载签名,可以让我们手工指定激活哪个程序来打开文档:openDocObj.ViewDocument("http://www.abc.com/documents/sample.doc", 要激活的程序的ProgID);那么要打开Office程序在线编辑文件又如何?openDocObj.EditDocument("http://www.abc.com/documents/sample.doc");就可以直接激活Word,在Word里面编辑文档,然后直接点击Word里面的保存功能,就可以将文件保存会服务器上了。
注意:为了让Word能将编辑后的文档直接保存会服务器,访问Web站点的当前上下文的Windows Identity必须对服务器的相应目录(即“http://www.abc.com/documents”这个虚拟目录所对应的服务器上的物理路径)有相应的写权限,否则保存动作会失败。
编辑完成后,EditDocument()会返回一个bool值,来反映编辑操作是否成功。
我们还可以通过打开服务器上的一个文档模版,来创建一个新的文档:openDocObj.CreateNewDocument("http://www.abc.com/documents/sampleTemplate.dot", "http://www.abc.com/documents/");就可以使用“http://www.abc.com/documents/sampleTemplate.dot”这个模版来创建一个新的文档,默认新文档的保存地点是“http://www.abc.com/documents/”。
创建新文档时使用的程序取决于模版文件的类型(比如.dot模版会对应Word)。
新文档的保存同样需要注意权限问题。
CreateNewDocument()方法同样会返回一个bool值来反映操作是否成功。
CreateNewDocument()方法的第一个参数,除了可以使用一个模版的地址外,还可以直接指定为希望用来创建新文档的客户端程序的ProgID。
test_wordfunction Validator(){var openDocObj;openDocObj = new ActiveXObject("SharePoint.OpenDocuments.2");openDocObj.EditDocument("C:/Inetpub/wwwroot/前言.doc");}</script>
c语言编程题:输入一行字符,统计其中有多少个单词,单词之间用逗...
//-----------------------------------------------------// C++APP,统计一段话中英语单词个数!//------------------------------------------------------#include "iostream.h"#include "stdio.h" //包含gets函数int main() { char string[10000]; int i; int num = 0; /* 统计单词个数 */ bool word; /* 判定是否为单词 */word = false;char c; coutgets(string); for (i = 0; (c = string[i]) != '\0'; i++) //以回车'ENTER'作为结束标志!{ if (c == ' ') word = 0; elseif (word == false) { word = true; num++; } } coutreturn 0; }
c语言编程替换文件中字符串
/*文件字符串替换实用程序,算法简练有效*/编译环境vc2005/dev-c++#include#include#include#define N 10000 /* 设定文件最大字符个数不超过10000,可更改 */int main(){int i=0,j,k=0,m=0,pos=0,max,len1,len2;char s[N],t[N],a[200],s1[200],s2[200];FILE *fp;printf("Please input file name:\n");/*输入文件名*/gets(a);printf("Please input original string:\n");/*输入要替换的字符串*/gets(s1);printf("Please input new string:\n");/*输入被替换成的字符串*/gets(s2);len1=strlen(s1);len2=strlen(s2);if ((fp=fopen(a,"r"))==NULL)/*设定文件位于当前目录下,可更改为绝对路径*/{ printf("Open file %s error! Strike any key to exit!",a);system("pause");exit(1);}s[i++]=fgetc(fp);while(!feof(fp)){s[i++]=fgetc(fp);}fclose(fp);max=i-1;/* 函数feof()最后会读两次,所以必须减1 */for(i=0;i{for(j=0;jif(j!=len1)continue;/* 不相等则i加1进行下一次外循环 */else{ for(k=0;kt[m++]=s[pos+k];pos=i+len1;for(k=0;kt[m++]=s2[k];}}for(k=pos;kt[m++]=s[k];max=m;/* max是替换后文件的字符总数 */fp=fopen(a,"w");printf("\n\nThe results are:\n\n");for(j=0;j{putchar(t[j]); /* 结果显示到屏幕 */fputc(t[j],fp); /* 同时结果写入到当前目录下的新文件001.txt中 */}printf("\n\n");fclose(fp);system("pause");return 0;}
在线等!!! 题目:统计一篇英文文章中的单词数和行数,写了代...
#include #include using namespace std;bool isalph(char);int main(){ifstream in("D:\\day.txt");if(!in){cerr<<"not open \n";return 1;}int line=0,word=0,i;char c[1000];while(!in.eof()){in.getline(c,1000);line++;i=0;while(c[i]!=0){if(isalph(c[i])){word++;}i++;}}cout<<"Line="<<line<<endl;cout<<"word="<='a'&&c<='z')||(c>='A'&&c<='Z'));}不明白楼主设置的change变量有何用? return ((c>='a'&&c<='z')&&(c>='A'&&c<='Z'))应该为return ((c>='a'&&c<='z')||(c>='A'&&c<='Z'))。
函数声明 bool isalph(char)应该在main函数之前。
西门子PLC STEP7 怎么用FB41
我以前就是看的这个文章,收藏在我QQ空间,我复制给你。
除了看这个,你还得看一下手册。
有不懂你追加提问。
FB41称为连续控制的PID用于控制连续变化的模拟量,与FB42的差别在于后者是离散型的,用于控制开关量,其他二者的使用方法和许多参数都相同或相似。
PID的初始化可以通过在OB100中调用一次,将参数COM-RST置位,当然也可在别的地方初始化它,关键的是要控制COM-RST; PID的调用可以在OB35中完成,一般设置时间为200MS,A:所有的输入参数: COM_RST: BOOL: 重新启动PID:当该位TURE时:PID执行重启动功能,复位PID内部参数到默认值;通常在系统重启动时执行一个扫描周期,或在PID进入饱和状态需要退出时用这个位; MAN_ON: BOOL:手动值ON;当该位为TURE时,PID功能块直接将MAN的值输出到LMN,这可以在PID框图中看到;也就是说,这个位是PID的手动/自动切换位; PEPER_ON: BOOL:过程变量外围值ON:过程变量即反馈量,此PID可直接使用过程变量PIW(不推荐),也可使用 PIW规格化后的值(常用),因此,这个位为FALSE; P_SEL: BOOL:比例选择位:该位ON时,选择P(比例)控制有效;一般选择有效; I_SEL: BOOL:积分选择位;该位ON时,选择I(积分)控制有效;一般选择有效; INT_HOLD BOOL:积分保持,不去设置它; I_ITL_ON BOOL:积分初值有效,I-ITLVAL(积分初值)变量和这个位对应,当此位ON时,则使用I-ITLVAL变量积分初值。
一般当发现PID功能的积分值增长比较慢或系统反应不够时可以考虑使用积分初值; D_SEL : BOOL:微分选择位,该位ON时,选择D(微分)控制有效;一般的控制系统不用; CYCLE : TIME:PID采样周期,一般设为200MS; SP_INT: REAL:PID的给定值; PV_IN : REAL:PID的反馈值(也称过程变量); PV_PER: WORD:未经规格化的反馈值,由PEPER-ON选择有效;(不推荐) MAN : REAL:手动值,由MAN-ON选择有效; GAIN : REAL:比例增益; TI : TIME:积分时间; TD : TIME:微分时间; TM_LAG: TIME:我也不知道,没用过它,和微分有关; DEADB_W: REAL:死区宽度;如果输出在平衡点附近微小幅度振荡,可以考虑用死区来降低灵敏度; LMN_HLM: REAL:PID上极限,一般是100%; LMN_LLM: REAL:PID下极限;一般为0%,如果需要双极性调节,则需设置为-100%;(正负10V输出就是典型的双极性输出,此时需要设置-100%); PV_FAC: REAL:过程变量比例因子 PV_OFF: REAL:过程变量偏置值(OFFSET) LMN_FAC: REAL:PID输出值比例因子; LMN_OFF: REAL:PID输出值偏置值(OFFSET); I_ITLVAL:REAL:PID的积分初值;有I-ITL-ON选择有效; DISV :REAL:允许的扰动量,前馈控制加入,一般不设置; B:部分输出参数说明: LMN :REAL:PID输出; LMN_P :REAL:PID输出中P的分量;(可用于在调试过程中观察效果) LMN_I :REAL:PID输出中I的分量;(可用于在调试过程中观察效果) LMN_D :REAL:PID输出中D的分量;(可用于在调试过程中观察效果) C:规格化概念及方法: PID参数中重要的几个变量,给定值,反馈值和输出值都是用0.0~1.0之间的实数表示, 而这几个变量在实际中都是来自与模拟输入,或者输出控制模拟量的 因此,需要将模拟输出转换为0.0~1.0的数据,或将0.0~1.0的数据转换为模拟输出,这个过程称为规格化 规格化的方法:(即变量相对所占整个值域范围内的百分比 对应与27648数字量范围内的量) 对于输入和反馈,执行:变量*100/27648,然后将结果传送到PV-IN和SP-INT 对于输出变量 ,执行:LMN*27648/100,然后将结果取整传送给PQW即可; D:PID的调整方法: 一般不用D,除非一些大功率加热控制等惯大的系统;仅使用PI即可, 一般先使I等于0,P从0开始往上加,直到系统出现等幅振荡为止,记下此时振荡 的周期,然后设置I为振荡周期的0.48倍,应该就可以满足大多数的需求。
我记得网络上有许多调整PID的方法,但不记得那么多了,先试试吧。
附录:PID的调整可以通过“开始—>SIMATIC->STEP7->PID调整”打开PID调整的控制面板,通过选择不同的PID背景数据块,调整不同回路的PID参数。
用C/C++实现网络监听抓包
Windows2000在TCP/IP协议组件上做了很多改进,功能也有增强。
比如在协议栈上的调整,增大了默认窗口大小,以及高延迟链接新算法。
同时在安全性上,可应用IPSec加强安全性,比NT下有不少的改进。
Microsoft TCP/IP 组件包含“核心协议”、“服务”及两者之间的“接口”。
传输驱动程序接口 (TDI) 与网络设备接口规范 (NDIS) 是公用的。
此外,还有许多用户模型应用程序的更高级接口。
最常用的接口是 Windows Sockets、远程过程调用 (RPC) 和 NetBIOS。
Windows Sockets 是一个编程接口,它是在加州大学伯克利分校开发的套接字接口的基础上定义的。
它包括了一组扩展件,以充分利用 Microsoft Windows 消息驱动的特点。
规范的 1.1 版是在 1993 年 1 月发行的,2.2.0 版在 1996 年 5 月发行。
Windows 2000 支持 Winsock 2.2 版。
在Winsock2中,支持多个传输协议的原始套接字,重叠I/O模型、服务质量控制等。
这里介绍Windows Sockets的一些关于原始套接字(Raw Socket)的编程。
同Winsock1相比,最明显的就是支持了Raw Socket套接字类型,通过原始套接字,我们可以更加自如地控制Windows下的多种协议,而且能够对网络底层的传输机制进行控制。
1、创建一个原始套接字,并设置IP头选项。
SOCKET sock; sock = socket(AF_INET,SOCK_RAW,IPPROTO_IP); 或者: s = WSASoccket(AF_INET,SOCK_RAW,IPPROTO_IP,NULL,0,WSA_FLAG_OVERLAPPED); 这里,我们设置了SOCK_RAW标志,表示我们声明的是一个原始套接字类型。
创建原始套接字后,IP头就会包含在接收的数据中,如果我们设定 IP_HDRINCL 选项,那么,就需要自己来构造IP头。
注意,如果设置IP_HDRINCL 选项,那么必须具有 administrator权限,要不就必须修改注册表: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Afd\Parameter\ 修改键:DisableRawSecurity(类型为DWORD),把值修改为 1。
如果没有,就添加。
BOOL blnFlag=TRUE; setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (char *)&blnFlag, sizeof(blnFlag); 对于原始套接字在接收数据报的时候,要注意这么几点: 1、如果接收的数据报中协议类型和定义的原始套接字匹配,那么,接收的所有数据就拷贝到套接字中。
2、如果绑定了本地地址,那么只有接收数据IP头中对应的远端地址匹配,接收的数据就拷贝到套接字中。
3、如果定义的是外部地址,比如使用connect(),那么,只有接收数据IP头中对应的源地址匹配,接收的数据就拷贝到套接字中。
2、构造IP头和TCP头 这里,提供IP头和TCP头的结构: // Standard TCP flags #define URG 0x20 #define ACK 0x10 #define PSH 0x08 #define RST 0x04 #define SYN 0x02 #define FIN 0x01 typedef struct _iphdr //定义IP首部 { unsigned char h_lenver; //4位首部长度+4位IP版本号 unsigned char tos; //8位服务类型TOS unsigned short total_len; //16位总长度(字节) unsigned short ident; //16位标识 unsigned short frag_and_flags; //3位标志位 unsigned char ttl; //8位生存时间 TTL unsigned char proto; //8位协议 (TCP, UDP 或其他) unsigned short checksum; //16位IP首部校验和 unsigned int sourceIP; //32位源IP地址 unsigned int destIP; //32位目的IP地址 }IP_HEADER; typedef struct psd_hdr //定义TCP伪首部 { unsigned long saddr; //源地址 unsigned long daddr; //目的地址 char mbz; char ptcl; //协议类型 unsigned short tcpl; //TCP长度 }PSD_HEADER; typedef struct _tcphdr //定义TCP首部 { USHORT th_sport; //16位源端口 USHORT th_dport; //16位目的端口 unsigned int th_seq; //32位序列号 unsigned int th_ack; //32位确认号 unsigned char th_lenres; //4位首部长度/6位保留字 unsigned char th_flag; //6位标志位 USHORT th_win; //16位窗口大小 USHORT th_sum; //16位校验和 USHORT th_urp; //16位紧急数据偏移量 }TCP_HEADER; TCP伪首部并不是真正存在的,只是用于计算检验和。
校验和函数: USHORT checksum(USHORT *buffer, int size) { unsigned long cksum=0; while (size > 1) { cksum += *buffer++; size -= sizeof(USHORT); } if (size) { cksum += *(UCHAR*)buffer; } cksum = (cksum >> 16) + (cksum & 0xffff); cksum += (cksum >>16); return (USHORT)(~cksum); } 当需要自己填充IP头部和TCP头部的时候,就同时需要自己计算他们的检验和。
3、发送原始套接字数据报 填充这些头部稍微麻烦点,发送就相对简单多了。
只需要使用sendto()就OK。
sendto(sock, (char*)&tcpHeader, sizeof(tcpHeader), 0, (sockaddr*)&addr_in,sizeof(addr_in)); 下面是一个示例程序,可以作为SYN扫描的一部分。
#include #include #include #define SOURCE_PORT 7234 #define MAX_RECEIVEBYTE 255 typedef struct ip_hdr //定义IP首部 { unsigned char h_verlen; //4位首部长度,4位IP版本号 unsigned char tos; //8位服务类型TOS unsigned short total_len; //16位总长度(字节) unsigned short ident; //16位标识 unsigned short frag_and_flags; //3位标志位 ...
转载请注明出处51数据库 » bool inword false
-纯情小倩-