1、delphi中拷贝文件的几种方法
{方法一:用file stream }
procedure filecopy( const sourcefilename, targetfilename: string );
var
s, t: tfilestream;
begin
s := tfilestream.create( sourcefilename, fmopenread );
try
t := tfilestream.create( targetfilename,fmopenwrite or fmcreate );
try
t.copyfrom(s, s.size ) ;
finally
t.free;
end;
finally
s.free;
end;
end;
{ 方法二:使用内存块进行读写 }
procedure filecopy(const fromfile, tofile: string);
var
fromf, tof: file;
numread, numwritten: word;
buf: array[1..2048] of char;
begin
assignfile(fromf, fromfile);
reset(fromf, 1);
assignfile(tof, tofile);
rewrite(tof, 1);
repeat
blockread(fromf, buf, sizeof(buf), numread);
blockwrite(tof, buf, numread, numwritten);
until (numread = 0) or (numwritten < > numread);
closefile(fromf);
closefile(tof);
end;
2、控制ini文件
要利用.ini文件做程序有关数据的存储工作,就需要能读和写.ini文件,所以列了如下方法给大家参考:
{方法一:用 windows api 函数}
① 从.ini文件中获取字符串
var
strresult:array[0..30] of char;
begin
getprivateprofilestring(' desktop ', 'wallpaper',
'c:\windows\newwall.bmp' , strresult, 100,
'c:\windows\win.ini' );
edit1.text:=strresult; //显示取得字符串
end;
② 从.ini文件中获取整数
var
nresult: integer;
begin
nresult := getprivateprofilestring(' desktop ', ' tilewallpaper',
0 , 'c:\windows\win.ini' );
edit1.text:=intostr(nresult); //显示取得整数
end;
③ 向.ini文件写入字符串
writeprivateprofilestring('desktop', 'wallpaper',
strwrite ,'c:\windows\win.ini');
{ 方法二:使用tinifile进行读写 }
① 从.ini文件中读字符串
var myini: tinifile;
begin
myini := tinifile.create('c:\windows\win.ini');
edit1.text:=myini.readstring('desktop', 'wallpaper', '');
end;
② 向.ini文件中写入字符串
var myini: tinifile;
begin
myini := tinifile.create('c:\windows\win.ini');
myini.writestring('desktop', 'wallpaper', 'c:\a.bmp');
end;
3、用delphi实现将纯文本资料转入数据库
在我们日常工作中,常会碰到这样一个难题:一大堆收集好的纯文本格式,比较规整的资料怎样才能将它们分离,转到自己已经建好的数据库中进行管理呢?例如,有一段人事档案资料document.txt,内容如下:
张强,25,助理工程师,
王宏,30,工程师,
李远,45,高级工程师,
要将它转入数据库中,document.db结构如下:
姓名,年龄,职称
怎么办呢?现在通过使用delphi编程,很好地解决了这个难题。delphi提供了许多功能强大,丰富的字符处理函数和过程,常用的有:
① function length(s:string):integer //返回串的长度
② function copy(s:string; index,count: integer):string
//给出一个字符串中串的拷贝
③ function pos(substr:string; s:string); integer
//查找子串在字符串中的位置
④ procedure delete(var s:string; index,count: integer);
//从一个字符串中去除子串
利用delphi提供的已有函数和过程基础上编制自己的三个函数,实现了纯文本格式资料转入数据库功能。只要delphi支持的数据库都可以支持。
document.txt中每行数据为一个字符串,字符串中每个被分割的数据为一个字段,分割每个字段的字符为分割符,这里是逗号,也可以是、;#等符号。具体思想是:先将字符串进行调整,然后把串中每个字符同分割符比较,将不是分割符的字符追加到mystr串中,最后得到一个字段的内容。通过一个循环,就可以将一个字符串分成几个字段。
function getsubstr(var astring:string; sepchar:string): string;
//得到字符串中一个子串
因要改变参数astring的值,所以将它用var定义。
function getsubstrnum(astring, sepchar: string): integer;
//计算一个字符串要被分割成几个字段。
参数:astring是所需分割的一个字符串,
sepchar是分割符。
function getsubstrnum(astring:string;sepchar:string):integer;
var
i:integer;
strlen:integer;
num:integer;
begin
strlen:=length(astring);
num:=0;
for i:=1 to strlen do
if copy(astring,i,1) = sepchar then
num:=num+1;
result:=num;
end;
function getsubstr(var astring:string;sepchar:string):string;
var
mystr:string;
strlen:integer;
sepcharpos:integer;
begin
strlen:=length(astring);
sepcharpos:=pos(sepchar,astring); //计算分割符在子串中的位置
mystr:=copy(astring,1,sepcharpos-1); //将分割符前所有字符放到mystr串中
delete(astring,1,sepcharpos); //除去分割符和分割符前的子串
getsubstr:=mystr; //返回一个字段
end;
有了上面三个函数,现在介绍一下具体的应用:
① 首先建立一个窗体forml,加入一个richeditl(或menol),一个按钮buttonl和一个tablel,设置tablel的属性:
tablell.databasename:= 'c:\test';
tablell.tablename:= 'document.db27%;
② 分别加入以下程序:
const
sepchar=',' ;
procedure tform1.formcreate(sender: tobject);
begin
richedit1.lines.loadfromfile('c:\test\test.txt');
end;
procedure tform1.button1click(sender: tobject);
var
i,j,num:integer;
myline:string;
item:array[1..3] of string;
begin
for i:=0 to richedit1.lines.count-1 do
begin
myline:=richedit1.lines[i];
num:=getsubstrnum(myline,sepchar);
for j:=1 to num do
item[j]:=getsubstr(myline,sepchar);
table1.open;
with table1 do
begin
table1.insert;
table1name.asstring:=item[1];
table1age.asinteger:=strtoint(item[2]);
table1title.asstring:=item[3];
table1.post;
end;
table1.close;
end;
end;
然后就可以进行编译、运行了。此程序在win95/delphi2.0下调试通过。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器