我的 那个其实 谈不上 算法就是 把 一个 字符串 拆分成 多个 TColRec 而已只是 TColRec 中的p 是个指针而已下面 这个 函数是做 拆分 字符串的只是我比较 习惯用pchar 所以代码写的不好这个纯粹是 个人习惯 而已procedure Num2NumRec(v: pchar; len: integer; var Num: TNumRec);var p: pchar; i: integer; PCol: PColRec;begin Num.Colcount := 0; if len <= 0 then exit; p := v; PCol := @(Num.Col[0]); PCol.Length := 0; for i := 1 to len do begin if p^ = FilterSeparator then begin inc(PCol); PCol^.Length := 0; end else begin if PCol^.Length = 0 then begin PCol^.P := p; inc(Num.Colcount); end; inc(PCol^.Length); end; inc(p); end;end;
procedure Num2NumRec(v: pchar; len: integer; var Num: TNumRec);var p: pchar; i: integer; PCol: PColRec;begin Num.Colcount := 0; if len <= 0 then exit; p := v;//首字符 PCol := @(Num.Col[0]);//指向首列 PCol.Length := 0; for i := 1 to len do begin if p^ = FilterSeparator then //是分割符 begin inc(PCol); //指向下一列 或者说 一个新列将要开始 PCol^.Length := 0;//新的这列长度 置 0 (初始化) end else begin if PCol^.Length = 0 then //该列 的 首字符 begin PCol^.P := p;//记录下 该列 的首字符的 地址 inc(Num.Colcount);// 总列数 加 1 end; inc(PCol^.Length);//该列 长度加 1 end; inc(p);////指向下一个字符 end;end;