unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) btLoadFile: TButton; btRandom: TButton; btSaveFile: TButton; procedure btLoadFileClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure btRandomClick(Sender: TObject); procedure btSaveFileClick(Sender: TObject); function RandomStr(sourceStr: string): string; private { Private declarations } myStringList: TStringList; public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}//读文件 procedure TForm1.btLoadFileClick(Sender: TObject); var myOpenDialog: TOpenDialog; begin myOpenDialog := TOpenDialog.Create(self); myOpenDialog.Filter := 'Text files (*.txt)|*.TXT'; if myOpenDialog.Execute then begin myStringList.LoadFromFile(myOpenDialog.FileName); Showmessage('读取文件完成!'); end; myOpenDialog.Free; end;//创建 procedure TForm1.FormCreate(Sender: TObject); begin myStringList := TStringList.Create; end;//打乱顺序 procedure TForm1.btRandomClick(Sender: TObject); var i: integer; begin for i := myStringList.Count - 1 downto 0 do begin myStringList.Strings[i] := RandomStr(myStringList.Strings[i]); end; showmessage('文件内容已经打乱!'); end;//保存文件 procedure TForm1.btSaveFileClick(Sender: TObject); var mySaveDialog: TSaveDialog; begin mySaveDialog := TSaveDialog.Create(self); mySaveDialog.Filter := 'Text files (*.txt)|*.TXT'; if mySaveDialog.Execute then begin myStringList.SaveToFile(mySaveDialog.FileName); showmessage('文件保存完成!'); end; mySaveDialog.Free; end;//打乱顺序的算法 function TForm1.RandomStr(sourceStr: string): string; function NumExist(arrName: array of integer; arrLen: integer; Num: integer): Boolean; var i: integer; begin result := False; for i := arrLen - 1 downto 0 do begin if arrName[i] = Num then begin result := True; end; end; end; var i, tempInt: integer; tempArr: array of integer; begin randomize; SetLength(tempArr, Length(sourceStr)); for i := Length(sourceStr) - 1 downto 0 do begin tempArr[i] := -1; end; for i := Length(sourceStr) - 1 downto 0 do begin repeat tempInt := random(Length(sourceStr)); until not NumExist(tempArr, Length(tempArr), tempInt); tempArr[i] := tempInt; end; for i := Length(sourceStr) - 1 downto 0 do begin result := result + sourceStr[tempArr[i] + 1]; end; end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
btLoadFile: TButton;
btRandom: TButton;
btSaveFile: TButton;
procedure btLoadFileClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btRandomClick(Sender: TObject);
procedure btSaveFileClick(Sender: TObject);
function RandomStr(sourceStr: string): string;
private
{ Private declarations }
myStringList: TStringList;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}//读文件
procedure TForm1.btLoadFileClick(Sender: TObject);
var
myOpenDialog: TOpenDialog;
begin
myOpenDialog := TOpenDialog.Create(self);
myOpenDialog.Filter := 'Text files (*.txt)|*.TXT';
if myOpenDialog.Execute then
begin
myStringList.LoadFromFile(myOpenDialog.FileName);
Showmessage('读取文件完成!');
end;
myOpenDialog.Free;
end;//创建
procedure TForm1.FormCreate(Sender: TObject);
begin
myStringList := TStringList.Create;
end;//打乱顺序
procedure TForm1.btRandomClick(Sender: TObject);
var
i: integer;
begin
for i := myStringList.Count - 1 downto 0 do
begin
myStringList.Strings[i] := RandomStr(myStringList.Strings[i]);
end;
showmessage('文件内容已经打乱!');
end;//保存文件
procedure TForm1.btSaveFileClick(Sender: TObject);
var
mySaveDialog: TSaveDialog;
begin
mySaveDialog := TSaveDialog.Create(self);
mySaveDialog.Filter := 'Text files (*.txt)|*.TXT';
if mySaveDialog.Execute then
begin
myStringList.SaveToFile(mySaveDialog.FileName);
showmessage('文件保存完成!');
end;
mySaveDialog.Free;
end;//打乱顺序的算法
function TForm1.RandomStr(sourceStr: string): string;
function NumExist(arrName: array of integer; arrLen: integer; Num: integer): Boolean;
var
i: integer;
begin
result := False;
for i := arrLen - 1 downto 0 do
begin
if arrName[i] = Num then
begin
result := True;
end;
end;
end;
var
i, tempInt: integer;
tempArr: array of integer;
begin
randomize;
SetLength(tempArr, Length(sourceStr));
for i := Length(sourceStr) - 1 downto 0 do
begin
tempArr[i] := -1;
end;
for i := Length(sourceStr) - 1 downto 0 do
begin
repeat
tempInt := random(Length(sourceStr));
until not NumExist(tempArr, Length(tempArr), tempInt);
tempArr[i] := tempInt;
end;
for i := Length(sourceStr) - 1 downto 0 do
begin
result := result + sourceStr[tempArr[i] + 1];
end;
end;end.