康虎云报表中如何取某一个字段中指定部分

admin 2021-11-16 250050

需求如下:

对于一个字符串“G01R320C-YC353-211113-YM37B-5-YC”,需要取出第一个横杠和第四个横杠之间部分生成QR二维码。


解决思路:

取字符串的一部分用Copy函数,取指定标志字符用Pos函数,但Pos只能取第一次出现指定字符的位置,需要写个函数扩展一下。


最终脚本如下:

{/*************************
*  取字符串指定标志之间部分生成二维码                       
**************************/}  

// 计算子串在主串第几次出现的位   
function PosEx(substring,s:string;times:Integer):Integer;
var
  nCount,nIndex: Integer;
begin
  nCount:=0;
  while times>0 do
  begin
    nIndex:=Pos(substring,s);
    if nIndex<=0 then
      break;
    s:=Copy(s,nIndex+1,Length(s)-nIndex);
    nCount:=nCount+nIndex;
    times:=times-1;
  end;
  Result:=nCount;
end;
  
procedure MasterData2OnBeforePrint(Sender: TfrxComponent);
var
  S: String;
  p1, p2: Integer;                                      
begi
   s := 'G01R320C-YC353-211113-YM37B-5-YC';  //完整字符串
   p1 := PosEx('-', s, 1);                   //第一个标志位置
   p2 := PosEx('-', s, 4);                   //第二个标志位置
   if p1<1 then p1 := 1;                     //如果第一个标志未找到,则从头开始取
   if p2<1 then p2 := Length(s);             //如果第二个标志未找到,则取到末尾                                                            
   Barcode2D1.Text := Copy(s, p1+1, p2 - p1 - 1);  //截取字符串并赋值给二维码组件     
end;




最新回复 (0)
返回