回 帖 发 新 帖 刷新版面

主题:求助-----字段分割问题

哪位大哥帮我看下:下面代码没有问题,但用其中注释的代码就不行,这是为什么啊???我在线等,哪位大哥救下我啊。谢谢了~!
edit1.Text:=query1.fieldbyname('bc').AsString;
j:=length(edit1.Text);
for i:=0 to j-1 do
begin
edit1.SelStart:=i;
edit1.SelLength:=1;
if edit1.SelText='*' then
begin
edit1.SelStart:=0;
edit1.SelLength:=i-5;
label1.Caption:=edit1.SelText;
//table1.FieldByName('gbhd').AsFloat:=strtofloat(edit1.SelText);
edit1.SelStart:=i-4;
edit1.SelLength:=4;
label2.Caption:=edit1.SelText;
//table1.FieldByName('gbkd').AsInteger:=strtoint(edit1.SelText);
edit1.SelStart:=i+1;
edit1.SelLength:=j-i+1;
label3.Caption:=edit1.SelText;
//table1.FieldByName('gbcd').AsInteger:=strtoint(edit1.SelText);
end;
end;

回复列表 (共4个回复)

沙发

label1.Caption:=edit1.SelText;
label1.caption里如果确定是你要的数据的话.前面加一个trim试试看.
还有你的那三个注释行你一行一行注释show一下看看.

板凳

谢谢你,不过不知道是不是我的问题没说清楚,我的意思是如果用这样的代码能够达到我预期的目的,不过如果加入注释行就不行了,提示‘50*2000*7400’is
not a valid floating point value(说明下,50*2000*7400是我数据库中第一个记录的‘BC’字段的值),怎么会提示这样的错误啊?谢谢帮帮忙吧~~~~

3 楼

你这样相当于
table1.FieldByName('gbhd').AsFloat:=strtofloat('50*2000*7400');

'50*2000*7400'当然不是一个有效的浮点值了,他的结果才可以进行转换,你可以通过*号来分割出三个数值,然后进行计算,得出结果就OK了。
字符串分割函数:
type userarray=array of string;

function split(s:string;dot:char):userarray;
    var
     str:userarray;
     i,j:integer;
    begin
       i:=1;
       j:=0;
       SetLength(str, 255);
       while Pos(dot, s) > 0 do
       begin
        str[j]:=copy(s,i,pos(dot,s)-i);
        i:=pos(dot,s)+1;
        s[i-1] := chr(ord(dot)+1);
        j:=j+1;
       end;
       str[j]:=copy(s,i,strlen(pchar(s))-i+1);
      result:=str;
    end;

4 楼

谢谢你们了,我的问题已经解决,不过今天来看到了更好的解决办法了~~

我来回复

您尚未登录,请登录后再回复。点此登录或注册