求助!!!!两篇文档之间的转换问题,高手帮帮忙
delphi吧
全部回复
仅看楼主
level 1
单机骚年打酱油
楼主
文本文档如图,现我需要逐行取到对应的X,Y,Z 后面的数值,显示到memo2 中。若本行没有X,Y,Z 则他们对应的是上一行的值。我现用的方法是:循环整个memo文本,逐行定位到X,Y,Z 。X值就是X...Y中间的字符。Y值就是Y...Z中间的字符,若posx=0则X:=X。我想问问我怎么取到Z的值(z后面可能有其他字符),还有,如果某行没有Y,那么X的值如何取?没有Z ,Y的值如何取?
2014年04月04日 05点04分
1
level 7
[email protected]
用字符串处理函数 pos copy等进行截取即可,很简单的。
1 我想问问我怎么取到Z的值(z后面可能有其他字符) 其他字符是非数字形式吗?如果是依次判断到第一个非数字类型的字符就可以了。
2 还有,如果某行没有Y,那么X的值如何取? 那有Z吗?有Z就以Z为依据取,Y就为空。
3 没有Z ,Y的值如何取? 回答同1
2014年04月04日 06点04分
2
单机骚年打酱油
首先后面的字符可能是数字形式,也可能是非数字形式。然后,有什么办法能从Z之后开始判断么?不然取到的肯定是最初的那个N。
2014年04月04日 07点04分
level 10
wang_80920
1. 据说用正则好。
2. 按空格分隔成多个字符串。
2014年04月04日 09点04分
3
level 7
[email protected]
var
s:string;
posX,posY,posZ:integer;
begin
s:='N0010 G0 G90 X142.8286 Y-140.0000 Z50.0000';
posX:=pos("X",s);
posY:=pos("Y",s);
posZ:=pos("Z",s);
if posX>0 then
begin
//表示有X,写下你的代码
end else
begin
//表示没有X,写下你的代码
end;
end;
2014年04月05日 05点04分
5
level 6
随便路过💨💨💨
我觉得你的数据格式应该结合3,5楼,但正则就免了。
行格式
N0010 G0 G90 X142.8286 Y-140.0000 Z50.0000
XYZ项分别为 空格X,空格Y,空格Z,无空格前缀的则是是值得 例如 空格X142.X乃X=142.X
当前面的值不存在,依旧有空格
N0010 G0 G90空格(不存在的X)空格(不存在的Y)空格(Z值)Z50.0000
1,(一次载入)显示修改分割空格得到各项
2,查询用5楼字符串搜索
2014年04月05日 11点04分
6
level 6
随便路过💨💨💨
如果数据格式不面向用户,二进制,定长保存是最好的
如果数据格式提供用户浏览,你那种也是不错的
如果数据格式提供用户编辑,可视化分割符更好(例如用|代替空格)
2014年04月05日 12点04分
7
1