快疯掉了关于TStringList分割文本的有关问题
快疯掉了关于TStringList分割文本的问题本帖最后由 YiLuSuiYun 于 2012-11-27 23:42:14 编辑大叫好,我相信
快疯掉了关于TStringList分割文本的问题 本帖最后由 YiLuSuiYun 于 2012-11-27 23:42:14 编辑 大叫好,我相信大家都知道 str:=' 2草草草 3额额额 4郁闷 5操蛋 '; N:=TStringList.Create; n.Delimiter:=' '; n.DelimitedText:=str; edt1.text:=inttostr(n.Count); edt2.text:=n[3]; 这样就能以空格分割这个字符串了对吧 但是在循环里面使用就没办法
SList:=TStringList.Create; while not Eof(MonGen) do begin Readln(MonGen, Temp); if temp = '' then Continue; if Temp[1] = ';' then Continue; temp := Trim(temp); for i := 0 to Length(Temp) - 1 do begin if Temp[i] = '' then //将制表符转换成空格 Temp[i] := ' '; end; Slist.Delimiter:=' '; SList.DelimitedText:=Temp; edt1.Text:=SList[0]; SList.Clear;我是在文本中读入一行文本 然后循环将每行文本以空格分割。
但是这样老是报错 折腾了一晚上。都没办法。
edt1.Text:=SList[0];
只要有这一行就报错!
这一行是用来调试的,只要使用到了将列表的值赋值给其他变量就报错!
怎么解决
[解决办法] 赋值方法应该这样的吧:
edt1.Text:=SList.Strings[0];
[解决办法] slist.loadfromfile('c:\MonGen.txt');
edit1.text:=copy(slist.text,1,100);
会报错吗?
[解决办法] edt1.Text:=SList[0];
SList里没值吧,呵呵
[解决办法] Slist.count=0 吧,
[解决办法] 很明显,slist为空,在表示TAB时应用#9
[解决办法] 比奇????
[解决办法] 很明显下面这句没起作用
if Temp[i] = ' ' then //将制表符转换成空格
Temp[i] := ' ';
改为下面的代码再试试
if byte(Temp[i]) = 9 then //将制表符转换成空格
Temp[i] := ' ';
[解决办法] 你是马楠吗?
[解决办法] 你是元芳?。。
[解决办法] 你是元芳?。。
[解决办法] 引用: 赋值方法应该这样的吧: edt1.Text:=SList.Strings[0]; 这样也可以, 值是有的,用COUNT返回为7,但是只要在循环里面取值就一定是错的!
[解决办法] 引用: 很明显,slist为空,在表示TAB时应用#9
用SLIST.COUNT返回值为7 但是只要赋值就报错。
但是在循环外面 就可以赋值同样的语句试了N次。就是有这个问题。
现在自己写了个函数。真郁闷!
[解决办法] 引用: 很明显下面这句没起作用 if Temp[i] = ' ' then //将制表符转换成空格 Temp[i] := ' '; 改为下面的代码再试试 if byte(Temp[i]) = 9 then //将制表符转换成空格 Temp[i] := ' '; 那个制表符不是标准的好像 ,用#9 或者你这个 没办转换。
返回的还是原来的。那个是我直接从文本里面拷贝过来。转换是没有问题的!