这样的一个字符串,形如:str := '620,6146;480,6083;706,6049;593,6049;1006,5856;869,5832;809,5832;755,5832;695,5832;' ;
str中间用分号分隔开的,是一组数值(包含两个数字),现在要做的是随机取出其中的一组数值,然后,再分别赋给另外的两个变量,x := 数值中的第一个数
Y := 数值中的第二个数求写法,

解决方案 »

  1.   

    http://topic.csdn.net/u/20111227/16/112cab94-f452-45aa-9e91-6da6514f0425.html
      

  2.   

    用TStringList,按都好分割成列表,然后随机去list中的索引
      

  3.   

    先按;分号分隔 载入到TStringList中
    var
      List: TStringList;  List := TStringList.Create; 
      List.text := StringReplace(str, ';', #13#10, [rfreplaceall]);
     
      再随机和分割TStringList的某一行 给X和Y
      List2 := TStringList.Create; 
      List2.text := StringReplace(List[random(List.count)], ',', #13#10, [rfreplaceall]);
      X := List2[0];
      Y := List2[1];  
      

  4.   

    创建一个空白窗体,上面再创建两个 TMemo(mmo1、mmo2)和一个 TButton(btn1),双击 btn1,用下面的代码:function RandomSubStr(Str: string; SplitChar: Char): string;
    var
      I: Integer;
      Strs: TStringList;
    begin
      Randomize;
      Strs := TStringList.Create;
      try
        Strs.Delimiter := SplitChar;
        Strs.DelimitedText := StringReplace(Str, #13#10, '', [rfReplaceAll]);
        for I := Strs.Count - 1 downto 0 do
          if Trim(Strs[I]) = '' then Strs.Delete(I);
        if Strs.Count = 0 then Exit;
        Result := Strs[Random(Strs.Count)]
      finally
        Strs.Free;
      end;
    end;procedure TForm1.btn1Click(Sender: TObject);
    var
      Str: string;
      I: Integer;
    begin
      Str := RandomSubStr(mmo1.Lines.Text, ';');
      I := Pos(',', Str);
      mmo2.Lines.Add(Str);
      mmo2.Lines.Add('X = ' + Copy(Str, 1, I - 1));
      mmo2.Lines.Add('Y = ' + Copy(Str, I + 1, Length(Str) - I));
      mmo2.Lines.Add('');
    end;运行时,将整理前的字符串粘贴在 mmo1 中,然后点击 btn1 开始整理。
      

  5.   


           用TStringList,按都好分割成列表,然后随机去list中的索引                       +1