新开一贴,求读取文本文件的方法,高手请进 ( 积分: 10 )

  • 主题发起人 主题发起人 zpselect
  • 开始时间 开始时间
Z

zpselect

Unregistered / Unconfirmed
GUEST, unregistred user!
文本文件的内容如下:
省份列表
01--北京
02--上海

职称表
01--作业员
02 资讯部
03--业务员
04--财务员
05--其它职业

学历
01--文盲
02--小学
03--初中
04--中专
05--高中
06--大专
07--本科
08--研究生
09--搏斗
10其它

市场职位
0--无
1--跟单员
2--业务员
3--营销经理
4--开发副总

性别
0--男
1--女

政治面貌
0--无
1--团员
2--党员


民族列表
01--汉族
02--回族
03--藏族
04--壮族
05--瑶族
06--彝族
07--阿昌族
08--白族
09--布依族
10--傣族
11--侗族
12--土家族
13--独龙族
14--仡佬族
15--哈尼族
16--基诺族
17--景颇族
18--拉祜族
19--黎族
20--傈僳族
21--珞巴族
22--毛南族
23--门巴族
24--苗族
25--仫佬族
26--纳西族
27--怒族
28--普米族
29--羌族
30--畲族
31--水族
32--维吾尔族
33--哈萨克族
34--塔塔尔族
35--满族
36--蒙古族
37--土族
38--东乡族
39--撒拉族
40--保安族
41--鄂伦春族
42--鄂温克族
43--达斡尔族
44--赫哲族
45--乌兹别克族
46--柯尔克孜族
47--锡伯族
48--裕固族
49--朝鲜族
50--布朗族
51--德昂族
52--佤族
53--塔吉克族
54--俄罗斯族
55--高山族
56--京族

功能:
我要读取:‘市场职位’这段一段的文本,请问怎么取?
结果如下:
0--无
1--跟单员
2--业务员
3--营销经理
4--开发副总
 
写成INI比较好弄,
TXT的话可以放到TStringList里面去!
 
var
i: Integer;
s: String;
List: TStrings;
begin
List := TStringList.Create;
try
List.LoadFromFile('YourFileName');
//先找到你要的行
for i := 0 to List.Count -1 do
begin
s := Trim(List);
if s = '市场职位' then
begin
// do somthing you want
break;
end;
finally
List.Free;
end;
end;
 
为什么不写成XML格式的呢?一定要写成TXT的吗?
 
TO:zhukewen
怎么知道是到了:‘学历’这一段了?如果到了学历则了free;
 
是的,用xml很简单的,不用解析(判断字符串);
 
存储形式选的,给自己打麻烦,如果你实在想用,可以用Txt,最好用INI
用Txt写法很麻烦,一大堆判断的代码,
INI稍简单点;
 
我不会XML,哪知道嘛!就用TXT嘛!
望各位改之
procedure TForm1.Button1Click(Sender: TObject);
var s, s2: string;
var
strList: tstringList; i: Integer;
begin
strList := tstringList.create;
strList.Loadfromfile('C:/Documents and Settings/Administrator/桌面/test.txt');
for i := 0 to strList.Count - 1 do
begin
S := trim(strList.strings);
if (S = '职称表') then
S := strList.strings[i + 1]
else trim(strList.strings);
Combobox1.Items.Add(copy(S, pos('--', S) + 2, Length(S)));
if S = '学历' then
begin
StrList.Free;
Exit;
end;
end;
strList.Free;
end;
 
那你的编码规则,不是给自己加大麻烦,为什么不这样?
//省份列表
101--北京
102--上海

//职称表
201--作业员
202 资讯部
203--业务员
204--财务员
205--其它职业

//学历
301--文盲
302--小学
303--初中
304--中专
305--高中
306--大专
307--本科
308--研究生
309--搏斗
310其它
.
..
...
 
这样也是一种方法,有没有别的方法,我不想改前面的数字!如果不行的话,我只有按你这种方法去加载了!
 
这样可以只通过前三位就可以区分类别,如果你想用分效率低的方法也行,不过不知道你的需要,什么时候取“学历”?什么时候取“职称表”?
是不是想传个"学历"字符串就得到
文盲
小学
初中
中专
高中
大专
本科
研究生
搏斗
其它
 
谢谢你
我将TXT内容改了,前面都加了一个前缀,我在取的时候只有判断第一个字符就可以了!
省份列表
001--北京
002--上海
003--天津
004--重庆
005--四川
006--贵州
007--广东
008--浙江
009--福建
010--湖南
011--湖北
012--山东
013--山西
014--河南
015--河北
016--吉林
017--辽宁
018--黑龙江
019--安徽
020--江苏
021--江西
022--海南
023--陕西
024--云南
025--青海
026--宁夏
027--甘肃
028--新疆
029--西藏
030--广西
031--内蒙古
032--香港
033--澳门
034--台湾


职称表
101--作业员
102 资讯部
103--业务员
104--财务员
105--其它职业

学历
201--文盲
202--小学
203--初中
204--中专
205--高中
206--大专
207--本科
208--研究生
209--搏斗
210其它

市场职位
30--无
31--跟单员
32--业务员
33--营销经理
34--开发副总

性别
40--男
41--女

政治面貌
50--无
51--团员
52--党员


民族列表
601--汉族
602--回族
603--藏族
604--壮族
605--瑶族
606--彝族
607--阿昌族
608--白族
609--布依族
610--傣族
611--侗族
612--土家族
613--独龙族
614--仡佬族
615--哈尼族
616--基诺族
617--景颇族
618--拉祜族
619--黎族
620--傈僳族
621--珞巴族
622--毛南族
623--门巴族
624--苗族
625--仫佬族
626--纳西族
627--怒族
628--普米族
629--羌族
630--畲族
631--水族
632--维吾尔族
633--哈萨克族
634--塔塔尔族
635--满族
636--蒙古族
637--土族
638--东乡族
639--撒拉族
640--保安族
641--鄂伦春族
642--鄂温克族
643--达斡尔族
644--赫哲族
645--乌兹别克族
646--柯尔克孜族
647--锡伯族
648--裕固族
649--朝鲜族
650--布朗族
651--德昂族
652--佤族
653--塔吉克族
654--俄罗斯族
655--高山族
656--京族

procedure TForm1.Button1Click(Sender: TObject);
var s, s2: string;
var
strList: tstringList; i: Integer;
begin
strList := tstringList.create;
strList.Loadfromfile('C:/Documents and Settings/Administrator/桌面/test.txt');
for i := 0 to strList.Count - 1 do
begin
S := trim(strList.strings);
if CoPy(S,1,1)='1' then //这个值的变化,决定加载什么内容
Combobox1.Items.Add(copy(S, pos('--', S) + 2, Length(S)));
end;
strList.Free;
end;
 
这样写的方便些吧?麻烦是自己给自己找的,用ini连循环都不用!几句话就出来了
 
即使象你用的那种方法要循环判断字符串如:
先找到“学历”再找到学历后以['0'..'9']开头的字符;
再解板字符串;
 
清新空气,:
恩,谢谢你的指引!现在散分了!
 
后退
顶部