下面的不知能否有用? 例如,有一段人事档案资料archive.txt,内容如下: 小许男21工程师 小吴女23助理工程师 小蔡男22助理工程师 小牟女22工程师 要将它转入数据库archive.dbf中,archive.dbf结构如下: 姓名,性别,年龄,职称 FunctionRegulateStr(aString:String;Sepchar:String):String; var i,Num:Integer; Flag:Boolean; MyStr,TempStr:String; begin Flag:=False;//进行标志,去除多余的分割符 Num:=Length(aString);//计算aString串的长度 fori:=1toNumdo begin TempStr:=Copy(aString,i,1);//取aString串中的一字符 if TempSt>=SepChar then begin MyStr:=MyStr+TempDtr; Flag:=True; end else if(Flag=True)then begin Mystr:=Mystr+TempSrt; Flag:=False; end; end; if MyStr[Length(MyStr)]>=SepChar then MyStr:=MyStr+SepChar; RegulateSrt:=MyStr; end; FunctionGetSubStr(varaString:String,SepChar:Strign):String; var Mysrt:String; StrLen:Integer; SepCharPso:Integer; begin StrLen:=Length(aString); SepCharPos:=Pos(SepChar,aString);//计算分割符在子串中的位置 MyStr:=Copy(aString,1,SepCharPos-1);//将分割符前所有字符放到mystr串中 Delete(aString,1,SepCharPos);//除去分割符和分割符前的子串 GetSubStr:=MyStr;//返回一个字段 end; FunctionTforml.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; GetSubSrtNum:=Num; end:
1.首先建立一个窗体Forml,加入一个RichEditl(或Menol),一个按钮Buttonl和一个Tablel,设置Tablel的属性: Tablell.DataBase=′c:\Archivs′ Tablell.TableName=′Archive.dbf′ 2.分别加入以下程序: ConstSpace:=′′ ProcedureTForml.FormCreate(Sender:Tobject); begin RichRditl.Lines.LoadFromFile(′Archive.txt′); end; ProcedureTForml.Button1Click(Sender:T object); var i,j:Integer; MyLine:String; begin with Tablel do begin Open; for i:=0 to RichEditl.Lines.Count-1 do begin MyLine:=RegulateStr(Richeditl.Lines[i],Space); for j:=1 to Num To ken(MyLIne,Space) do begin Append; fileds[j-1].aString:=GetSubSrt(MyLine,Space)); post; end; end; end; end;
存: var MemStrm:TMemoryStream; begin MemStrm:=TMemoryStream.Create; try RichEdit1.Lines.SaveToStream(MemStrm); Table1.Edit; TBlobField(Table1.FieldByName('RichEdit')).LoadFromStream(MemStrm); Table1.Post; finally MemStrm.Free; end; end; 取: var MemStrm:TMemoryStream; begin MemStrm:=TMemoryStream.Create; try TBlobField(Table1.FieldByName('RichEdit')).SaveToStream(MemStrm); RichEdit1.Lines.LoadFromStream(MemStrm); finally MemStrm.Free; end; end;
小许男21工程师
小吴女23助理工程师
小蔡男22助理工程师
小牟女22工程师
要将它转入数据库archive.dbf中,archive.dbf结构如下:
姓名,性别,年龄,职称
FunctionRegulateStr(aString:String;Sepchar:String):String;
var
i,Num:Integer;
Flag:Boolean;
MyStr,TempStr:String;
begin
Flag:=False;//进行标志,去除多余的分割符
Num:=Length(aString);//计算aString串的长度
fori:=1toNumdo
begin
TempStr:=Copy(aString,i,1);//取aString串中的一字符
if TempSt>=SepChar then
begin
MyStr:=MyStr+TempDtr;
Flag:=True;
end
else
if(Flag=True)then
begin
Mystr:=Mystr+TempSrt;
Flag:=False;
end;
end;
if MyStr[Length(MyStr)]>=SepChar then
MyStr:=MyStr+SepChar;
RegulateSrt:=MyStr;
end;
FunctionGetSubStr(varaString:String,SepChar:Strign):String;
var
Mysrt:String;
StrLen:Integer;
SepCharPso:Integer;
begin
StrLen:=Length(aString);
SepCharPos:=Pos(SepChar,aString);//计算分割符在子串中的位置
MyStr:=Copy(aString,1,SepCharPos-1);//将分割符前所有字符放到mystr串中
Delete(aString,1,SepCharPos);//除去分割符和分割符前的子串
GetSubStr:=MyStr;//返回一个字段
end;
FunctionTforml.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;
GetSubSrtNum:=Num;
end:
1.首先建立一个窗体Forml,加入一个RichEditl(或Menol),一个按钮Buttonl和一个Tablel,设置Tablel的属性:
Tablell.DataBase=′c:\Archivs′
Tablell.TableName=′Archive.dbf′
2.分别加入以下程序:
ConstSpace:=′′
ProcedureTForml.FormCreate(Sender:Tobject);
begin
RichRditl.Lines.LoadFromFile(′Archive.txt′);
end;
ProcedureTForml.Button1Click(Sender:T object);
var
i,j:Integer;
MyLine:String;
begin
with Tablel do
begin
Open;
for i:=0 to RichEditl.Lines.Count-1 do
begin
MyLine:=RegulateStr(Richeditl.Lines[i],Space);
for j:=1 to Num To ken(MyLIne,Space) do
begin
Append;
fileds[j-1].aString:=GetSubSrt(MyLine,Space));
post;
end;
end;
end;
end;
var
MemStrm:TMemoryStream;
begin
MemStrm:=TMemoryStream.Create;
try
RichEdit1.Lines.SaveToStream(MemStrm);
Table1.Edit;
TBlobField(Table1.FieldByName('RichEdit')).LoadFromStream(MemStrm);
Table1.Post;
finally
MemStrm.Free;
end;
end;
取:
var
MemStrm:TMemoryStream;
begin
MemStrm:=TMemoryStream.Create;
try
TBlobField(Table1.FieldByName('RichEdit')).SaveToStream(MemStrm);
RichEdit1.Lines.LoadFromStream(MemStrm);
finally
MemStrm.Free;
end;
end;
TBlobField(Table1.FieldByName('RichEdit')).SaveToStream(MemStrm);
后加一句:
MemStrm.position:=0;
否则MenStrm中的数据读不出来;
word文挡格式非常复杂,无法用上面的方法存取。通常的做法是直接保存文件到字段中。保存文件的操作可以参阅http://www.csdn.net/expert/topic/960/960982.xml?temp=.64349