- cloud123
-
用API函数,以下是在CSDN搜到的,自己调试了下,可以
--------------------------------------------------
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, source As Any, ByVal Length As Long)
Private Function ReadUniFile(ByVal sFile As String) As String
"没加错误处理,大家自己加吧
Dim a As Long
a = FileLen(sFile)
ReDim buff(a - 1) As Byte
ReDim buff1(a - 3) As Byte
Open sFile For Binary As #1
Get #1, , buff
Close #1
CopyMemory buff1(0), buff(2), a - 2
Dim s As String
s = StrConv(buff1, vbNarrow)
ReadUniFile = s
End Function
Private Sub Command1_Click()
Dim str As String
str = ReadUniFile(App.Path + "12.txt")
Text1.Text = str
End Sub
- 小菜G
-
如果是 一般Unicode 可以(UTF-8 复杂多)
Unicode 文件首两字节应该是 0xFF(&HFF) 0xFE (&HFE)
每两个字节读一次 用ChrW() 转为字符
- 再也不做稀饭了
-
人工转换……
open "[path]" for binary as #1
二进制一个一个读……
ifstream sfile是什么操作
ifstream sfile;是建立了一个文件输入流但是尚未打开文件要打开文件的话需要接着sfile.open("file.txt"); // 中间放文件名2023-07-16 08:34:141
怎样才能故意破坏WORD文档?
用“记事本”打开文档,保存一下就可以了。2023-07-16 08:34:257
C#中读取和写入文件的过程,常用哪几类?
1、使用FileStream读写文件文件头:复制代码代码如下:using System;using System.Collections.Generic;using System.Text;using System.IO;读文件核心代码:复制代码代码如下:byte[] byData = new byte[100];char[] charData = new char[1000];try{FileStream sFile = new FileStream("文件路径",FileMode.Open);sFile.Seek(55, SeekOrigin.Begin);sFile.Read(byData, 0, 100); //第一个参数是被传进来的字节数组,用以接受FileStream对象中的数据,第2个参数是字节数组中开始写入数据的位置,它通常是0,表示从数组的开端文件中向数组写数据,最后一个参数规定从文件读多少字符.}catch (IOException e){Console.WriteLine("An IO exception has been thrown!");Console.WriteLine(e.ToString());Console.ReadLine();return;}Decoder d = Encoding.UTF8.GetDecoder();d.GetChars(byData, 0, byData.Length, charData, 0);Console.WriteLine(charData);Console.ReadLine();写文件核心代码:复制代码代码如下:FileStream fs = new FileStream(文件路径,FileMode.Create);//获得字节数组byte [] data =new UTF8Encoding().GetBytes(String);//开始写入fs.Write(data,0,data.Length);//清空缓冲区、关闭流fs.Flush();fs.Close();2、使用StreamReader和StreamWriter文件头:复制代码代码如下:using System;using System.Collections.Generic;using System.Text;using System.IO;StreamReader读取文件:复制代码代码如下:StreamReader objReader = new StreamReader(文件路径);string sLine="";ArrayList LineList = new ArrayList(); while (sLine != null){sLine = objReader.ReadLine();if (sLine != null&&!sLine.Equals(""))LineList.Add(sLine);}objReader.Close();return LineList;StreamWriter写文件:复制代码代码如下:FileStream fs = new FileStream(文件路径, FileMode.Create);StreamWriter sw = new StreamWriter(fs);//开始写入sw.Write(String);//清空缓冲区sw.Flush();//关闭流sw.Close();fs.Close();方式一:用FileStream复制代码代码如下://实例化一个保存文件对话框SaveFileDialog sf = new SaveFileDialog();//设置文件保存类型sf.Filter = "txt文件|*.txt|所有文件|*.*";//如果用户没有输入扩展名,自动追加后缀sf.AddExtension = true;//设置标题sf.Title = "写文件";//如果用户点击了保存按钮if(sf.ShowDialog()==DialogResult.OK){//实例化一个文件流--->与写入文件相关联FileStream fs = new FileStream(sf.FileName,FileMode.Create);//获得字节数组byte [] data =new UTF8Encoding().GetBytes(this.textBox1.Text);//开始写入fs.Write(data,0,data.Length);//清空缓冲区、关闭流fs.Flush();fs.Close();}方式二:用StreamWriter复制代码代码如下://实例化一个保存文件对话框SaveFileDialog sf = new SaveFileDialog();//设置文件保存类型sf.Filter = "txt文件|*.txt|所有文件|*.*";//如果用户没有输入扩展名,自动追加后缀sf.AddExtension = true;//设置标题sf.Title = "写文件";//如果用户点击了保存按钮if (sf.ShowDialog() == DialogResult.OK){//实例化一个文件流--->与写入文件相关联FileStream fs = new FileStream(sf.FileName, FileMode.Create);//实例化一个StreamWriter-->与fs相关联StreamWriter sw = new StreamWriter(fs);//开始写入sw.Write(this.textBox1.Text);//清空缓冲区sw.Flush();//关闭流sw.Close();fs.Close();}string FileName = Guid.NewGuid().ToString() + ".txt"; //GUID生成唯一文件名StringBuilder ckpw = new StringBuilder(""凭证输出", "V800", "001", "东风随州专用汽车有限公司"," + ""F89自由项16", "F90审核日期:"");if (!FileIO.IsFolderExists(Server.MapPath("pzsc")))FileIO.CreaterFolder(Server.MapPath(""), "file://pzsc/");string filePath = Server.MapPath("pzsc") + "\" + FileName;System.IO.StreamWriter sw = new System.IO.StreamWriter(filePath, false, Encoding.GetEncoding("GB2312"));//创建的时候需要指定编码格式,默认是UTF-8,中文显示乱码sw.WriteLine(ckpw.ToString());sw.Close();方式三:用BinaryWriter复制代码代码如下://实例化一个保存文件对话框SaveFileDialog sf = new SaveFileDialog();//设置文件保存类型sf.Filter = "txt文件|*.txt|所有文件|*.*";//如果用户没有输入扩展名,自动追加后缀sf.AddExtension = true;//设置标题sf.Title = "写文件";//如果用户点击了保存按钮if (sf.ShowDialog() == DialogResult.OK){//实例化一个文件流--->与写入文件相关联FileStream fs = new FileStream(sf.FileName, FileMode.Create);//实例化BinaryWriterBinaryWriter bw = new BinaryWriter(fs);bw.Write(this.textBox1.Text);//清空缓冲区bw.Flush();//关闭流bw.Close();fs.Close();}C#缓存流示例------>用缓存流复制文件C#文件处理操作必须先导入命名空间:using System.IO;背景:使用VS2005、一个按钮、一个窗体、C#缓存流、把D:KuGoo爱得太多.wma复制到D:并更名为love.wma,即:D:love.wma在按钮的Click事件中添加如下代码:复制代码代码如下:private void button1_Click(object sender, EventArgs e){//创建两个文件流 一个是源文件相关,另一个是要写入的文件FileStream fs = new FileStream(@"D:KuGoo爱得太多.wma",FileMode.Open);FileStream fs2 = new FileStream(@"D:love.wma",FileMode.Create);//创建一个字节数组,作为两者之间的媒介//好比两个人拿苹果,这个字节数组就好比一个篮子,一个人作死的把苹果送到篮子里面,//而我就可以作死得拿苹果,通过这个媒介我们互不干扰,//不需要互相等待【她往篮子里面放了苹果我才可以去拿】,提高了效率byte[] data = new byte[1024];//创建两个缓冲流,与两个文件流相关联BufferedStream bs = new BufferedStream(fs);BufferedStream bs2= new BufferedStream(fs2);//fs作死的读,fs2作死的写,直到fs没有字节可读fs2就不写了//好比,一个人作死的往篮子里面丢苹果,另一个人作死得往篮子里面拿苹果,直到篮子里面没有苹果拿了为止//即-->那个人没有苹果往篮子里面放了while(fs.Read(data,0,data.Length)>0){fs2.Write(data,0,data.Length);fs2.Flush();}//关闭流,好比两个人累了,都要休息 呵呵o(∩_∩)o...fs.Close();fs2.Close();}C#内存流示例----->用内存流来读取图片C#文件处理操作必须先导入命名空间:using System.IO;背景:一个窗体、一个pictureBox、一个lable[没有选择图片,lable的text为"图片未选择"],在pictureBox1的Click事件中添加如下代码:复制代码代码如下:private void pictureBox1_Click(object sender, EventArgs e){//实例化一个打开文件对话框OpenFileDialog op = new OpenFileDialog();//设置文件的类型op.Filter = "JPG图片|*.jpg|GIF图片|*.gif";//如果用户点击了打开按钮、选择了正确的图片路径则进行如下操作:if(op.ShowDialog()==DialogResult.OK){//清空文本this.label1.Text = "";//实例化一个文件流FileStream fs = new FileStream(op.FileName, FileMode.Open);//把文件读取到字节数组byte[] data = new byte[fs.Length];fs.Read(data, 0, data.Length);fs.Close();//实例化一个内存流--->把从文件流中读取的内容[字节数组]放到内存流中去MemoryStream ms = new MemoryStream(data);//设置图片框 pictureBox1中的图片this.pictureBox1.Image = Image.FromStream(ms);}}2023-07-16 08:34:411
如何把excel里面一个单元格里的内容,自动导入到指定txt文件,txt原来内容自动清空。
自动不可能 兄弟2023-07-16 08:34:523
delphi 动态连接mdb
给你个动态连接的例子,其中ado是打开对话框控件 ,adocon是tadoconnection控件函数描述:通过按钮打开的对话框 选择你要连接的数据库,并与数据库建立连接.procedure TForm1.Button2Click(Sender: TObject);var acname:string; //连接数据库 str:string; sfile,sfilename:string;begin adocon.Connected:=false; acname:=ExtractFileDir(Application.ExeName)+"db";//连接数据库, ado.InitialDir:=acname; if ado.Execute then begin sfile:=ado.FileName; sfilename:=dqc.File_GetFileName(sfile); sfilename:=acname+sfilename; adocon.ConnectionString:="Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=""dqc"";Data Source="+sfilename+";Persist Security Info=False"; adocon.Connected:=true; mtip.Lines.Add("连接本地数据库成功"); end else abort;end;2023-07-16 08:35:071
vs2005如何获一个已知路径下的文件名?
这是个字符串数组,不是FileInfo类型,使用:List<FileInfo> nfiles = new List<FileInfo> 如果只删除文件,在遍历的时候,使用FileInfo.delete();或者使用DirectoryInfo.delete()删除目录。2023-07-16 08:35:142
python 读取日志文件
#coding:utf-8 #file: FileSplit.pyimport os,os.path,timedef FileSplit(sourceFile, targetFolder): sFile = open(sourceFile, "r") number = 100000 #每个小文件中保存100000条数据 dataLine = sFile.readline() tempData = [] #缓存列表 fileNum = 1 if not os.path.isdir(targetFolder): #如果目标目录不存在,则创建 os.mkdir(targetFolder) while dataLine: #有数据 for row in range(number): tempData.append(dataLine) #将一行数据添加到列表中 dataLine = sFile.readline() if not dataLine : break tFilename = os.path.join(targetFolder,os.path.split(sourceFile)[1] + str(fileNum) + ".txt") tFile = open(tFilename, "a+") #创建小文件 tFile.writelines(tempData) #将列表保存到文件中 tFile.close() tempData = [] #清空缓存列表 print(tFilename + " 创建于: " + str(time.ctime())) fileNum += 1 #文件编号 sFile.close()if __name__ == "__main__" : FileSplit("access.log","access")#coding:utf-8 #file: Map.pyimport os,os.path,redef Map(sourceFile, targetFolder): sFile = open(sourceFile, "r") dataLine = sFile.readline() tempData = {} #缓存列表 if not os.path.isdir(targetFolder): #如果目标目录不存在,则创建 os.mkdir(targetFolder) while dataLine: #有数据 p_re = re.compile(r"(GET|POST)s(.*?)sHTTP/1.[01]",re.IGNORECASE) #用正则表达式解析数据 match = p_re.findall(dataLine) if match: visitUrl = match[0][1] if visitUrl in tempData: tempData[visitUrl] += 1 else: tempData[visitUrl] = 1 dataLine = sFile.readline() #读入下一行数据 sFile.close() tList = [] for key,value in sorted(tempData.items(),key = lambda k:k[1],reverse = True): tList.append(key + " " + str(value) + " ")tFilename = os.path.join(targetFolder,os.path.split(sourceFile)[1] + "_map.txt") tFile = open(tFilename, "a+") #创建小文件 tFile.writelines(tList) #将列表保存到文件中 tFile.close()if __name__ == "__main__" : Map("access\access.log1.txt","access") Map("access\access.log2.txt","access") Map("access\access.log3.txt","access")#coding:utf-8 #file: Reduce.pyimport os,os.path,redef Reduce(sourceFolder, targetFile): tempData = {} #缓存列表 p_re = re.compile(r"(.*?)(d{1,}$)",re.IGNORECASE) #用正则表达式解析数据 for root,dirs,files in os.walk(sourceFolder): for fil in files: if fil.endswith("_map.txt"): #是reduce文件 sFile = open(os.path.abspath(os.path.join(root,fil)), "r") dataLine = sFile.readline() while dataLine: #有数据 subdata = p_re.findall(dataLine) #用空格分割数据 #print(subdata[0][0]," ",subdata[0][1]) if subdata[0][0] in tempData: tempData[subdata[0][0]] += int(subdata[0][1]) else: tempData[subdata[0][0]] = int(subdata[0][1]) dataLine = sFile.readline() #读入下一行数据 sFile.close() tList = [] for key,value in sorted(tempData.items(),key = lambda k:k[1],reverse = True): tList.append(key + " " + str(value) + " ")tFilename = os.path.join(sourceFolder,targetFile + "_reduce.txt") tFile = open(tFilename, "a+") #创建小文件 tFile.writelines(tList) #将列表保存到文件中 tFile.close()if __name__ == "__main__" : Reduce("access","access")2023-07-16 08:35:451
Python大数据, 一些简单的操作
你这是作业吗2023-07-16 08:36:234
C语言文件操作有问题 结果不是我期待的,运行后显示:Source file cannot be opened,怎么会这样!!
你的c盘根目录下有没有sfile.txt这个文件呀?没有的话肯定现实那个!2023-07-16 08:36:344
VC++已知文件路径,如何获取路径下的文件名
楼主是想从路径下得到文件名吗假设路径是C:123.txt,楼主是想要得到3.txt这个文件名吧,其实用CString很好解决,反向查找就可以了CString sPath = _T("c:\1\2\3.txt");CString sFile;int i = sPath.ReverseFind("\");if (i > 0){sFile = sPath.Mid(i + 1);//sFile就是3.txt了} 或者我理解错了,楼主是要枚举路径下的文件名?2023-07-16 08:36:401
UG生成的刀位点数据很不均匀,调了很多参数都没用,该怎样弄?
您好,创建刀具不是这个函数,这个函数是新建加工模板,用法:UF_CUTTER_create("mill_planar","mill",&temp_tool_tag);最近在做一个创建刀具的程序,使用EXECL数据文件,这样有变更需求直接在表格中做就好了。static void odbc_read_excel(int *exel_tool_count,char exel_too_para[255][7][38]){* }( w4 U5 w- S CDatabase database; CString sSql;, I/ g$ S! d6 N3 k2 J CString sItem[7];, i; u3 J: [9 R+ L; ( h6 Q4 q0 _ CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; CString sDsn;- ?( I8 K1 M& z CString sFile = GetToolParamFullPath(); * ?( K* Y) S% Z/ t- ? char *tool_param[7]={"刀具名称","刀具直径","刀具R角", "刀号","主轴转速","刀具进给","刀具切削"};9 h/ @4 X( M/ ?) S! |$ ^5 K // 将被读取的Excel文件名// int excel_id=odbc_connect(sFile);/ E3 R" E z* w8 f, R ~ // 创建进行存取的字符串% b2 S" C+ D; y5 U6 H sDsn.Format("ODBC;DRIVER={%s};DSN="";DBQ=%s", sDriver, sFile);: ]* o& a O! I& Z0 P7 o$ |5 Y! b TRY" }1 R# B6 `9 j0 @! g+ c. W {& Y0 x1 l2 d; J // 打开数据库(既Excel文件) database.Open(NULL, false, false, sDsn); CRecordset recset(&database);& F C" W3 X* J/ H& {; J // 设置读取的查询语句. sSql = "SELECT 刀具名称,刀具直径,刀具R角,刀号,主轴转速,刀具进给,刀具切削 " " H8 H" F( T, T% H9 x "FROM [sheet1$]";2023-07-16 08:36:501
EXCEL VBA 引用文件路径问题,请来帮忙,谢谢!
改Path呀,不要去改SFile,后面有好几个地方要引用这个名字,2023-07-16 08:37:002
c++链接数据库后,怎么有C++程序将xml文件导入MySQL数据库。求大神解答?
我用过两种方式访问过EXCEL表格,一种是ODBC数据库方式优点数据读取速度快,但是如果EXCEL表示一列中有数字和字符串并存的情况下可能会出现一种数据类型读取不出来,另一种是用excel提供的COM组件,此类方法操作EXCEL功能全,但是打开EXCEL和关闭速度慢,一种可行的方法是打开EXCEL表格然后读取一行保存一行数据到数据库中,这样就避免了在打开关闭EXCEL表格上花费大量时间。我这有个用这类方法读取EXCEL到数据库的例子,不过不在这里所以没法给你提供现成的代码如果你的问题没解决咱们可以互相交流下,先给你提供一点不是很全面的代码,用ODBC方式读取EXCEL表格CDatabase database;CString sSql;CString sDriver = _T("MICROSOFT EXCEL DRIVER (*.XLS)");CString sDsn,sFile;filename.TrimLeft();filename.TrimRight();// MessageBox(filename);sFile=filename;sDsn.Format(_T("ODBC;DRIVER={%s};DSN="""";Auto Translate=false;DBQ=%s"), sDriver, sFile); try{database.Open(NULL, false, false, sDsn);CRecordset recset(&database);CString str,str1;tbname.TrimLeft();tbname.TrimRight();str="SELECT * from ["+tbname+"$]" ;sSql = _T(str);recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);int count = recset.GetRecordCount();int row=0;CString data,data1,data2;while (!recset.IsEOF()){if(row++>=strow){recset.GetFieldValue(comnum, data);data2="";if(data!=""){str1=data.Right(2);if(str1!=".0")i=list->InsertString(0,data);else i=list->InsertString(0,data.Left(data.GetLength()-2));for(int xx=0;a[xx]!=-1;xx++){recset.GetFieldValue(a[xx], data1);data2+=" ["+data1+"] ";}list->SetItemDataPtr(i,new CString(data2));}}recset.MoveNext();}// 关闭数据库database.Close();}catch(CDBException e){// 数据库操作产生异常时...AfxMessageBox("数据库错误: " + e.m_strError);}2023-07-16 08:37:091
关于网络工程师的面试题有哪些
网络工程师能够从事计算机信息系统的设计、建设、运行和维护工作。下面是我为你整理的网络工程师面试题,希望对你有所帮助! 1、用户名与口令被破解 攻击原理:用户名与口令,往往是黑客们最感兴趣的东西,如果被通过某种方式看到源代码,后果是严重的。 防范技巧:涉及用户名与口令的程序最好封装在服务器端,尽量少在ASP文件里出现,涉及与数据库连接的用户名与口令应给予最小的权限。出现次数多的用户名与口令可以写在一个位置比较隐蔽的包含文件中。如果涉及与数据库连接,在理想状态下只给它以执行存储过程的权限,千万不要直接给予该用户修改、插入、删除记录的权限。 2、验证被绕过 攻击原理:现在需要经过验证的ASP程序大多是在页面头部加一个判断语句,但这还不够,有可能被黑客绕过验证直接进入。 防范技巧:需要经过验证的ASP页面,可跟踪上一个页面的文件名,只有从上一页面转进来的会话才能读取这个页面。 3、inc文件泄露问题 攻击原理:当存在ASP的主页正在制作且没有进行最后调试完成以前,可以被某些搜索引擎机动追加为搜索对象。如果这时候有人利用搜索引擎对这些网页进行查找,会得到有关文件的定位,并能在浏览器中查看到数据库地点和结构的细节,并以此揭示完整的源代码。 防范技巧:程序员应该在网页发布前对它进行彻底的调试;安全专家则需要加固ASP文件以便外部的用户不能看到它们。首先对.inc文件内容进行加密,其次也可以使用.asp文件代替.inc文件使用户无法从浏览器直接观看文件的源代码。inc文件的文件名不要使用系统默认的或者有特殊含义容易被用户猜测到的名称,尽量使用无规则的英文字母。 4、自动备份被下载 攻击原理:在有些编辑ASP程序的工具中,当创建或者修改一个ASP文件时,编辑器自动创建一个备份文件,比如:UltraEdit就会备份一个.bak文件,如你创建或者修改了some.asp,编辑器会自动生成一个叫 some.asp.bak文件,如果你没有删除这个bak文件,攻击者可以直接下载some.asp.bak文件,这样some.asp的源程序就会被下载。 防范技巧:上传程序之前要仔细检查,删除不必要的文档。对以BAK为后缀的文件要特别小心。 5、特殊字符 攻击原理:输入框是黑客利用的一个目标,他们可以通过输入脚本语言等对用户客户端造成损坏;如果该输入框涉及数据查询,他们会利用特殊查询语句,得到更多的数据库数据,甚至表的全部。因此必须对输入框进行过滤。但如果为了提高效率仅在客户端进行输入合法性检查,仍有可能被绕过。 防范技巧:在处理类似留言板、BBS等输入框的ASP程序中,最好屏蔽掉HTML、JavaScript、VBScript语句,如无特殊要求,可以限定只允许输入字母与数字,屏蔽掉特殊字符。同时对输入字符的长度进行限制。而且不但要在客户端进行输入合法性检查,同时要在服务器端程序中进行类似检查。 6、数据库下载漏洞 攻击原理:在用Access做后台数据库时,如果有人通过各种方法知道或者猜到了服务器的Access数据库的路径和数据库名称,那么他也能够下载这个Access数据库文件,这是非常危险的。 防范技巧: (1)为你的数据库文件名称起个复杂的非常规的名字,并把它放在几层目录下。所谓 “非常规”,打个比方说,比如有个数据库要保存的是有关书籍的信息,可不要给它起个“book.mdb”的名字,而要起个怪怪的名称,比如d34ksfslf.mdb,并把它放在如./kdslf/i44/studi/的几层目录下,这样黑客要想通过猜的方式得到你的Access数据库文件就难上加难了。 (2)不要把数据库名写在程序中。有些人喜欢把DSN写在程序中,比如: DBPath = Server.MapPath(“cmddb.mdb”) conn.Open “driver={Microsoft Access Driver (*.mdb)};dbq=” & DBPath 假如万一给人拿到了源程序,你的Access数据库的名字就一览无余了。因此建议你在ODBC里设置数据源,再在程序中这样写: conn.open“shujiyuan” (3)使用Access来为数据库文件编码及加密。首先在“工具u2192安全u2192加密/解密数据库”中选取数据库(如:employer.mdb),然后按确定,接着会出现“数据库加密后另存为”的窗口,可存为:“employer1.mdb”。 要注意的是,以上的动作并不是对数据库设置密码,而只是对数据库文件加以编码,目的是为了防止他人使用别的工具来查看数据库文件的内容。 接下来我们为数据库加密,首先打开经过编码了的 employer1.mdb,在打开时,选择“独占”方式。然后选取功能表的“工具u2192安全u2192设置数据库密码”,接着输入密码即可。这样即使他人得到了 employer1.mdb文件,没有密码他也是无法看到 employer1.mdb中的内容。 7、防范远程注入攻击 这类攻击在以前应该是比较常见的攻击方式,比如POST攻击,攻击者可以随便的改变要提交的数据值已达到攻击目的.又如:COOKIES 的伪造,这一点更值得引起程序编写者或站长的注意,不要使用COOKIES来做为用户验证的方式,否则你和把钥匙留给贼是同一个道理. 比如: If trim(Request. cookies (“uname”))=”fqy” and Request.cookies(“upwd”) =”fqy#e3i5.com” then u2026u2026..moreu2026u2026u2026 End if 我想各位站长或者是喜好写程序的朋友千万别出这类错误,真的是不可饶恕.伪造COOKIES 都多少年了,你还用这样的就不能怪别人跑你的密码.涉及到用户密码或者是用户登陆时,你最好使用session 它才是最安全的.如果要使用COOKIES就在你的COOKIES上多加一个信息,SessionID,它的随机值是64位的,要猜解它,不可能.例: if not (rs.BOF or rs.eof) then login=”true” Session(“username”&sessionID) = Username Session(“password”& sessionID) = Password u2018Response.cookies(“username”)= Username u2018Response.cookies(“Password”)= Password 下面我们来谈谈如何防范远程注入攻击,一般的攻击都是将单表提交文件拖到本地,将Form ACTION=”chk.asp” 指向你服务器中处理数据的文件即可.如果你全部的数据过滤都在单表页上,那么恭喜你,你将已经被脚本攻击了. 怎么才能制止这样的远程攻击?好办,请看代码如下: 程序体(9) u2018个人感觉上面的代码过滤不是很好,有一些外部提交竟然还能堂堂正正的进来,于是再写一个. u2018这个是过滤效果很好,建议使用. if instr(request.servervariables(“http_referer”),”http://”&request.servervariables(“host”) )<1 then response.write “处理 URL 时服务器上出错。 如果您是在用任何手段攻击服务器,那你应该庆幸,你的所有操作已经被服务器记录,我们会第一时间通知公安局与国家安全部门来调查你的IP. ” response.end end if 程序体(9) 本以为这样就万事大吉了,在表格页上加一些限制,比如maxlength啦,等等..但天公就是那么不作美,你越怕什么他越来什么.你别忘了,攻击者可以突破sql注入攻击时输入框长度的限制.写一个SOCKET程序改变HTTP_REFERER?我不会。网上发表了这样一篇文章: ————len.reg—————u2013 Windows Registry Editor Version 5.00 [HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMenuExt扩展(&E)] @=”C:Documents and SettingsAdministrator桌面len.htm” “contexts”=dword:00000004 ———u2013end———————- ———u2013len.htm—————— ———-end———————u2013 用法:先把len.reg导入注册表(注意文件路径) 然后把len.htm拷到注册表中指定的地方. 打开网页,光标放在要改变长度的输入框上点右键,看多了一个叫扩展的选项了吧 单击搞定! 后记:同样的也就可以对付那些限制输入内容的脚本了. 怎么办?我们的限制被饶过了,所有的努力都白费了?不,举起你de键盘,说不。让我们继续回到脚本字符的过滤吧,他们所进行的注入无非就是进行脚本攻击。我们把所有的精力全都用到ACTION以后的页面吧,在chk.asp页中,我们将非法的字符全部过滤掉,结果如何?我们只在前面虚晃一枪,叫他们去改注册表吧,当他们改完才会发现,他们所做的都是那么的徒劳。 8、ASP木马 已经讲到这里了,再提醒各位论坛站长一句,小心你们的文件上传:为什么论坛程序被攻破后主机也随之被攻击者占据。原因就在u2026u2026对!ASP木马!一个绝对可恶的东西。病毒么?非也.把个文件随便放到你论坛的程序中,您老找去吧。不吐血才怪哦。如何才能防止ASP木马被上传到服务器呢?方法很简单,如果你的论坛支持文件上传,请设定好你要上传的文件格式,我不赞成使用可更改的文件格式,直接从程序上锁定,只有图象文件格式,和压缩文件就完全可以,多给自己留点方便也就多给攻击者留点方便。怎么判断格式,我这里收集了一个,也改出了一个,大家可以看一下: 程序体(10) u2018判断文件类型是否合格 Private Function CheckFileExt (fileEXT) dim Forumupload Forumupload=”gif,jpg,bmp,jpeg” Forumupload=split(Forumupload,”,”) for i=0 to ubound(Forumupload) if lcase(fileEXT)=lcase(trim(Forumupload(i))) then CheckFileExt=true exit Function else CheckFileExt=false end if next End Function u2018验证文件内容的合法性 set MyFile = server.CreateObject (“Scripting.FileSystemObject”) set MyText = MyFile.OpenTextFile (sFile, 1) u2018 读取文本文件 sTextAll = lcase(MyText.ReadAll): MyText.close u2018判断用户文件中的危险操作 sStr =”8 .getfolder .createfolder .deletefolder .createdirectory .deletedirectory” sStr = sStr & “ .saveas wscript.shell script.encode” sNoString = split(sStr,” ”) for i = 1 to sNoString(0) if instr(sTextAll, sNoString(i)) <> 0 then sFile = Upl.Path & sFileSave: fs.DeleteFile sFile Response.write “ ”& sFileSave &”文件中含有与操作目录等有关的命令”&_ “ ”& mid(sNoString(i),2) &”,为了安全原因,不能上传。”&_” ” Response.end end if next 程序体(10)2023-07-16 08:37:191
求教VB! 编译错误: 在End Sub,End Function 或End属性后面只能出现注释
夏威夷海盗2同志:你的错误明显不是上述这些个代码出的问题。这些代码根本就没有问题。根据你的问题说“在End Sub、End Function或End属性后面只能出现注释”,那么我猜你一定是在上述代码的基础上添加过代码了,而且你添加的代码位置有误造成的问题。如果是这样,你好好检查一下自己的代码,你把新添加的代码前后调整调整位置,例如:你添加的一些像Private Declare Function 一样的声明或常量等就应该移动到上述代码之前哦。2023-07-16 08:37:323
怎样批量发送邮件?
怎样用word批量发邮件 这个需要用到【邮件合并】功能,把收件人的信息,例如姓名、邮箱地址等做成一个excel数据表,用word制作好邮件的内容。然后进行以下操作步骤: 1.07版的word,点击【邮件】》【选择收件人】》【使用现有列表】》选择你的收件人数据表》【确定】; 2.把光标定位到需要插入姓名的位置》【插入合并域】》【姓名】,然后再把光标定位到下一个需要插入合并域的位置,重复插入操作。 3.全部合并域都已经插入好了之后,点击【完成并合并】》【发送电子邮件】》选择收件人、主题》【全部】》【确定】。办公效率平台 | mysoeasy。提升office技能,提高办公效率。 里面有大量微软金牌讲师累积多年的OFFICE技术视频。还可以在遇到问题的时候直接跟专业顾问交流。以及有很多做PPT的素材图表、关系图等。 如何将大量文件打包,并发送邮件? 将全部文件保存到一个文件夹内,然后通过WINRAR压缩软件,在该文件夹上右键所标,点击“添加到压缩文件”,之后打开邮箱点击“添加附件”或者“超大附件”,添加收件人和标题发送即可。 如何用excel批量发邮件自动发邮件 outlook 在”开始“所有程序中找,然后根据提示操作使用(但首先你已申请了邮箱) 若是找不到,你可以到网上查找下载资源 怎么用64位的EXCEL批量发送邮件? 10分 VBA代码如下,自行修改相应参数 Sub send()On Error Resume NextDim NameSpace$, Email As Object, ns$, n%, t NameSpace = "schemas.microsoft/cdo/configuration/" "固定勿改 Set Email = CreateObject("CDO.Message") "固定勿改 Email.From = "[email protected]" "发件人QQ邮箱地址 Email.To = "[email protected],[email protected],[email protected],[email protected],[email protected]" "要发往的地址 Email.Subject = "邮件发送实验。" "标题 Email.Textbody = "VBA发送邮件实验中,收到请回复" "正文 "Emailbody = t "Email.AddAttachment "e:桌面嘻嘻.txt" "添加附件 With Email.Configuration.Fields .Item(NameSpace & " *** tpusessl") = 1 "是否使用SSL协议 .Item(NameSpace & "sendusing") = 2 "发送端口 .Item(NameSpace & " *** tpserver") = " *** tp.qq" "发送邮件的SMTP服务器 .Item(NameSpace & " *** tpserverport") = "465" "发送端口号 .Item(NameSpace & " *** tpauthenticate") = 1 "勿改 .Item(NameSpace & "sendusername") = "15963970" "发件人邮箱用户名。例:15963970 .Item(NameSpace & "sendpassword") = "??????????????????????" "发件人QQ密码 .Update End With Email.send ""执行发送动作If Err.Number = 0 Then "处理错误 MsgBox "发送成功"Else MsgBox "发送失败"End IfEnd Sub 如何利用“邮件合并”功能进行邮件的批量发送? Outlook随即启动Word,这时会发现多了一行工具栏。在Word文档中输入邮件内容,在“邮件合并”工具栏中单击“合并到电子邮件”按钮,再单击“确定”按钮。Outlook就会把需要发送的文档发送出去了。 如果你经常需要给某人发送电子邮件的话,可以考虑在桌面上创建一个快捷方式。这样会节省你的输入时间。 在桌面的空白区域按鼠标右键,选择“新建”下的“快捷方式”命令。在“创建快捷方式”对话框中,输入mailto:[email protected],然后单击“下一步”按钮,为该快捷方式取一个适当的名称(如“给某某人写信”),然后单击“确定”按钮。 怎么用EXCEL批量发邮件,不同的附件。 附件可逐一添加,一次发送 如何用EXCEL 批量发送邮件批量发送工资条 方法/步骤 按照下图整理工资明细表 1,列数可自行新增删除; 2,如果整理的数据列,无法发送邮件的请把表头内添加大写字母“X”; 3,工作表名称用作了邮件主题,发送前请修改工作表名称; 启用开发工具选项卡;插入命令控件;修改控件名称及显示名; 进入VBA编程界面;复制以下代码到编辑窗口。 Private Sub 全自动发送邮件_Click() "要能正确发送并需要对Microseft Outlook进行有效配置 On Error Resume Next Dim rowCount, endRowNo, endColumnNo, sFile$, sFile1$, A&, B& Dim objOutlook As Object Dim objMail As MailItem "取得当前工作表数据区行数列数 endRowNo = ActiveSheet.UsedRange.Rows.Count endColumnNo = ActiveSheet.UsedRange.Columns.Count "取得当前工作表的名称,用来作为邮件主题进行发送 sFile1 = ActiveSheet.Name "创建objOutlook为Outlook应用程序对象 Set objOutlook = CreateObject("Outlook.Application") "开始循环发送电子邮件 For rowCount = 2 To endRowNo "创建objMail为一个邮件对象 Set objMail = objOutlook.CreateItem(olMailItem) With objMail "设置收件人地址,数据源所在列数 .To = Cells(rowCount, 5) "设置抄送人地址(从通讯录表的"E-mail地址"字段中获得) ".CC = Cells(rowCount, 0) "设置邮件主题,取值工作表名, .Subject = sFile1 "设置邮件内容(从通讯录表的“内容”字段中获得) "align 单元格文本显示方式 left(向左)、center(居中)、right(向右),默认是center, width-宽 height-高 border 单元格线粗细,bordercolor返回或设置对象的边框颜色 "colSpan是一种编程语言,其属性可设置或返回表元横跨的列数 sFile = "您好! 以下是您" + sFile1 + ",请查收!" sFile = sFile + " sFile = sFile + " B = 1 For A = 1 ...... 如何批量一对一发送邮件 输入所有邮件地址后,选择分别发送,就一对一发送了,不是群发。 如何批量一对一发送邮件 输入所有邮件地址后,选择分别发送,就一对一发送了,不是群发。 如何用EXCEL 批量发送邮件批量发送工资条 如何用EXCEL 批量发送邮件批量发送工资条_百度经验 jingyan.baidu/...8 冀ICP备13008870 粤公网安备 44023202000125号站点地图 " 工资表 "2023-07-16 08:37:411
如何使用Python分析大数据
#coding:utf-8 #file: FileSplit.pyimport os,os.path,timedef FileSplit(sourceFile, targetFolder): sFile = open(sourceFile, "r") number = 100000 #每个小文件中保存100000条数据 dataLine = sFile.readline() tempData = [] #缓存列表 fileNum = 1 if not os.path.isdir(targetFolder): #如果目标目录不存在,则创建 os.mkdir(targetFolder) while dataLine: #有数据 for row in range(number): tempData.append(dataLine) #将一行数据添加到列表中 dataLine = sFile.readline() if not dataLine : break tFilename = os.path.join(targetFolder,os.path.split(sourceFile)[1] + str(fileNum) + ".txt") tFile = open(tFilename, "a+") #创建小文件 tFile.writelines(tempData) #将列表保存到文件中 tFile.close() tempData = [] #清空缓存列表 print(tFilename + " 创建于: " + str(time.ctime())) fileNum += 1 #文件编号 sFile.close()if __name__ == "__main__" : FileSplit("access.log","access")====#coding:utf-8 #file: Map.pyimport os,os.path,redef Map(sourceFile, targetFolder): sFile = open(sourceFile, "r") dataLine = sFile.readline() tempData = {} #缓存列表 if not os.path.isdir(targetFolder): #如果目标目录不存在,则创建 os.mkdir(targetFolder) while dataLine: #有数据 p_re = re.compile(r"(GET|POST)s(.*?)sHTTP/1.[01]",re.IGNORECASE) #用正则表达式解析数据 match = p_re.findall(dataLine) if match: visitUrl = match[0][1] if visitUrl in tempData: tempData[visitUrl] += 1 else: tempData[visitUrl] = 1 dataLine = sFile.readline() #读入下一行数据 sFile.close() tList = [] for key,value in sorted(tempData.items(),key = lambda k:k[1],reverse = True): tList.append(key + " " + str(value) + " ")tFilename = os.path.join(targetFolder,os.path.split(sourceFile)[1] + "_map.txt") tFile = open(tFilename, "a+") #创建小文件 tFile.writelines(tList) #将列表保存到文件中 tFile.close()if __name__ == "__main__" : Map("access\access.log1.txt","access") Map("access\access.log2.txt","access") Map("access\access.log3.txt","access")==#coding:utf-8 #file: Reduce.pyimport os,os.path,redef Reduce(sourceFolder, targetFile): tempData = {} #缓存列表 p_re = re.compile(r"(.*?)(d{1,}$)",re.IGNORECASE) #用正则表达式解析数据 for root,dirs,files in os.walk(sourceFolder): for fil in files: if fil.endswith("_map.txt"): #是reduce文件 sFile = open(os.path.abspath(os.path.join(root,fil)), "r") dataLine = sFile.readline() while dataLine: #有数据 subdata = p_re.findall(dataLine) #用空格分割数据 #print(subdata[0][0]," ",subdata[0][1]) if subdata[0][0] in tempData: tempData[subdata[0][0]] += int(subdata[0][1]) else: tempData[subdata[0][0]] = int(subdata[0][1]) dataLine = sFile.readline() #读入下一行数据 sFile.close() tList = [] for key,value in sorted(tempData.items(),key = lambda k:k[1],reverse = True): tList.append(key + " " + str(value) + " ")tFilename = os.path.join(sourceFolder,targetFile + "_reduce.txt") tFile = open(tFilename, "a+") #创建小文件 tFile.writelines(tList) #将列表保存到文件中 tFile.close()if __name__ == "__main__" : Reduce("access","access")2023-07-16 08:38:022
c#编程 如何从自己建的Tomcat服务器上下载文本和上传文本?请完整代码+注释 在线等。。。。
刚好有个小例子,已发送至你邮箱。你看行不。。。。2023-07-16 08:38:412
python具体在文本处理上怎么用
首先切割数据到小文件:#coding:utf-8#file: FileSplit.pyimport os,os.path,timedef FileSplit(sourceFile, targetFolder):sFile = open(sourceFile, "r")number = 100000 #每个小文件中保存100000条数据dataLine = sFile.readline()tempData = [] #缓存列表fileNum = 1if not os.path.isdir(targetFolder): #如果目标目录不存在,则创建os.mkdir(targetFolder)while dataLine: #有数据for row in range(number):tempData.append(dataLine) #将一行数据添加到列表中dataLine = sFile.readline()if not dataLine :breaktFilename = os.path.join(targetFolder,os.path.split(sourceFile)[1] + str(fileNum) + ".txt")tFile = open(tFilename, "a+") #创建小文件tFile.writelines(tempData) #将列表保存到文件中tFile.close()tempData = [] #清空缓存列表print(tFilename + " 创建于: " + str(time.ctime()))fileNum += 1 #文件编号sFile.close()if __name__ == "__main__" :FileSplit("access.log","access")2. 对小文件分类汇总#coding:utf-8#file: Map.pyimport os,os.path,redef Map(sourceFile, targetFolder):sFile = open(sourceFile, "r")dataLine = sFile.readline()tempData = {} #缓存列表if not os.path.isdir(targetFolder): #如果目标目录不存在,则创建os.mkdir(targetFolder)while dataLine: #有数据p_re = re.compile(r"(GET|POST)s(.*?)sHTTP/1.[01]",re.IGNORECASE) #用正则表达式解析数据match = p_re.findall(dataLine)if match:visitUrl = match[0][1]if visitUrl in tempData:tempData[visitUrl] += 1else:tempData[visitUrl] = 1dataLine = sFile.readline() #读入下一行数据sFile.close()tList = []for key,value in sorted(tempData.items(),key = lambda k:k[1],reverse = True):tList.append(key + " " + str(value) + " ")tFilename = os.path.join(targetFolder,os.path.split(sourceFile)[1] + "_map.txt")tFile = open(tFilename, "a+") #创建小文件tFile.writelines(tList) #将列表保存到文件中tFile.close()if __name__ == "__main__" :Map("access\access.log1.txt","access")Map("access\access.log2.txt","access")Map("access\access.log3.txt","access")最后全部分类汇总得到一个文件:#coding:utf-8#file: Reduce.pyimport os,os.path,redef Reduce(sourceFolder, targetFile):tempData = {} #缓存列表p_re = re.compile(r"(.*?)(d{1,}$)",re.IGNORECASE) #用正则表达式解析数据for root,dirs,files in os.walk(sourceFolder):for fil in files:if fil.endswith("_map.txt"): #是reduce文件sFile = open(os.path.abspath(os.path.join(root,fil)), "r")dataLine = sFile.readline()while dataLine: #有数据subdata = p_re.findall(dataLine) #用空格分割数据#print(subdata[0][0]," ",subdata[0][1])if subdata[0][0] in tempData:tempData[subdata[0][0]] += int(subdata[0][1])else:tempData[subdata[0][0]] = int(subdata[0][1])dataLine = sFile.readline() #读入下一行数据sFile.close()tList = []for key,value in sorted(tempData.items(),key = lambda k:k[1],reverse = True):tList.append(key + " " + str(value) + " ")tFilename = os.path.join(sourceFolder,targetFile + "_reduce.txt")tFile = open(tFilename, "a+") #创建小文件tFile.writelines(tList) #将列表保存到文件中tFile.close()if __name__ == "__main__" :Reduce("access","access")2023-07-16 08:38:512
怎样传入cstring参数进行MD5加密,谁有这个函数?
`答复你的给的百度消息:将md5.h包涵进你要定义调用myMd5函数的cpp文件中。关于这点只是你没有仔细看下面的内容。我让了“包涵”两字了。。。帮你改写了下标准MD5类。CString myMd5(CString str);就是你要的函数。。。共两个文件(这是必须的。一个头文件md5.h,一个代码文件md5.cpp)添加到工程中。将md5.h包涵进来了就可以用CString myMd5(CString str);这个全局函数。代码:///////////////////////////////////////////////////////////////////////md5.h this is the head of the class md5.#include <windows.h>#include <fstream.h>#ifndef __MD5CLASS__#define __MD5CLASS__#define ENGLISH#define S11 7#define S12 12#define S13 17#define S14 22#define S21 5#define S22 9#define S23 14#define S24 20#define S31 4#define S32 11#define S33 16#define S34 23#define S41 6#define S42 10#define S43 15#define S44 21typedef LONGLONG LONG64;///////关键是定义了这个函数CString myMd5(CString str);/////////////////////////class CMd5{public: CMd5(); CMd5(char *filename); ~CMd5(); LPCSTR TargetFile(char *filename=NULL); void TargetStr(LPCSTR str); LPCSTR GetDigestKey(); LPCSTR GetErr();private: inline ULONG LRotate(ULONG Sdata,int nBit); inline ULONG F(ULONG x,ULONG y,ULONG z); inline ULONG G(ULONG x,ULONG y,ULONG z); inline ULONG H(ULONG x,ULONG y,ULONG z); inline ULONG I(ULONG x,ULONG y,ULONG z); inline void FF(ULONG &a,ULONG b,ULONG c,ULONG d,ULONG Msg,int nBit,ULONG Cnt); inline void GG(ULONG &a,ULONG b,ULONG c,ULONG d,ULONG Msg,int nBit,ULONG Cnt); inline void HH(ULONG &a,ULONG b,ULONG c,ULONG d,ULONG Msg,int nBit,ULONG Cnt); inline void II(ULONG &a,ULONG b,ULONG c,ULONG d,ULONG Msg,int nBit,ULONG Cnt);private: bool Init(); bool OpenFile(); bool Read64Byte(); void TransForm(); bool CaculateFile(); bool CaculateStr(LPCSTR str); void SetErr(int nErr); void JustifytoStr();protected: fstream Sfile; ULONG *pM; LPVOID Pointer; ULONG T[4]; bool IsSuc; char fname[MAX_PATH]; LONG64 FileLen; static const ULONG Context[4]; static const LPSTR ErrInfo[5][2]; char strErr[50]; char Digest[33];};#endif/* MD5 ("") = d41d8cd98f00b204e9800998ecf8427e MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661 MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72 MD5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0 MD5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b MD5 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") =d174ab98d277d9f5a5611c2c9f419d9f MD5 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = 57edf4a22be3c955ac49da2e2107b67a*////////////////////////////////////////////////////////////////////////md5.cpp/////#include "StdAfx.h"#include "md5.h"#include <conio.h>#include <stdexcept>using namespace std;CString myMd5(CString str){ CMd5 md5; LPCSTR checksum; md5.TargetStr(str.GetBuffer(0)); if(checksum=md5.GetDigestKey()) { return CString(checksum); } else { return CString(md5.GetErr()); } }const ULONG CMd5::Context[4]={ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476 };/*const ULONG CMd5::Context[4]= {0X01234567, 0X89abcdef, 0Xfedcba98, 0X76543210 };*/const LPSTR CMd5::ErrInfo[5][2]={ {"",""}, {"The Memory is not enough !","内存分配失败!"}, {"Have not assign a file !","未指定文件!"}, {"Have not assign the text !","未指定文本!"}, {"Have something wrong with MD5!","有错误发生!"}, };//==========================<内联函数实现>=========================================ULONG CMd5::LRotate(ULONG Sdata,int nBit){ return (Sdata<<nBit)|(Sdata>>(32-nBit));}ULONG CMd5::F(ULONG x,ULONG y,ULONG z){ return (x&y)|((~x)&z);}ULONG CMd5::G(ULONG x,ULONG y,ULONG z){ return (x&z)|(y&(~z));}ULONG CMd5::H(ULONG x,ULONG y,ULONG z){ return x^y^z;}ULONG CMd5::I(ULONG x,ULONG y,ULONG z){ return y^(x|(~z));}void CMd5::FF(ULONG &a,ULONG b,ULONG c,ULONG d,ULONG Msg,int nBit,ULONG Cnt){ a+=F(b,c,d)+Msg+(ULONG)Cnt; a=LRotate(a,nBit); a+=b;}void CMd5::GG(ULONG &a,ULONG b,ULONG c,ULONG d,ULONG Msg,int nBit,ULONG Cnt){ a+=G(b,c,d)+Msg+(ULONG)Cnt; a=LRotate(a,nBit); a+=b;}void CMd5::HH(ULONG &a,ULONG b,ULONG c,ULONG d,ULONG Msg,int nBit,ULONG Cnt){ a+=H(b,c,d)+Msg+(ULONG)Cnt; a=LRotate(a,nBit); a+=b;}void CMd5::II(ULONG &a,ULONG b,ULONG c,ULONG d,ULONG Msg,int nBit,ULONG Cnt){ a+=I(b,c,d)+Msg+(ULONG)Cnt; a=LRotate(a,nBit); a+=b;}//==========================<成员函数实现>======================================CMd5::CMd5(){ IsSuc=false; Pointer=NULL; memset(strErr,0,50);}CMd5::CMd5(char *filename){ IsSuc=false; Pointer=NULL; memset(strErr,0,50); TargetFile(filename); }CMd5::~CMd5(){ if(Sfile.is_open())Sfile.close(); if(Pointer){delete[]Pointer; Pointer=NULL;}}LPCSTR CMd5::TargetFile(char *filename){ if(!Init())SetErr(1); static char temp[MAX_PATH]; strcpy(temp,fname); strcpy(fname,filename); CaculateFile(); return temp;}void CMd5::TargetStr(LPCSTR str){ if(!Init())SetErr(1); CaculateStr(str);}bool CMd5::Init(){ *fname=""; IsSuc=true; *Digest=""; try{ Pointer=new BYTE[sizeof(ULONG)*16]; } catch(bad_alloc w) { Pointer=NULL; SetErr(1); } pM=(ULONG*)Pointer; FileLen=0; for(int i=0;i<4;i++) T[i]=Context[i]; return true;}bool CMd5::OpenFile(){ Sfile.open(fname,ios::in|ios::nocreate|ios::binary); if(!Sfile) { SetErr(0); } return true;}bool CMd5::Read64Byte(){ static bool rb=true; int n; if(!Sfile.eof()) { Sfile.read((char*)Pointer,sizeof(ULONG)*16); FileLen+=n=Sfile.gcount(); if(n<64) { char* p=(char*)Pointer+n; memset((void *)p,0,64-n); *p=(char)0x80; rb=false; if(n<56) { LONG64 *pt=(LONG64*)Pointer+7; *pt=FileLen*8; return false; } } return true; } else { memset(Pointer,0,64); if(rb)*(char*)Pointer=(char)0x80; LONG64 *pt=(LONG64 *)Pointer+7; *pt=FileLen*8; return false; }}void CMd5::TransForm(){ MSG msg; while(PeekMessage(&msg,NULL,0,0,PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } ULONG a=T[0],b=T[1],c=T[2],d=T[3]; //第一轮--------------------------------> FF (a, b, c, d, pM[ 0], S11, 0xd76aa478); //- 1 - FF (d, a, b, c, pM[ 1], S12, 0xe8c7b756); //- 2 - FF (c, d, a, b, pM[ 2], S13, 0x242070db); //- 3 - FF (b, c, d, a, pM[ 3], S14, 0xc1bdceee); //- 4 - FF (a, b, c, d, pM[ 4], S11, 0xf57c0faf); //- 5 - FF (d, a, b, c, pM[ 5], S12, 0x4787c62a); //- 6 - FF (c, d, a, b, pM[ 6], S13, 0xa8304613); //- 7 - FF (b, c, d, a, pM[ 7], S14, 0xfd469501); //- 8 - FF (a, b, c, d, pM[ 8], S11, 0x698098d8); //- 9 - FF (d, a, b, c, pM[ 9], S12, 0x8b44f7af); //- 10 - FF (c, d, a, b, pM[10], S13, 0xffff5bb1); //- 11 - FF (b, c, d, a, pM[11], S14, 0x895cd7be); //- 12 - FF (a, b, c, d, pM[12], S11, 0x6b901122); //- 13 - FF (d, a, b, c, pM[13], S12, 0xfd987193); //- 14 - FF (c, d, a, b, pM[14], S13, 0xa679438e); //- 15 - FF (b, c, d, a, pM[15], S14, 0x49b40821); //- 16 - //第二轮---------------------------------> GG (a, b, c, d, pM[ 1], S21, 0xf61e2562); //- 17 - GG (d, a, b, c, pM[ 6], S22, 0xc040b340); //- 18 - GG (c, d, a, b, pM[11], S23, 0x265e5a51); //- 19 - GG (b, c, d, a, pM[ 0], S24, 0xe9b6c7aa); //- 20 - GG (a, b, c, d, pM[ 5], S21, 0xd62f105d); //- 21 - GG (d, a, b, c, pM[10], S22, 0x2441453); //- 22 - GG (c, d, a, b, pM[15], S23, 0xd8a1e681); //- 23 - GG (b, c, d, a, pM[ 4], S24, 0xe7d3fbc8); //- 24 - GG (a, b, c, d, pM[ 9], S21, 0x21e1cde6); //- 25 - GG (d, a, b, c, pM[14], S22, 0xc33707d6); //- 26 - GG (c, d, a, b, pM[ 3], S23, 0xf4d50d87); //- 27 - GG (b, c, d, a, pM[ 8], S24, 0x455a14ed); //- 28 - GG (a, b, c, d, pM[13], S21, 0xa9e3e905); //- 29 - GG (d, a, b, c, pM[ 2], S22, 0xfcefa3f8); //- 30 - GG (c, d, a, b, pM[ 7], S23, 0x676f02d9); //- 31 - GG (b, c, d, a, pM[12], S24, 0x8d2a4c8a); //- 32 - //第三轮---------------------------------> HH (a, b, c, d, pM[ 5], S31, 0xfffa3942); //- 33 - HH (d, a, b, c, pM[ 8], S32, 0x8771f681); //- 34 - HH (c, d, a, b, pM[11], S33, 0x6d9d6122); //- 35 - HH (b, c, d, a, pM[14], S34, 0xfde5380c); //- 36 - HH (a, b, c, d, pM[ 1], S31, 0xa4beea44); //- 37 - HH (d, a, b, c, pM[ 4], S32, 0x4bdecfa9); //- 38 - HH (c, d, a, b, pM[ 7], S33, 0xf6bb4b60); //- 39 - HH (b, c, d, a, pM[10], S34, 0xbebfbc70); //- 40 - HH (a, b, c, d, pM[13], S31, 0x289b7ec6); //- 41 - HH (d, a, b, c, pM[ 0], S32, 0xeaa127fa); //- 42 - HH (c, d, a, b, pM[ 3], S33, 0xd4ef3085); //- 43 - HH (b, c, d, a, pM[ 6], S34, 0x4881d05); //- 44 - HH (a, b, c, d, pM[ 9], S31, 0xd9d4d039); //- 45 - HH (d, a, b, c, pM[12], S32, 0xe6db99e5); //- 46 - HH (c, d, a, b, pM[15], S33, 0x1fa27cf8); //- 47 - HH (b, c, d, a, pM[ 2], S34, 0xc4ac5665); //- 48 - //第四轮--------------------------------> II (a, b, c, d, pM[ 0], S41, 0xf4292244); //- 49 - II (d, a, b, c, pM[ 7], S42, 0x432aff97); //- 50 - II (c, d, a, b, pM[14], S43, 0xab9423a7); //- 51 - II (b, c, d, a, pM[ 5], S44, 0xfc93a039); //- 52 - II (a, b, c, d, pM[12], S41, 0x655b59c3); //- 53 - II (d, a, b, c, pM[ 3], S42, 0x8f0ccc92); //- 54 - II (c, d, a, b, pM[10], S43, 0xffeff47d); //- 55 - II (b, c, d, a, pM[ 1], S44, 0x85845dd1); //- 56 - II (a, b, c, d, pM[ 8], S41, 0x6fa87e4f); //- 57 - II (d, a, b, c, pM[15], S42, 0xfe2ce6e0); //- 58 - II (c, d, a, b, pM[ 6], S43, 0xa3014314); //- 59 - II (b, c, d, a, pM[13], S44, 0x4e0811a1); //- 60 - II (a, b, c, d, pM[ 4], S41, 0xf7537e82); //- 61 - II (d, a, b, c, pM[11], S42, 0xbd3af235); //- 62 - II (c, d, a, b, pM[ 2], S43, 0x2ad7d2bb); //- 63 - II (b, c, d, a, pM[ 9], S44, 0xeb86d391); //- 64 - T[0]+=a; T[1]+=b; T[2]+=c; T[3]+=d; return ;}LPCSTR CMd5::GetDigestKey(){ if(IsSuc) { return Digest; } SetErr(4); return NULL;}bool CMd5::CaculateFile(){ if(*fname==0){ SetErr(2);return false;} if(!OpenFile()){SetErr(0);return false;} bool bl; do { bl=Read64Byte(); TransForm(); }while(bl); JustifytoStr(); return true;}bool CMd5::CaculateStr(LPCSTR str){ ULONG slen=strlen(str); ULONG n=slen/64,ntail=slen%64; for(int i=0;i<n;i++) { ULONG *p=(ULONG *)str; TransForm(); pM+=16; } memset(Pointer,0,64); memcpy(Pointer,str,ntail); UCHAR *pt=(UCHAR *)Pointer+ntail; *pt=0x80; LONG64 *pl=(LONG64 *)Pointer+7; *pl=(LONG64)(slen*8); TransForm(); JustifytoStr(); return true;}void CMd5::SetErr(int nErr){if(*strErr)return;IsSuc=false;if(nErr==0){#ifndef ENGLISH sprintf(strErr,"打不开文件 [ %s ] ! 请确认文件是否存在 !",fname);#else sprintf(strErr,"Can not open the file [ %s ] !",fname);#endif}else {#ifndef ENGLISH strcpy(strErr,ErrInfo[nErr][1]); #else strcpy(strErr,ErrInfo[nErr][0]);#endif}}LPCSTR CMd5::GetErr(){ if(!*strErr) {#ifndef ENGLISH return "未发生错误 !";#else return "No error !";#endif } else return strErr;}void CMd5::JustifytoStr(){ char temp[10]; for(int i=0;i<4;i++) { T[i]=(T[i]<<24)|((T[i]&0xff00)<<8)|((T[i]&0xff0000)>>8)|(T[i]>>24); sprintf(temp,"%08x",T[i]); strcat(Digest,temp); }}对回答有问题,或认为不妥,百度消息我。 (在消息的内容里加上问题的网址哦)`2023-07-16 08:38:581
用EXCEL的VBA归类风向风速
<DIV class=cnblogs_Highlighter><PRE class=brush:csharp;gutter:false;> <DIV class=cnblogs_Highlighter><PRE class=brush:csharp;gutter:false;>Sub cal() Dim wN As Double "北 Dim wNNE As Double "北东北 Dim wNE As Double "东北 Dim wENE As Double "东东北 Dim wE As Double "东 Dim wESE As Double "东东南 Dim wSE As Double "东南 Dim wSSE As Double "南东南 Dim wS As Double "南 Dim wSSW As Double "南西南 Dim wSW As Double "西南 Dim wWSW As Double "西西南 Dim wW As Double "西 Dim wWNW As Double "西西北 Dim wNW As Double "西北 Dim wNNW As Double "北西北 Dim vN As Double "北 Dim vNNE As Double "北东北 Dim vNE As Double "东北 Dim vENE As Double "东东北 Dim vE As Double "东 Dim vESE As Double "东东南 Dim vSE As Double "东南 Dim vSSE As Double "南东南 Dim vS As Double "南 Dim vSSW As Double "南西南 Dim vSW As Double "西南 Dim vWSW As Double "西西南 Dim vW As Double "西 Dim vWNW As Double "西西北 Dim vNW As Double "西北 Dim vNNW As Double "北西北 Dim num As Integer "1-12 Dim i As Integer "6-66 Dim j As Integer "3-26 Dim nameid As Integer "1-15 For num = 1 To Sheets.Count For i = 6 To 66 Step 2 For j = 3 To 26 If Sheets(num).Cells(i, j) <> "" Then If Sheets(num).Cells(i, j) > 348.76 Or Sheets(num).Cells(i, j) < 11.25 Then If Sheets(num).Cells(i + 1, j) > 5# Then wN = wN + 1 vN = vN + Sheets(num).Cells(i + 1, j) End If ElseIf Sheets(num).Cells(i, j) > 11.26 And Sheets(num).Cells(i, j) < 33.75 Then If Sheets(num).Cells(i + 1, j) > 5# Then wNNE = wNNE + 1 vNNE = vNNE + Sheets(num).Cells(i + 1, j) End If ElseIf Sheets(num).Cells(i, j) > 33.76 And Sheets(num).Cells(i, j) < 56.25 Then If Sheets(num).Cells(i + 1, j) > 5# Then wNE = wNE + 1 vNE = vNE + Sheets(num).Cells(i + 1, j) End If ElseIf Sheets(num).Cells(i, j) > 56.26 And Sheets(num).Cells(i, j) < 78.75 Then If Sheets(num).Cells(i + 1, j) > 5# Then wENE = wENE + 1 vENE = vENE + Sheets(num).Cells(i + 1, j) End If ElseIf Sheets(num).Cells(i, j) > 78.76 And Sheets(num).Cells(i, j) < 101.25 Then If Sheets(num).Cells(i + 1, j) > 5# Then wE = wE + 1 vE = vE + Sheets(num).Cells(i + 1, j) End If ElseIf Sheets(num).Cells(i, j) > 101.26 And Sheets(num).Cells(i, j) < 123.75 Then If Sheets(num).Cells(i + 1, j) > 5# Then wESE = wESE + 1 vESE = vESE + Sheets(num).Cells(i + 1, j) End If ElseIf Sheets(num).Cells(i, j) > 123.76 And Sheets(num).Cells(i, j) < 146.25 Then If Sheets(num).Cells(i + 1, j) > 5# Then wSE = wSE + 1 vSE = vSE + Sheets(num).Cells(i + 1, j) End If ElseIf Sheets(num).Cells(i, j) > 146.26 And Sheets(num).Cells(i, j) < 168.75 Then If Sheets(num).Cells(i + 1, j) > 5# Then wSSE = wSSE + 1 vSSE = vSSE + Sheets(num).Cells(i + 1, j) End If ElseIf Sheets(num).Cells(i, j) > 168.76 And Sheets(num).Cells(i, j) < 191.25 Then If Sheets(num).Cells(i + 1, j) > 5# Then wS = wS + 1 vS = vS + Sheets(num).Cells(i + 1, j) End If ElseIf Sheets(num).Cells(i, j) > 191.26 And Sheets(num).Cells(i, j) < 213.75 Then If Sheets(num).Cells(i + 1, j) > 5# Then wSSW = wSSW + 1 vSSW = vSSW + Sheets(num).Cells(i + 1, j) End If ElseIf Sheets(num).Cells(i, j) > 213.76 And Sheets(num).Cells(i, j) < 236.25 Then If Sheets(num).Cells(i + 1, j) > 5# Then wSW = wSW + 1 vSW = vSW + Sheets(num).Cells(i + 1, j) End If ElseIf Sheets(num).Cells(i, j) > 236.26 And Sheets(num).Cells(i, j) < 258.75 Then If Sheets(num).Cells(i + 1, j) > 5# Then wWSW = wWSW + 1 vWSW = vWSW + Sheets(num).Cells(i + 1, j) End If ElseIf Sheets(num).Cells(i, j) > 258.76 And Sheets(num).Cells(i, j) < 281.25 Then If Sheets(num).Cells(i + 1, j) > 5# Then wW = wW + 1 vW = vW + Sheets(num).Cells(i + 1, j) End If ElseIf Sheets(num).Cells(i, j) > 281.26 And Sheets(num).Cells(i, j) < 303.75 Then If Sheets(num).Cells(i + 1, j) > 5# Then wWNW = wWNW + 1 vWNW = vWNW + Sheets(num).Cells(i + 1, j) End If ElseIf Sheets(num).Cells(i, j) > 303.76 And Sheets(num).Cells(i, j) < 326.25 Then If Sheets(num).Cells(i + 1, j) > 5# Then wNW = wNW + 1 vNW = vNW + Sheets(num).Cells(i + 1, j) End If ElseIf Sheets(num).Cells(i, j) > 326.26 And Sheets(num).Cells(i, j) < 348.75 Then If Sheets(num).Cells(i + 1, j) > 5# Then wNNW = wNNW + 1 vNNW = vNNW + Sheets(num).Cells(i + 1, j) End If End If End If Next j Next i """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Dim filename As String filename = "" For nameid = 1 To 15 filename = filename & Sheets(num).Cells(4, nameid) Next nameid """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Dim sFile As Object, FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") Set sFile = FSO.CreateTextFile("C:" & filename & ".txt", True) sFile.WriteLine ("wN" & vbTab & wN) sFile.WriteLine ("wNNE" & vbTab & wNNE) sFile.WriteLine ("wNE" & vbTab & wNE) sFile.WriteLine ("wENE" & vbTab & wENE) sFile.WriteLine ("wE" & vbTab & wE) sFile.WriteLine ("wESE" & vbTab & wESE) sFile.WriteLine ("wSE" & vbTab & wSE) sFile.WriteLine ("wSSE" & vbTab & wSSE) sFile.WriteLine ("wS" & vbTab & wS) sFile.WriteLine ("wSSW" & vbTab & wSSW) sFile.WriteLine ("wSW" & vbTab & wSW) sFile.WriteLine ("wWSW" & vbTab & wWSW) sFile.WriteLine ("wW" & vbTab & wW) sFile.WriteLine ("wWNW" & vbTab & wWNW) sFile.WriteLine ("wNW" & vbTab & wNW) sFile.WriteLine ("wNNW" & vbTab & wNNW) """""""""""""""""""""""""""""""""" sFile.WriteLine ("vN" & vbTab & vN) sFile.WriteLine ("vNNE" & vbTab & vNNE) sFile.WriteLine ("wNE" & vbTab & wNE) sFile.WriteLine ("vENE" & vbTab & vENE) sFile.WriteLine ("vE" & vbTab & vE) sFile.WriteLine ("vESE" & vbTab & vESE) sFile.WriteLine ("vSE" & vbTab & vSE) sFile.WriteLine ("vSSE" & vbTab & vSSE) sFile.WriteLine ("vS" & vbTab & vS) sFile.WriteLine ("vSSW" & vbTab & vSSW) sFile.WriteLine ("vSW" & vbTab & vSW) sFile.WriteLine ("vWSW" & vbTab & vWSW) sFile.WriteLine ("vW" & vbTab & vW) sFile.WriteLine ("vWNW" & vbTab & vWNW) sFile.WriteLine ("vNW" & vbTab & vNW) sFile.WriteLine ("vNNW" & vbTab & vNNW) sFile.Close Set sFile = Nothing Set FSO = Nothing Next num MsgBox "计算完成" End Sub </PRE> </DIV> </PRE> </DIV>2023-07-16 08:39:202
vb读取unicode编码字符(藏语)时乱码 该如何读入啊(汉语,藏语,英文混合文本)???谢谢啦
Text1.Text 空间不支持显示unicode字符2023-07-16 08:39:392
VB程序如何读取自己的版本号和时间信息
"版本号可以用app方式查看Private Sub Form_Load()Label1.Caption = App.RevisionEnd Sub"时间可以参考一下如果只是查看大小、修改时间的话,可以直接使用VB内建函数:返回文件修改时间:FileDateTime(文件路径)返回文件字节大小:FileLen(文件路径)示例:Private Sub Form_Load()Dim sOut As StringConst sFile As String = "C:WINDOWS otepad.exe" sOut = "文件路径: " & sFile & vbCrLf & _ "修改日期: " & FileDateTime(sFile) & vbCrLf & _ "文件大小: " & FileLen(sFile) & "字节" MsgBox sOutEnd Sub如果要更多属性,则需要用到FSO。只有运行时确定用户的机器上有且没有禁用“Microsoft Scripting Runtime”。工程=>引用,钩选“Microsoft Scripting Runtime”,确定。示例:Private Sub Form_Load()Dim sOut As StringConst sFile As String = "C:WINDOWS otepad.exe" sOut = "文件路径: " & sFile & vbCrLf & _ "创建日期: " & GetFileAttr(sFile, 0) & vbCrLf & _ "修改日期: " & GetFileAttr(sFile, 1) & vbCrLf & _ "访问日期: " & GetFileAttr(sFile, 2) & vbCrLf & _ "文件大小: " & GetFileAttr(sFile, 3) & "字节" & vbCrLf & _ "文件类型: " & GetFileAttr(sFile, 4) MsgBox sOutEnd SubPrivate Function GetFileAttr(sPath As String, iAttr As Integer)Dim oFSO As New FileSystemObjectDim oFile As FileDim sOut As String Set oFile = oFSO.GetFile(sPath) Select Case iAttr Case 0 "创建日期 sOut = oFile.DateCreated Case 1 "修改日期 sOut = oFile.DateLastModified Case 2 "访问日期 sOut = oFile.DateLastAccessed Case 3 "文件大小 sOut = oFile.Size Case 4 "文件类型 sOut = oFile.Type End Select GetFileAttr = sOutEnd Function2023-07-16 08:39:471
python 3 文本处理例子求代码
看不懂问题2023-07-16 08:40:062
linux 中tar命令 -f选项的作用是么? 请详解
tar命令tar [-cxtzjvfpPN] 文件与目录 .... 参数: -c :建立一个压缩文件的参数指令(create 的意思); -x :解开一个压缩文件的参数指令! -t :查看 tarfile 里面的文件! 特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在! 因为不可能同时压缩与解压缩。 -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩? -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩? -v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程! -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数! 例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成 『 tar -zcvPf tfile sfile』才对喔! -p :使用原文件的原来属性(属性不会依据使用者而变) -P :可以使用绝对路径来压缩! -N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中! --exclude FILE:在压缩的过程中,不要将 FILE 打包!2023-07-16 08:40:141
VB如何文件目录读取图像属性宽和高的像素尺寸?
使用picturebox控件 就可以获取图片文件的大小2023-07-16 08:40:241
Excel批量生成TXT A列为标题 B列为内容?
Private Sub Test() Dim gPath As String Dim sFile As Object, Fso As Object gPath = Application.ActiveWorkbook.Path Set Fso = CreateObject("Scripting.FileSystemObject")for i=1 to [A65535].end(xlup).row Set sFile = Fso.CreateTextFile(gPath & cells(i,"A").text, True) sFile.WriteLine (cells(i,"B").text)next sFile.Close Set sFile = Nothing Set Fso = Nothing End Sub2023-07-16 08:40:372
newSystem.IO.MemoryStream;能自动读取内存的信息么
1、使用FileStream读写文件文件头:复制代码代码如下:using System;using System.Collections.Generic;using System.Text;using System.IO;读文件核心代码:复制代码代码如下:byte[] byData = new byte[100];char[] charData = new char[1000];try{FileStream sFile = new FileStream("文件路径",FileMode.Open);sFile.Seek(55, SeekOrigin.Begin);sFile.Read(byData, 0, 100); //第一个参数是被传进来的字节数组,用以接受FileStream对象中的数据,第2个参数是字节数组中开始写入数据的位置,它通常是0,表示从数组的开端文件中向数组写数据,最后一个参数规定从文件读多少字符.}catch (IOException e){Console.WriteLine("An IO exception has been thrown!");Console.WriteLine(e.ToString());Console.ReadLine();return;}Decoder d = Encoding.UTF8.GetDecoder();d.GetChars(byData, 0, byData.Length, charData, 0);Console.WriteLine(charData);Console.ReadLine();写文件核心代码:复制代码代码如下:FileStream fs = new FileStream(文件路径,FileMode.Create);//获得字节数组byte [] data =new UTF8Encoding().GetBytes(String);//开始写入fs.Write(data,0,data.Length);//清空缓冲区、关闭流fs.Flush();fs.Close();2、使用StreamReader和StreamWriter文件头:复制代码代码如下:using System;using System.Collections.Generic;using System.Text;using System.IO;StreamReader读取文件:复制代码代码如下:StreamReader objReader = new StreamReader(文件路径);string sLine="";ArrayList LineList = new ArrayList(); while (sLine != null){sLine = objReader.ReadLine();if (sLine != null&&!sLine.Equals(""))LineList.Add(sLine);}objReader.Close();return LineList;StreamWriter写文件:复制代码代码如下:FileStream fs = new FileStream(文件路径, FileMode.Create);StreamWriter sw = new StreamWriter(fs);//开始写入sw.Write(String);//清空缓冲区sw.Flush();//关闭流sw.Close();fs.Close();方式一:用FileStream复制代码代码如下://实例化一个保存文件对话框SaveFileDialog sf = new SaveFileDialog();//设置文件保存类型sf.Filter = "txt文件|*.txt|所有文件|*.*";//如果用户没有输入扩展名,自动追加后缀sf.AddExtension = true;//设置标题sf.Title = "写文件";//如果用户点击了保存按钮if(sf.ShowDialog()==DialogResult.OK){//实例化一个文件流--->与写入文件相关联FileStream fs = new FileStream(sf.FileName,FileMode.Create);//获得字节数组byte [] data =new UTF8Encoding().GetBytes(this.textBox1.Text);//开始写入fs.Write(data,0,data.Length);//清空缓冲区、关闭流fs.Flush();fs.Close();}方式二:用StreamWriter复制代码代码如下://实例化一个保存文件对话框SaveFileDialog sf = new SaveFileDialog();//设置文件保存类型sf.Filter = "txt文件|*.txt|所有文件|*.*";//如果用户没有输入扩展名,自动追加后缀sf.AddExtension = true;//设置标题sf.Title = "写文件";//如果用户点击了保存按钮if (sf.ShowDialog() == DialogResult.OK){//实例化一个文件流--->与写入文件相关联FileStream fs = new FileStream(sf.FileName, FileMode.Create);//实例化一个StreamWriter-->与fs相关联StreamWriter sw = new StreamWriter(fs);//开始写入sw.Write(this.textBox1.Text);//清空缓冲区sw.Flush();//关闭流sw.Close();fs.Close();}string FileName = Guid.NewGuid().ToString() + ".txt"; //GUID生成唯一文件名StringBuilder ckpw = new StringBuilder(""凭证输出", "V800", "001", "东风随州专用汽车有限公司"," + ""F89自由项16", "F90审核日期:"");if (!FileIO.IsFolderExists(Server.MapPath("pzsc")))FileIO.CreaterFolder(Server.MapPath(""), "file://pzsc/");string filePath = Server.MapPath("pzsc") + "\" + FileName;System.IO.StreamWriter sw = new System.IO.StreamWriter(filePath, false, Encoding.GetEncoding("GB2312"));//创建的时候需要指定编码格式,默认是UTF-8,中文显示乱码sw.WriteLine(ckpw.ToString());sw.Close();方式三:用BinaryWriter复制代码代码如下://实例化一个保存文件对话框SaveFileDialog sf = new SaveFileDialog();//设置文件保存类型sf.Filter = "txt文件|*.txt|所有文件|*.*";//如果用户没有输入扩展名,自动追加后缀sf.AddExtension = true;//设置标题sf.Title = "写文件";//如果用户点击了保存按钮if (sf.ShowDialog() == DialogResult.OK){//实例化一个文件流--->与写入文件相关联FileStream fs = new FileStream(sf.FileName, FileMode.Create);//实例化BinaryWriterBinaryWriter bw = new BinaryWriter(fs);bw.Write(this.textBox1.Text);//清空缓冲区bw.Flush();//关闭流bw.Close();fs.Close();}C#缓存流示例------>用缓存流复制文件C#文件处理操作必须先导入命名空间:using System.IO;背景:使用VS2005、一个按钮、一个窗体、C#缓存流、把D:KuGoo爱得太多.wma复制到D:并更名为love.wma,即:D:love.wma在按钮的Click事件中添加如下代码:复制代码代码如下:private void button1_Click(object sender, EventArgs e){//创建两个文件流 一个是源文件相关,另一个是要写入的文件FileStream fs = new FileStream(@"D:KuGoo爱得太多.wma",FileMode.Open);FileStream fs2 = new FileStream(@"D:love.wma",FileMode.Create);//创建一个字节数组,作为两者之间的媒介//好比两个人拿苹果,这个字节数组就好比一个篮子,一个人作死的把苹果送到篮子里面,//而我就可以作死得拿苹果,通过这个媒介我们互不干扰,//不需要互相等待【她往篮子里面放了苹果我才可以去拿】,提高了效率byte[] data = new byte[1024];//创建两个缓冲流,与两个文件流相关联BufferedStream bs = new BufferedStream(fs);BufferedStream bs2= new BufferedStream(fs2);//fs作死的读,fs2作死的写,直到fs没有字节可读fs2就不写了//好比,一个人作死的往篮子里面丢苹果,另一个人作死得往篮子里面拿苹果,直到篮子里面没有苹果拿了为止//即-->那个人没有苹果往篮子里面放了while(fs.Read(data,0,data.Length)>0){fs2.Write(data,0,data.Length);fs2.Flush();}//关闭流,好比两个人累了,都要休息 呵呵o(∩_∩)o...fs.Close();fs2.Close();}C#内存流示例----->用内存流来读取图片C#文件处理操作必须先导入命名空间:using System.IO;背景:一个窗体、一个pictureBox、一个lable[没有选择图片,lable的text为"图片未选择"],在pictureBox1的Click事件中添加如下代码:复制代码代码如下:private void pictureBox1_Click(object sender, EventArgs e){//实例化一个打开文件对话框OpenFileDialog op = new OpenFileDialog();//设置文件的类型op.Filter = "JPG图片|*.jpg|GIF图片|*.gif";//如果用户点击了打开按钮、选择了正确的图片路径则进行如下操作:if(op.ShowDialog()==DialogResult.OK){//清空文本this.label1.Text = "";//实例化一个文件流FileStream fs = new FileStream(op.FileName, FileMode.Open);//把文件读取到字节数组byte[] data = new byte[fs.Length];fs.Read(data, 0, data.Length);fs.Close();//实例化一个内存流--->把从文件流中读取的内容[字节数组]放到内存流中去MemoryStream ms = new MemoryStream(data);//设置图片框 pictureBox1中的图片this.pictureBox1.Image = Image.FromStream(ms);}}2023-07-16 08:41:141
java输出到文件每个字符之间都有一个空格
你要填空格的地方要用 代替2023-07-16 08:41:281
在Excel中怎样用VBA批量统计PDF页数,大神们,帮帮忙,万分感谢。
Excel对PDF就好像鸡同鸭讲,不是一个系统怎么统计?2023-07-16 08:42:041
ug二次开发中,如何获取刀位点的tag序列,要用什么api函数?
您好,创建刀具不是这个函数,这个函数是新建加工模板,用法:UF_CUTTER_create("mill_planar","mill",&temp_tool_tag);最近在做一个创建刀具的程序,使用EXECL数据文件,这样有变更需求直接在表格中做就好了。static void odbc_read_excel(int *exel_tool_count,char exel_too_para[255][7][38]){* }( w4 U5 w- S CDatabase database; CString sSql;, I/ g$ S! d6 N3 k2 J CString sItem[7];, i; u3 J: [9 R+ L; ( h6 Q4 q0 _ CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; CString sDsn;- ?( I8 K1 M& z CString sFile = GetToolParamFullPath(); * ?( K* Y) S% Z/ t- ? char *tool_param[7]={"刀具名称","刀具直径","刀具R角", "刀号","主轴转速","刀具进给","刀具切削"};9 h/ @4 X( M/ ?) S! |$ ^5 K // 将被读取的Excel文件名// int excel_id=odbc_connect(sFile);/ E3 R" E z* w8 f, R ~ // 创建进行存取的字符串% b2 S" C+ D; y5 U6 H sDsn.Format("ODBC;DRIVER={%s};DSN="";DBQ=%s", sDriver, sFile);: ]* o& a O! I& Z0 P7 o$ |5 Y! b TRY" }1 R# B6 `9 j0 @! g+ c. W {& Y0 x1 l2 d; J // 打开数据库(既Excel文件) database.Open(NULL, false, false, sDsn); CRecordset recset(&database);& F C" W3 X* J/ H& {; J // 设置读取的查询语句. sSql = "SELECT 刀具名称,刀具直径,刀具R角,刀号,主轴转速,刀具进给,刀具切削 " " H8 H" F( T, T% H9 x "FROM [sheet1$]";2023-07-16 08:42:121
java复制一个文件夹的文本到另外一个文件夹?
import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class MyCopy { public void fileCopy(String sFile, String oFile) { File file = new File(sFile); if (!file.exists()) { System.out.println(sFile + " not have"); return; } File fileb = new File(oFile); if (file.isFile()) { FileInputStream fis = null; FileOutputStream fos = null; try { fis = new FileInputStream(file); fos = new FileOutputStream(fileb); byte[] bb = new byte[ (int) file.length()]; fis.read(bb); fos.write(bb); } catch (IOException e) { e.printStackTrace(); } finally { try { fis.close(); fos.close(); } catch (IOException e) { e.printStackTrace(); } } } else if (file.isDirectory()) { if (!fileb.exists()) { fileb.mkdir(); } String[] fileList; fileList = file.list(); for (int i = 0; i < fileList.length; i++) { fileCopy(sFile + "/" + fileList[i], oFile + "/" + fileList[i]); } } } public static void main(String[] args) { MyCopy myCopy = new MyCopy();// myCopy.fileCopy(args[0], args[1]);//dos myCopy.fileCopy("f:\qq.txt", "e:\w.txt"); }}2023-07-16 08:42:211
vb的filecopy报错啊,这段代码我书上看来的。。。
msdn 里的例子本示例使用 FileCopy 语句来复制文件。示例中假设 SRCFILE 为含有数据的文件。Dim SourceFile, DestinationFile SourceFile = "SRCFILE" " 指定源文件名。 DestinationFile = "DESTFILE" " 指定目的文件名。 FileCopy SourceFile, DestinationFile " 将源文件的内容复制到目的文件中。2023-07-16 08:42:291
如何安装rmdbdataset和rmreport
{$DEFINE NoRmComPass}unit PrintForm;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, dxDBGrid, RM_class, RM_Desgn, RM_dset, RM_dbset, dxEditor, StdCtrls, dxCntner, dxEdLib, dxDBELib, dxTL, dxDBCtrl, ExtCtrls, dxExEdtr, RM_shape, dxDBTL, KsSkinLabels, RM_e_csv, RM_e_txt, RM_chart, RM_FormReport, Series;const SHOW_REPORT = 1; PRINT_REPORT = 2; DESIGN_REPORT = 3; INITI_REPORT = 4;type TfrmPrintForm = class(TForm) rmReport: TRMReport; RMDesigner1: TRMDesigner; RMDBDataSet1: TRMDBDataSet; RMTextExport1: TRMTextExport; RMCSVExport1: TRMCSVExport; RMChartObject1: TRMChartObject; RMChartObject2: TRMChartObject; private { Private declarations } BandReportTitle: TRMBandView; BandPageHeader: TRMBandView; BandDetail: TRMBandView; BandDetailChart: TRMBandView; BandPageFooter: TRMBandView; BandReportSummary: TRMBandView; lTitleY, lGridY, lGridH: Integer; frmForm1: TForm; Page1: TRMPage; sReportFile, sFile: string; lTitle, lMode: Integer; bPrintBar, bReturn, bNewReport: Boolean; lPrintChartType: Integer; sChart, sPrintChartX, sPrintChartY, sChartNameX, sChartNameY: string; procedure PrintPrepare; //准备打印 function PrintBegin: Boolean; //开始打印 procedure LoadBand; //读入页边条 procedure LoadControl(Control: TControl); //读入Control procedure LoadTopControl(Control: TControl); //读入最上面Control procedure LoadBottomControl(Control: TControl); //读入最下面Control procedure LoadOldControl(Control: TControl); //读入已存在Control procedure LoadDBGrid(Grid1: TdxDBGrid); //读入DBGrid procedure SetGridHeader(Grid1: TdxDBGrid); //设置表头 procedure SetGridBody(Grid1: TdxDBGrid); //设置表体 procedure SetGridSummary(Grid1: TdxDBGrid); //设置表尾 procedure LoadDBTree(Tree1: TdxDBTreeList); //读入DBTree procedure SetTreeHeader(Tree1: TdxDBTreeList); //设置表头 procedure SetTreeBody(Tree1: TdxDBTreeList); //设置表体 procedure SetTreeSummary(Tree1: TdxDBTreeList); //设置表尾 function LoadReportFile: Boolean; //读报表文件 function SaveReportFile: boolean; //写报表文件 procedure SetTitle; //设置标题 function GetAlignment(Align: TAlignment): TRMAlignment; function GetBandSub(Grid1: TCustomdxDBTreeListControl; Index: Integer): Integer; function ViewAssign(m1: TRMMemoView; Control: TControl): Boolean; //为各种控件赋值 function ShapeViewAssign(s1: TRMShapeView; Control: TControl): Boolean; //为各种Shape控件赋值 function PicViewAssign(p1: TRMPictureView; Control: TControl): Boolean; //为各种图象控件赋值 function GetPoint(Control: TControl): TPoint; procedure SetChart; public { Public declarations } end;function WinPrint(Form1: TForm; lTitle1, lMode1: Integer; sFile1, sChart1: string): Boolean;{ 参数( 要打印Form;标题类型(0=空,1=中间,2=左边);打印类型(显示,打印,编辑,初始化);文件ID ) 打印类型(显示=SHOW_REPORT,打印=PRINT_REPORT,编辑=DESIGN_REPORT,初始化=INITI_REPORT)}implementationuses SysPublic;{$R *.DFM}const C_LEFT = 20; C_HEIGHT = 20;//打印窗体function WinPrint(Form1: TForm; lTitle1, lMode1: Integer; sFile1, sChart1: string): Boolean;var frmPrintForm: TfrmPrintForm;begin frmPrintForm := TfrmPrintForm.Create(Application); with frmPrintForm do begin frmForm1 := Form1; lMode := lMode1; lTitle := lTitle1; sFile := sFile1; sChart := sChart1; PrintPrepare; PrintBegin; Result := bReturn; {Free;} end;end;procedure TfrmPrintForm.PrintPrepare;var i: Integer;begin lPrintChartType := -1; sPrintChartX := ""; sPrintChartY := ""; sChartNameX := ""; sChartNameY := ""; lPrintChartType := StrToInt2(GetCommaStr(sChart, 1)); sPrintChartX := GetCommaStr(sChart, 2); sPrintChartY := GetCommaStr(sChart, 3); if (sPrintChartX = "") or (sPrintChartY = "") then lPrintChartType := -1; //不是图形 if lPrintChartType >= 0 then bNewReport := True; LoadReportFile; LoadBand; SetTitle; with frmForm1 do begin for i := 0 to ComponentCount - 1 do begin if (TControl(Components[i]).Visible) and (Components[i] is TCustomdxTreeList) then begin lGridY := GetPoint(TControl(Components[i])).Y; lGridH := TdxDBGrid(Components[i]).RowHeight; end; end; for i := 0 to ComponentCount - 1 do if (TControl(Components[i]).Visible) and (Components[i] is TControl) then begin if bNewReport then LoadTopControl(TControl(Components[i])) else LoadOldControl(TControl(Components[i])); end; for i := 0 to ComponentCount - 1 do if (TControl(Components[i]).Visible) and (Components[i] is TdxDBGrid) then LoadDBGrid(TdxDBGrid(Components[i])); for i := 0 to ComponentCount - 1 do if (TControl(Components[i]).Visible) and (Components[i] is TdxDBTreeList) then LoadDBTree(TdxDBTreeList(Components[i])); for i := 0 to ComponentCount - 1 do begin if (TControl(Components[i]).Visible) and (Components[i] is TControl) then begin if bNewReport then LoadBottomControl(TControl(Components[i])) else LoadOldControl(TControl(Components[i])); end; end; if bNewReport then for i := 0 to ComponentCount - 1 do begin if (sChartNameX <> "") and (sChartNameY <> "") then begin SetChart; Break; end; end; end;end;2023-07-16 08:42:491
VB程序如何读取自己的版本号和时间信息
"版本号可以用app方式查看 Private Sub Form_Load() Label1.Caption = App.RevisionEnd Sub"时间可以参考一下 如果只是查看大小、修改时间的话,可以直接使用VB内建函数:返回文件修改时间:FileDateTime(文件路径) 返回文件字节大小:FileLen(文件路径)示例: Private Sub Form_Load() Dim sOut As String Const sFile As String = "C:\WINDOWSotepad.exe" sOut = "文件路径: " & sFile & vbCrLf & _"修改日期: " & FileDateTime(sFile) & vbCrLf & _"文件大小: " & FileLen(sFile) & "字节" MsgBox sOutEnd Sub如果要更多属性,则需要用到FSO。只有运行时确定用户的机器上有且没有禁用“Microsoft Scripting Runtime”。工程=>引用,钩选“Microsoft Scripting Runtime”,确定。示例: Private Sub Form_Load() Dim sOut As String Const sFile As String = "C:\WINDOWSotepad.exe" sOut = "文件路径: " & sFile & vbCrLf & _"创建日期: " & GetFileAttr(sFile, 0) & vbCrLf & _"修改日期: " & GetFileAttr(sFile, 1) & vbCrLf & _"访问日期: " & GetFileAttr(sFile, 2) & vbCrLf & _"文件大小: " & GetFileAttr(sFile, 3) & "字节" & vbCrLf & _"文件类型: " & GetFileAttr(sFile, 4)MsgBox sOutEnd SubPrivate Function GetFileAttr(sPath As String, iAttr As Integer) Dim oFSO As New FileSystemObject Dim oFile As File Dim sOut As StringSet oFile = oFSO.GetFile(sPath)Select Case iAttr Case 0 "创建日期sOut = oFile.DateCreated Case 1 "修改日期sOut = oFile.DateLastModified Case 2 "访问日期sOut = oFile.DateLastAccessed Case 3 "文件大小sOut = oFile.Size Case 4 "文件类型sOut = oFile.TypeEnd SelectGetFileAttr = sOutEnd Functio2023-07-16 08:42:561
求助:python 处理日志,用什么模块比较好
求助:python 处理日志,用什么模块比较好4个主要的组件logger: 日志类,应用程序往往通过调用它提供的api来记录日志;handler: 对日志信息处理,可以将日志发送(保存)到不同的目标域中;filter: 对日志信息进行过滤;formatter:日志的格式化;2023-07-16 08:43:042
delphi语言简单删除txt中第一行 程序
//将数据先读入内存然后重新写入文件就可以了;//文件比较大建议用拷贝文件方式;//procedure TForm1.Button1Click(Sender: TObject);var f: TextFile; sfile:TStrings; filename,s:string; i:Integer; begin filename:="需要处理问题"; if FileExists(filename) then begin sfile:=TStringList.Create; AssignFile(f,filename); Reset(f); while not Eoln(f) do begin Readln(f,s); sfile.Add(s); end; Rewrite(f); for i := 1 to sfile.Count-1 do begin writeln(f,sfile.Strings[i]); end; CloseFile(f); sfile.Free; end; end;2023-07-16 08:43:131
VB 搜索文件夹
你是要搜索所有盘上的所有文件夹还是只搜索指定的?我这里有搜索全盘所有内容的代码,很大,加百度HI发给你2023-07-16 08:43:225
用FileUpload上传文件更改名称后是个0kb的文件
程序问题2023-07-16 08:43:372
vba 如何当前excel 打开txt文件后并将txt文件保存为EXCEL
如果txt文件中的数据是由逗号分隔,试试下面的代码:Sub TXT导入到EXCEL() "把由逗号分隔的TXT数据导入EXCELApplication.ScreenUpdating = False "关闭屏幕刷新Const ForReading = 1 "打开一个只读文件Set fso = CreateObject("Scripting.FileSystemObject") "创建文本对象Set fd = Application.FileDialog(msoFileDialogOpen) "创建“打开”对话框对象If fd.Show = -1 Then "如果选择了文件 FileName = fd.SelectedItems(1) "记录文件路径(指定文本文件名)Else "如果没有选择文件 MsgBox "没有选择文件,请重新操作!", , "导入到EXCEL" Exit Sub "退出程序End IfSet sFile = fso.OpenTextFile(FileName, ForReading) "创建并打开名为sFile的TextStream对象i = 1 "设置输入单元格的起始行号Do While Not sFile.AtEndOfStream "如果不是文本文件的尾端,则读取数据 LineText = sFile.ReadLine "从文本文件中依次读取一行数据为字符串 d = InStr(LineText, ",") "计算这行数据从左向右第一个全角逗号的位置 If d > 0 Then "如果全角逗号存在 TH = Replace(LineText, ",", ",") "把字符串中的全角逗号替换成半角逗号 FJ = Split(TH, ",") "把由半角逗号分隔的字符串TH写入数组FJ ElseIf d = 0 Then "如果全角逗号不存在 FJ = Split(LineText, ",") End If For iCol = LBound(FJ) To UBound(FJ) "从数组中读取数据并写入对应的单元格 ThisWorkbook.ActiveSheet.Cells(i, iCol + 1) = FJ(iCol) Next iCol i = i + 1 "滚动到下一个写入数据的单元格行 LoopsFile.CloseSet fso = NothingSet fd = NothingSet sFile = NothingApplication.ScreenUpdating = False "关闭屏幕刷新End Sub注意:按Alt+F11打开宏编辑器,插入模块,粘贴上述代码后,在要导入TXT文件的当前工作表中制作一个命令按钮链接宏即可操作。2023-07-16 08:43:471
推荐好的美剧论坛
伊甸园 悠悠鸟2023-07-16 08:43:563
跪求c#代码将datagridview表格中内容输出到word中?
public void ExportDataGridView(DataGridView srcDgv){ SaveFileDialog sfile = new SaveFileDialog(); sfile.AddExtension = true; sfile.DefaultExt = ".doc"; sfile.Filter = "(*.doc)|*.doc"; if (sfile.ShowDialog() == DialogResult.OK) { object path = sfile.FileName; Object none = System.Reflection.Missing.Value; Word.Application wordApp = new Word.Application(); Word.Document document = wordApp.Documents.Add(ref none, ref none, ref none, ref none); //建立表格 Word.Table table = document.Tables.Add(document.Paragraphs.Last.Range, srcDgv.Rows.Count , srcDgv.Columns.Count, ref none, ref none); try { for (int i = 0; i < srcDgv.Columns.Count; i++)//设置标题 { table.Cell(0, i + 1).Range.Text = srcDgv.Columns[i].HeaderText; } for (int i = 1; i < srcDgv.Rows.Count; i++)//填充数据 { for (int j = 0; j < srcDgv.Columns.Count; j++) { table.Cell(i+1, j + 1).Range.Text = srcDgv[j, i - 1].Value.ToString(); } } document.SaveAs(ref path, ref none, ref none, ref none, ref none, ref none, ref none, ref none, ref none, ref none, ref none, ref none, ref none, ref none, ref none, ref none); document.Close(ref none, ref none, ref none); MessageBox.Show("导出成功!"); } finally { wordApp.Quit(ref none, ref none, ref none); } }}2023-07-16 08:44:231
求双面女间谍alias1-5季的伊甸园下载地址
http://find.verycd.com/folders/%E5%8F%8C%E9%9D%A2%E5%A5%B3%E9%97%B4%E8%B0%8D一定是伊甸园的吗?2023-07-16 08:44:302
跟《迷失》、《越狱》类似的电视剧还有别的吗?
『秘密行动组 The Unit』,六度分离 Six Degrees2023-07-16 08:44:404
vb 搜索文件
filter(*.txt)过滤?2023-07-16 08:44:517
SWT做出像QQ那种的保存密码和自动登录的功能
是写在配置文件当中的, 给你一个参考,这个是我们代码中的配置文件,我们用swing开发的一个软件, 直接用java.util.Properties 中的方法, 自己写一个配置文件就可以了。import java.util.Properties;public class UserConfig{private static Properties sProperties = new Properties();private static final String PROPERTY_FILE_NAME = "user.properties";private static File sFile = new File(PROPERTY_FILE_NAME);static {try {if (!sFile.exists()) {sFile.createNewFile();}sProperties = new Properties();FileInputStream fis = new FileInputStream(sFile);sProperties.load(fis);fis.close();} catch (Exception e) {e.printStackTrace();}}public static int getIntValue(String key) {String s = sProperties.getProperty(key);int ret = INVALID_VALUE;try {ret = Integer.valueOf(s);} catch (NumberFormatException nfe) {//nfe.printStackTrace();}return ret;}public static void setIntValue(String key, int value) {String v = Integer.toString(value);sProperties.setProperty(key, v);}}2023-07-16 08:45:111
C++ 如何打开用变量命名的文件
#include<iostream>#include<fstream>#include<string>#include<direct.h>using namespace std;int main(){for(int a=1;a<15;a++){char filename[1315];sprintf(filename,"C:\%d.txt",a);//这是利用了sprintf来实现int与字符型的转换ofstream outFile; //可以自己改变路径,想建立在哪里就把路径写上,注意\outFile.open(filename); outFile<<"计算机工程学院"; outFile<<" ";outFile<<"软件工程学生";outFile.close();string c,b;ifstream inFile;inFile.open(filename);inFile>>c>>b;inFile.close();cout<<c<<endl;cout<<b<<endl;}return 0;}2023-07-16 08:45:222
VB 修改文件夹下的文件名为文件夹名
建议用FSO对象(filesystemobject)来做,你可以找找它的例子看看,很好用的。。。2023-07-16 08:45:363
越狱主角
扮演者:Robert Knepper 他演的电影电视很多!http://sfile.ydy.com/bbs/read.php?tid=529952023-07-16 08:45:432
怎么用VC++实现文本的复制粘贴?
不懂啊 CTRL+V不行么2023-07-16 08:45:535