问题说明:(D7+sql server)
1.有文件夹若干
2.每个文件夹内有两种文件,一是*.bmp,一是*.txt文件,每一个bmp文件
对应一个txt文件,每一对文件的文件名是一样的
3.需从txt文件读出相应bmp文件的信息,因为数据库表中定义为(col1,col2,image)
3.想实现,打开一次读入一个文件夹下的所有文件,然后把图像数据和相关的col1,
col2的数据存入数据库我的程序是这样处理的:
1.把txt文件存入一个tStringlist,bmp存入另一个TStringlist中,
2.如果txt的文件名和BMP文件的文件名相同,则从TXT文件中读出其中的JH,YYSD值,
3.开始把这一相关的数据存入表中。我的代码如下,可程序什么也不执行:var
txtfiles,bmpfiles,filelist:TStringlist;
I,J,K:integer;
JH,YYSD,substr,insertstr:String;
begin
txtfiles:=TStringlist.Create;
filelist:=TStringlist.Create;
bmpfiles:=TStringlist.Create;
filelist.Clear;
if opentxt.Execute then
begin
filelist.Assign(opentxt.Files);
JH:='';
YYSD:='';
txtfiles.Clear;
bmpfiles.Clear;
for I:=0 to filelist.Count-1 do
begin
substr:='';
substr:=trim(copy(extractfilename(filelist[I]),length(extractfileName(filelist[I]))-2,3));
if substr='txt' then
txtfiles.LoadFromFile(filelist[I])
else if substr='bmp' then
bmpfiles.LoadFromFile(filelist[i]);
end;//end files assorting
for J:=0 to bmpfiles.Count-1 do
begin
for K:=0 to txtfiles.Count-1 do
begin
if changefileExt(extractfileName(bmpfiles[J]),'')=changefileExt(extractfilename(opentxt.files[K]),'') then
begin
if txtfiles.Names[K]='Well ID' then
JH:=trim(txtfiles.ValueFromIndex[K])
else if txtfiles.Names[K]='Depth' then
YYSD:=trim(TXTfiles.ValueFromIndex[K]);
WITH ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('insert into wgtx(JH,YYSD,WGTX) valus(:JH,:YYSD,:WGTX)');
fieldbyname('JH').Asstring:=JH;
fieldbyname('YYSD').asstring:=YYSD;
TBlobfield(fieldbyname('WGTX')).LoadFromFile(bmpfiles[J]);
execsql;
close;
end;//end SQL-insert statement
end;
end;//end txt file's cycle
end;
//end bmp file's cycle
end;//end a open operation
bmpfiles.Free;
txtfiles.Free;
filelist.Free;
1.有文件夹若干
2.每个文件夹内有两种文件,一是*.bmp,一是*.txt文件,每一个bmp文件
对应一个txt文件,每一对文件的文件名是一样的
3.需从txt文件读出相应bmp文件的信息,因为数据库表中定义为(col1,col2,image)
3.想实现,打开一次读入一个文件夹下的所有文件,然后把图像数据和相关的col1,
col2的数据存入数据库我的程序是这样处理的:
1.把txt文件存入一个tStringlist,bmp存入另一个TStringlist中,
2.如果txt的文件名和BMP文件的文件名相同,则从TXT文件中读出其中的JH,YYSD值,
3.开始把这一相关的数据存入表中。我的代码如下,可程序什么也不执行:var
txtfiles,bmpfiles,filelist:TStringlist;
I,J,K:integer;
JH,YYSD,substr,insertstr:String;
begin
txtfiles:=TStringlist.Create;
filelist:=TStringlist.Create;
bmpfiles:=TStringlist.Create;
filelist.Clear;
if opentxt.Execute then
begin
filelist.Assign(opentxt.Files);
JH:='';
YYSD:='';
txtfiles.Clear;
bmpfiles.Clear;
for I:=0 to filelist.Count-1 do
begin
substr:='';
substr:=trim(copy(extractfilename(filelist[I]),length(extractfileName(filelist[I]))-2,3));
if substr='txt' then
txtfiles.LoadFromFile(filelist[I])
else if substr='bmp' then
bmpfiles.LoadFromFile(filelist[i]);
end;//end files assorting
for J:=0 to bmpfiles.Count-1 do
begin
for K:=0 to txtfiles.Count-1 do
begin
if changefileExt(extractfileName(bmpfiles[J]),'')=changefileExt(extractfilename(opentxt.files[K]),'') then
begin
if txtfiles.Names[K]='Well ID' then
JH:=trim(txtfiles.ValueFromIndex[K])
else if txtfiles.Names[K]='Depth' then
YYSD:=trim(TXTfiles.ValueFromIndex[K]);
WITH ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('insert into wgtx(JH,YYSD,WGTX) valus(:JH,:YYSD,:WGTX)');
fieldbyname('JH').Asstring:=JH;
fieldbyname('YYSD').asstring:=YYSD;
TBlobfield(fieldbyname('WGTX')).LoadFromFile(bmpfiles[J]);
execsql;
close;
end;//end SQL-insert statement
end;
end;//end txt file's cycle
end;
//end bmp file's cycle
end;//end a open operation
bmpfiles.Free;
txtfiles.Free;
filelist.Free;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货