急:关于txt文件读取

taoxianxue 2005-10-17 01:40:24
txt文件,记录有2w多条 其中每行数据有9个字段,但某些相同的列的数据不都是定长的,比如a1是8个字符长,可能a2就是10个字符长。字段之间通过tab键分开;
问题是我现在只需要取其中的3个字段 如 B ,G ,H .通过定长度用copy函数来取是肯定不行的,请问还有别的办法没?
记录情况如下排列:
A1 B1 C1 D1 E1 F1 G1 H1 I1
A2 B2 C2 D2 E2 F2 G2 H2 I2
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
A23000 B23000 C23000 D23000 E23000 F23000 G23000 H23000 I23000

搞定马上结帖,先谢谢各位了。
...全文
197 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hellolongbin 2005-10-17
  • 打赏
  • 举报
回复
pos(#9,s)
posex
taoxianxue 2005-10-17
  • 打赏
  • 举报
回复
呵呵,用excel是肯定不行的,我是要先从txt文件读取数据,然后展示用户看,最后用户操作后保存到数据库中。
问题已经被我解决了:
具体方法是这样

用一个字符串分割函数
function SplitString(const source,ch:string):tstringlist;
var
temp:string;
i:integer;
begin
result:=tstringlist.Create;
temp:=source;
i:=pos(ch,source);
while i<>0 do
begin
result.Add(copy(temp,0,i-1));
delete(temp,1,i);
i:=pos(ch,temp);
end;
result.Add(temp);
end;
调用:
s:=splitstring('要分割的字符串',#9);
s中存放的就是分割后的数据,要取哪个就取哪个,比如我要取B
则 B:=s.string[1];就可以了。

后面还发现可以用这个函数直接点
{以下是 ExtractStrings声明原形:
function ExtractStrings(Separators, WhiteSpace: TSysCharSet; Content: PChar; Strings: TStrings):
Integer;
其中:
Separators表示分隔符
WhiteSpace表示你所要分割字符串中要忽略的字符集
Content就是你要操作的字符串
Strings就是存放结果的

var
s:string;
l:TStrings;
begin
s:= 'aasdl#9ajkls#9dasfjakls#9';
l:=TStringList.Create;
ExtractStrings(['#9'],[],PChar(s),l);
////多种分隔符也可以,结果存在l中
end;
fishmans 2005-10-17
  • 打赏
  • 举报
回复
用ODBC连接这个txt文件当数据库使
cncharles 2005-10-17
  • 打赏
  • 举报
回复
用Excel中就可以不用代码帮你搞定.

数据菜单->获取外部数据->导入文本文件然后把多于的列删除就可以了.

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧