当前位置:主页>仓库管理软件> 列表

取出位置中的字串 找药品进销存管理系统

库存管理软件版1楼: var
a,b,c :String ;
begin
a := ''接收<<@rd+0.0957,+0.1259接收" ;

需取出b= ''+0.0957''与c = ''+0.01259 ''
请问如何得出b,c的值 ?

即b的值为:''rd''和,之间的值.位数不固定.
c的值为:'',''以后的值.并且"接收"前的值.位数不固定.

也就是说b现在是+0.0957有可能是+10.0957或者+100.0957或上千位等更大的数据.
c的值也与b一样,位数是不固定的.

end;

2楼: [^][^][^][^][^]看不明白你的问题! 如药品进销存管理系统

3楼: 呵,不是吧?我觉得我还是说的很清楚了吧!

4楼: 看不明白,是不是 a=0.0957,b=0.1259 ,c=''''
要是如此,你可以采用分隔符“,”搜索方式,定位你的数据位,然后用move即可取出

5楼: var
pos1,pos2,pos3:integer;
begin
pos1:=pos(''rd'',a)+2;
pos2:=pos('','',a)+1;
pos3:=(''接收'',a);
b:=copy(a,pos1,pos2-pos1);
if pos3=0 then
c:=copy(a,pos2,length(a)-pos2+1);
else
c:=copy(a,pos2,pos3-pos2);
end;
//没有调试,你试一下

6楼: 首先:
function getSomeStr(Str, beignChr, endChr: string): string;
begin
result := copy(str, pos(beginchr,str), pos(endchr,str)- pos(beginchr,str))
end;
调用:
b := getSomeStr(a, ''rd'', '' '');

库存管理软件版7楼: uses Math;

procedure TForm1.Button1Click(Sender: TObject);
var
a, b, c: string;
p1, p2: integer;
begin
a := ''接收<<@rd+0.0957,+0.1259'' + '' ''; //(或者是"接收") ;
p1 := Pos(''rd'', a);
a := copy(a, p1 + 2, Length(a) - p1 - 1);
p2 := Pos('','', a);
b := Copy(a, 1, p2 - 1);
label1.Caption := b;
a := Copy(a, p2 + 1, Length(a) - p2);
p1 := Pos('' '', a);
p2 := Pos(''接收'', a);
if (p1 = 0) and (p2 = 0) then
c := a
else if (p1 > 0) and (p2 > 0) then
c := Copy(a, 1, min(p1, p2) - 1)
else
c := Copy(a, 1, max(p1, p2) - 1);
Label2.Caption:=c;
end;

----上面是最笨的方法.呵呵.
通用的话,考虑正则表达式提取

8楼: 请大家重新看一下问题,我刚才有修改~~


如果可以请各位做适当修正自己的代码,
我测试OK后马上结贴给分,谢谢!

9楼: 多人接受答案了。