delphi tStringList 循环 如何得到重复的代码和数量
varlss_Res:TStrings;s,a,nm:string;ss:TStringList;i,j:Integer;jshangpingdm8:array[1..2...
var
lss_Res: TStrings;
s,a,nm: string;
ss:TStringList;
i,j:Integer;
jshangpingdm8:array[1..20] of string;
jshangpingqty8:array[1..20] of string;
begin
lss_Res := TStringList.Create;
s :='1-62-0-命令内容:商品;代码:103;数量:2;代码:104;数量:4;代码:105;数量:5;卡号:001';
s := StringReplace(s, ':', ':=', [rfReplaceAll]);
s := StringReplace(s, ';', #$0D#$0A, [rfReplaceAll]);
lss_Res.Text := s;
ss:= split(a,'-');
for I := 0 to lss_Res.Count - 1 do
begin
jshangpingdm8[i]:=(lss_Res.Values['代码:']);
jshangpingqty8[i]:=(lss_Res.Values['数量:']);
end;
就是我要得到代码:103;数量:2;代码:104;数量:4;代码:105;数量:5; 这些输入插入到数据库 例如:代码=103,数量=2 ,然后第二组数量=4;代码=105 以次类推就得到后面的数字 就这样插入到数据库 展开
lss_Res: TStrings;
s,a,nm: string;
ss:TStringList;
i,j:Integer;
jshangpingdm8:array[1..20] of string;
jshangpingqty8:array[1..20] of string;
begin
lss_Res := TStringList.Create;
s :='1-62-0-命令内容:商品;代码:103;数量:2;代码:104;数量:4;代码:105;数量:5;卡号:001';
s := StringReplace(s, ':', ':=', [rfReplaceAll]);
s := StringReplace(s, ';', #$0D#$0A, [rfReplaceAll]);
lss_Res.Text := s;
ss:= split(a,'-');
for I := 0 to lss_Res.Count - 1 do
begin
jshangpingdm8[i]:=(lss_Res.Values['代码:']);
jshangpingqty8[i]:=(lss_Res.Values['数量:']);
end;
就是我要得到代码:103;数量:2;代码:104;数量:4;代码:105;数量:5; 这些输入插入到数据库 例如:代码=103,数量=2 ,然后第二组数量=4;代码=105 以次类推就得到后面的数字 就这样插入到数据库 展开
3个回答
推荐于2017-11-04 · 知道合伙人软件行家
关注
展开全部
试编写代码如下:
procedure TForm1.btn1Click(Sender: TObject);
var
lss_Res: TStrings;
s, a, nm: string;
ss: TStringList;
i, j: integer;
jshangpingdm8: array [1 .. 20] of string;
jshangpingqty8: array [1 .. 20] of string;
begin
lss_Res := TStringList.Create;
lss_Res.Delimiter := ';';
ss := TStringList.Create;
ss.Delimiter := ':';
s := '1-62-0-命令内容:商品;代码:103;数量:2;代码:104;数量:4;代码:105;数量:5;卡号:001';
lss_Res.DelimitedText := s;
j := 1;
for i := 0 to lss_Res.Count - 1 do
begin
ss.DelimitedText := lss_Res[i];
if ss.Count>1 then
begin
if (ss[0]='代码') then
begin
jshangpingdm8[j] := ss[1]
end
else
if (ss[0]='数量') then
begin
jshangpingqty8[j] := ss[1];
Inc(j);
end;
end;
end;
lss_Res.Free;
ss.Free;
end;
运行调试截图:
展开全部
类似情况,我是用这种方法。
再弄一个TSTRINGLIST,比如A,A的条目是:字段#9数量.如103#92这种型式存储。
每遇上一个字段,比如103,就到A中去对比,看里面有没有。
如果有就把数量+1,如果没有就ADD('103' + #9 + '1');
最后只需把A往数据库里一写就OK了。
这个方法虽然有点老土,但是很实用,代码很好写。
如果内容很多,要考虑一下在A中查找时的效率,有一些比如折半之类的方法。
再弄一个TSTRINGLIST,比如A,A的条目是:字段#9数量.如103#92这种型式存储。
每遇上一个字段,比如103,就到A中去对比,看里面有没有。
如果有就把数量+1,如果没有就ADD('103' + #9 + '1');
最后只需把A往数据库里一写就OK了。
这个方法虽然有点老土,但是很实用,代码很好写。
如果内容很多,要考虑一下在A中查找时的效率,有一些比如折半之类的方法。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你只要后面的103、2、104、4等等数字,还是要 “代码=103、数量=2”等等?
你去搜搜TStringList的字符串分割吧。百度有很多,另外,我贴个地址,我之前帮别人解决的。你自己照着做。
http://zhidao.baidu.com/question/434384368.html?oldq=1
你去搜搜TStringList的字符串分割吧。百度有很多,另外,我贴个地址,我之前帮别人解决的。你自己照着做。
http://zhidao.baidu.com/question/434384368.html?oldq=1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询