Edit1
adresinde 2 20 10 -3
gibi sayıları yazabilir ve Button1
tıklattığınızda max ve min sayılarını çıkarır max = 20 min = -3. Numaraları çıkardığımda min
ve max
numaralarını2 -3 10 20
olarak değiştirdiğimde bunu denedim, ancak kendi yöntemlerimde denedim ancak diğer girilen numaralar değişiyor. Ben birçok yol denedim:Edit1 öğesinde değiştirme öğeleri
Edit4.Text:= (inttostr(min)+' '+ inttostr(max));
ancak diğer sayılar üzerine yazılır.
Sonra benmaxnumb := Edit4
Edit4.Text := StringReplace(maxnumb, inttostr(max), inttostr(min),
[rfReplaceAll, rfIgnoreCase]);
Edit1.Text := StringReplace(maxnumb, inttostr(min), inttostr(max),
[rfReplaceAll, rfIgnoreCase]);
kullanmaya çalıştı Ama sadece 1 sayı swaped ve tekrar Button1
tıklandığında ikinci sayı swaped. girişimleri olmadan
Kod takas:
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;
Lütfen [değiştir] soru, belirsizdir: "2 20 10 -3" de min ve max değerlerinin değiştirilmesi 2 -3 20 10' değil '2 -3 10 20' döndürmez. –
Ve bunu çözmek için StringReplace girişimlerinizi durdurun. Sadece Edit.Text gelen tüm numaralar ayrıştırmak, bir tamsayılar dizisi üzerinde yapmak, hepsini geri Edit.text –
içine bitmiş maxnumb türü nedir? eğer bir dizge ise "maxnumb: = edit4" ilk satırı derlenmez. Eğer bir Editbox ise, stringreplace derlenmeyecektir. Sorunuzda doğru kodu bulduğunuzu kontrol edin. – GuidoG