这段代码可以生成OMfdimGwScg96L9RgtLA,但是我想要的是OMfdi-mGw-Scg96L9-RgtLA,就是中间要有一个“-”怎么改呢?
var
    SourceStr,str:string;
    i:integer;
begin
    SourceStr:='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    randomize;
    for i:=1 to 20 do
      str:=str+sourcestr[Random(62)+1];
      edit2.text := str;
end;

解决方案 »

  1.   

    为了避免反复申请内存,先将str 设为"-------------------------------------------";
    然后
    for i:=1 to 20 do
    begin
      if (i=6) or ( i=10) or (i=18) then
        continue;
      str[i]:=sourcestr[Random(62)+1];
    end;
      

  2.   

    是这样么 ?不对呀。运行后就出来一个字符
    var
        SourceStr,str:string;
        i:integer;
    begin
        SourceStr:='0123456789';
        randomize;
        str:='-------------------------------------------';
        for i:=1 to 20 do
        begin
            if (i=6) or ( i=10) or (i=18) then
            continue;
            str[i]:=sourcestr[Random(62)+1];
            edit2.text := str[i];
       end;
    end;