快疯掉了关于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] := ' ';
[解决办法]
你是马楠吗?
[解决办法]
你是元芳?。。
[解决办法]
你是元芳?。。
[解决办法]
这样也可以, 值是有的,用COUNT返回为7,但是只要在循环里面取值就一定是错的!
[解决办法]
用SLIST.COUNT返回值为7 但是只要赋值就报错。
但是在循环外面 就可以赋值同样的语句试了N次。就是有这个问题。
现在自己写了个函数。真郁闷!
[解决办法]
那个制表符不是标准的好像 ,用#9 或者你这个 没办转换。
返回的还是原来的。那个是我直接从文本里面拷贝过来。转换是没有问题的!