2 20 10 -3
のような数字を入力できるがあり、Button1
をクリックするとmax = 20min = -3が得られます。 min
とmax
の番号がEdit1
のようにスワップする数字を出そうとすると、2 -3 10 20
のようになりました。私の方法で試しましたが、他の数字が変わりました。 私は多くの方法を試みました:Edit1の要素を入れ替えます
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]);
を使用しようとしました。しかし、それは唯一の第一の数をswapedと私は再びButton1
をクリックしたときに、第2の数をswaped。交換しようとする試みなし
コード:
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;
をしてください[編集]あなたの質問、 '2 20 10 -3'のminとmaxの値を入れ替えても' 2 -3 20 10'ではなく '2 -3 10 20'が返されます。 –
これを解決するには、StringReplaceの試行をやめてください。 Edit.Textのすべての数字を解析し、整数の配列にあなたのものを加え、それらをすべてEdit.textに連結します。 –
maxnumbはどのタイプですか?それが文字列の場合、最初の行 "maxnumb:= edit4"はコンパイルされません。編集ボックスの場合、stringreplaceはコンパイルされません。あなたの質問に正しいコードがあることを確認してください。 – GuidoG