Delphi Can

Orjinalini görmek için tıklayınız: dizideki en buyuk sayı ve id si
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
arkadaşlar dizi içindeki en buyuk değeri bulma üzerine netde araştırma yaptım. 
sonuc:=MaxIntValue(frmWinTp);//en büyük degeri bul  

bu kodla en buyuk değeri buluyorum ama bana en buyuk değerin id side lazım 
for döngüsü kullanmadan bulmak mümkünmü?
saygılarımla
Size bir iyi bir kötü haberim var...

Kötü haber; Math unitinde MaxIntValue fonksiyonunu incelerseniz zaten for döngüsü ile çalıştığı aşağıdaki kodu görürsünüz.

function MaxIntValue(const Data: array of Integer): Integer;
var
  I: Integer;
begin
  Result := Data[Low(Data)];
  for I := Low(Data) + 1 to High(Data) do
    if Result < Data[I] then
      Result := Data[I];
end;


İyi haber ise Math unitini boş verin, kendiniz bu fonksiyonu copy/paste yapın ve ekstra bir tane daha değişken koyup index'i de tutabilirsiniz.


Örnek :

Type tSonuc = record
    Maxvalue, Index : Integer;
end;

function MaxIntValueAndIndex(const Data: array of Integer): tSonuc;
var
  I: Integer;
begin
  Result.Maxvalue :=  Data[Low(Data)];
  Result.Index    :=  Low(Data);

  for I := Low(Data) + 1 to High(Data) do
    if Result.Maxvalue < Data[I] then begin
      Result.Maxvalue := Data[I];
      Result.Index    := I;
    end;
end;


Kullanımı
procedure TForm1.Button1Click(Sender: TObject);
const
  LDizi : Array[0..4] of integer = ( 5, 7, 12, 1, 3 );
var
  LSonuc : tSonuc;
begin
  LSonuc := MaxIntValueAndIndex( LDizi );
  ShowmessageFmt('Dizinin Max değeri :%d ve %d index nosunda yer alıyor', [ LSonuc.Maxvalue, LSonuc.Index ]);
end;


xwwgbbj76aka2oecovjv.gif
hocam bu kadar detaylı cevap gelince utandım valla çok sağolun hocam.

ben aşagıdaki şekilde halletmiştim. sizin örneklerinizide kullanacağım

saygılarımla


procedure TfrmWin.FormShow(Sender: TObject);
var
i,sonuc:integer;
id:integer;
begin
//kazanann sıralayı belirleyelim
sonuc:=MaxIntValue(frmWinTp);//en büyük degeri bul
for i:=1 to 10 do
              begin
              if frmWinTp[i]=sonuc then id:=i;
              end;
lblBir.Caption:=frmWinAd[id];
lblBirPuan.Caption:=IntToStr(sonuc);
end;