독일어 사이트 delphi-treff에서 delphi를 배우고 있습니다.임의의 문자열 생성시 프로그램 고정
그들은 임의의 문자열을 생성하는 기능을 제공합니다.
function RandomString(strlength: integer): string;
var
temp : integer;
begin
randomize;
repeat
temp := random(122); //ggf. erhöhen
if temp in [48..57{0-1}, 65..90{A-Z}, 97..122{a-z}] then
//Kann um beliebige ASCII-Zeichen erweitert werden,
//ggf. den Wert in Random hochsetzen
result := result + Chr(temp);
until length(result) = strlength;
end;
당신이 여기에서 볼 수
https://www.delphi-treff.de/tipps-tricks/object-pascal/strings/zufallstring-generieren/ : 그들은 단지 0-1을 넣어
if temp in [48..57{0-1}, 65..90{A-Z}, 97..122{a-z}] then
, A-Z와 문자로 A-Z.
그러나이 기능으로 인해 프로그램이 다운 된 것 같습니다.
그래서 변경 : until length (result) = strlength;
to : length (result)> = strlength;
실제로 실제로는> strlength입니다.
누군가가 왜 더 큰지 설명 할 수 있습니까?
한 번에 한 문자 씩 추가하기 때문에 크기가 커야합니까?
'결과'는 루프 전에 초기화되지 않으므로 길이가 오버플로됩니다. 'Randomize'는 프로그램 시작시 한 번만 초기화되어야합니다. –
@LURD 그래서 결과는 strlength보다 긴 임의의 값으로 초기화되므로 기준을 결코 충족시키지 못합니까? – Thomas
[Delphi에서 'Result'의 기본값은 무엇입니까?] (http://stackoverflow.com/questions/5336863/what-is-the-default-value-of-result-in-delphi)를 참조하십시오. 덕분에 @ –