我有Edit1
,您可以在其中键入2 20 10 -3
等数字,当您点击Button1
时,它会显示最大和最小数字max = 20 min = -3。
当我拿出数字时,我试图将min
和max
数字交换为Edit1
2 -3 10 20
Edit4.Text:= (inttostr(min)+' '+ inttostr(max));
我按照我的方式尝试了但是其他输入的数字更改了地方。
我尝试了很多方法:
maxnumb := Edit4
Edit4.Text := StringReplace(maxnumb, inttostr(max), inttostr(min),
[rfReplaceAll, rfIgnoreCase]);
Edit1.Text := StringReplace(maxnumb, inttostr(min), inttostr(max),
[rfReplaceAll, rfIgnoreCase]);
但它会覆盖其他数字。
然后我尝试使用
Button1
但它只转换了第一个数字,当我再次点击procedure TForm1.Button1Click(Sender: TObject);
var
oSL: TStringlist;
s, ss: string;
a: array [1 .. 15] of integer;
i, j, k, p, code: integer;
max, min: integer;
before, after: string;
begin
s := Edit1.Text;
s := concat(s, #32);
i := 0;
while Length(s) > 0 do
begin
i := i + 1;
p := pos(#32, s);
ss := copy(s, 1, p - 1);
Val(ss, k, code);
a[i] := k;
delete(s, 1, p);
end;
// Max
max := a[1];
For j := 1 to i do
if max < a[j] then
max := a[j];
// Min
min := a[1];
For j := 1 to i do
if min > a[j] then
min := a[j];
// Put out Max/Min
Edit3.Text := IntToStr(max);
Edit2.Text := IntToStr(min);
end;
时,它会转换第二个数字。
没有尝试交换的代码:
var links = window.frames[1].document.getElementsByTagName("a");
答案 0 :(得分:1)
uses
Types, StrUtils;
function Arrange(const AEditFrom, AEditTo: TEdit): Boolean;
var
_StrArr: TStringDynArray;
i: integer;
_IntArr: array of integer;
_IntValue: integer;
_Min: integer;
_Max: integer;
begin
Result := False;
if not Assigned(AEditFrom) then
Exit;
if not Assigned(AEditTo) then
Exit;
_StrArr := SplitString(AEditFrom.Text, ' ');
SetLength(_IntArr, Length(_StrArr));
for i := 0 to Length(_StrArr) - 1 do
begin
if not TryStrToInt(_StrArr[i], _IntValue) then
Exit;
_IntArr[i] := _IntValue;
end;
AEditTo.Clear;
_Min := _IntArr[0];
_Max := _IntArr[0];
for i := 0 to Length(_IntArr) - 1 do
begin
if _IntArr[i] > _Max then
_Max := _IntArr[i];
if _IntArr[i] < _Min then
_Min := _IntArr[i];
end;
AEditTo.Text := StringReplace(AEditFrom.Text, ' ' + IntToStr(_Min),
'...' + IntToStr(_Max), [rfReplaceAll, rfIgnoreCase]);
AEditTo.Text := StringReplace(AEditTo.Text, ' ' + IntToStr(_Max),
' ' + IntToStr(_Min), [rfReplaceAll, rfIgnoreCase]);
AEditTo.Text := StringReplace(AEditTo.Text, '...', ' ',
[rfReplaceAll, rfIgnoreCase]);
Result := True;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if not Arrange(Edit1, Edit2) then
ShowMessage('Something went wrong. List contains not a integer?');
end;
测试: 2 20 10 -3 ,结果: 2 -3 10 20