Delphi - Değişken adına göre değer atama.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
serdargungor
Üye
Mesajlar: 8
Kayıt: 08 Eyl 2011 02:51

Delphi - Değişken adına göre değer atama.

Mesaj gönderen serdargungor »

Selamın aleyküm arkadaşlar,

Yapmak istediğim konu şu, mesela 5 adet integer değişkenim var. isimleri ali, mehmet, hasan, hüseyin ve serdar.
ben kısaca Edit1 kutusuna değişkenin adını yazıp Edit2 kutusunada değerini yazıp bu şekilde değer atamak istiyorum.
Nasıl yaparım, yardımcı olacak arkadaşlara şimdiden teşekkür ederim.
destiny24
Üye
Mesajlar: 131
Kayıt: 22 Tem 2010 09:42

Re: Delphi - Değişken adına göre değer atama.

Mesaj gönderen destiny24 »

eğer değişken isimlerin sabit ise mesela

var
ali,veli,ahmet,mehmet,huseyin : integer;


procedure button1.click .....
begin
if edit1.text = 'ali' then ali := edit2.text
end;

gibi yapabilirsin
serdargungor
Üye
Mesajlar: 8
Kayıt: 08 Eyl 2011 02:51

Re: Delphi - Değişken adına göre değer atama.

Mesaj gönderen serdargungor »

teşekkür ederim ama o şekilde yapmak istemiyorum.
serdargungor
Üye
Mesajlar: 8
Kayıt: 08 Eyl 2011 02:51

Re: Delphi - Değişken adına göre değer atama.

Mesaj gönderen serdargungor »

çünkü kullandığım 50 adet değişken var. onları daha önce o şekilde yapıyordum,
yöntemi değiştirmek istiyorum.
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: Delphi - Değişken adına göre değer atama.

Mesaj gönderen vkamadan »

Merhaba ,
bahsettiğiniz özellik için Delphi de PHP de olduğu gibi basit bir yol yoktur, yani değişken isimlerini değişken yapabilme vb.. (component tipindeki değişkenleri FindComponent ,FindControl vb fonksiyonları var ama doğrudan veri tipi değişkenlerin böyle bir olayı yok) bu yüzden değişkenlerinizi ve onları temsil edecek isimleri dizilerde tutabilirsiniz ve edite girilen değeri isim dizisinde arayıp indexini alıp paralel olan değişken tuttuğunuz dizi de değeri bulabilirsiniz şöyle bir örnek vereyim

Kod: Tümünü seç

const  DegiskenIsimleri : array [1..5] of String =  ('d1','d2','d3','d4','d5') ;
var
Degiskenler : array [1..5] of Integer;

  function DegiskenIndexBul( pDeger : String ) : Integer;
  var
   i: Integer;
  begin
    for i := 1 to Length( DegiskenIsimleri )  do
      begin
         if DegiskenIsimleri[i] = pDeger then
          begin
             Result := i ;
             Break;
          end;
      end;
  end;

begin
  Degiskenler[1] := 5 ;
  Degiskenler[2] := 10 ;
  Degiskenler[3] := 15 ;
  Degiskenler[4] := 20 ;
  Degiskenler[5] := 25 ;

  ShowMessage( IntToStr( Degiskenler[ DegiskenIndexBul( Edit1.Text ) ] ) ) ;

end;

Volkan KAMADAN
www.polisoft.com.tr
serdargungor
Üye
Mesajlar: 8
Kayıt: 08 Eyl 2011 02:51

Re: Delphi - Değişken adına göre değer atama.

Mesaj gönderen serdargungor »

volkan bey, çok teşekkür ederim cevap yazdığınız için, bu akşam deneyeceğim inşallah.
serdargungor
Üye
Mesajlar: 8
Kayıt: 08 Eyl 2011 02:51

Re: Delphi - Değişken adına göre değer atama.

Mesaj gönderen serdargungor »

volkan bey selam,

ben denedim fakat acsess violation hatası verdi.

yalnız benim için önemli olan değişkenleri bulup onlara değer atayabilmek. benim bu d1 ... d5 değişkenlerini integer olarak tanımlamam gerekiyormu ?

Benim yapmak istediğim olay şu kısaca,

50 adet integer değişkenim var, adları SGKOLON1....SGKOLON50, bunlara 1 den 50 ye kadar sayısal değer atıyorum, bu değer onların sıra numarası.
ben bunların adlarını ve değerlerini veri tabanına kaydetmek istiyorum. çünkü kullanıcı yerlerini değiştirmek istiyor. ben çok sayıda if ile uğraşarak
çözüyordum. fakat artık daha kısa yoldan çözmek istiyorum. Veri tabanını açtığım zaman ilk önce gelen değişken adına göre değişkeni bulup değerini atasın istiyorum.
yani, SORGU.Fieldvalues['KOLONADI'] (değişkenin adı), SORGU.Fieldvalues['KOLONNO'] ( Sıra no ), KOLONADI ndaki text'e göre değişkeni bulup ona değeri
yüklemek. Program içersinde SGKOLON1 ... SGKOLON50 degişkenleri integer olarak çok aktif kullanılıyor.
xeriko
Üye
Mesajlar: 15
Kayıt: 02 Eyl 2011 02:44

Re: Delphi - Değişken adına göre değer atama.

Mesaj gönderen xeriko »

sql veritabanı kullandığını farz ediyorum.

var
i:integer;

begin

adoquery1.first;

while adoquery1.eof=false do //tüm kayıtları sırayla ara
begin
if edit1.text=adoquery1.fieldbyname('adi').asstring then // edit1 deki değeri veritabanında arıyor. eğer bulursa
begin
adoquery1.fieldbyname('deger').asinteger=strtoint(edit2.text); //karşılığı olan değer artık edit2 deki değer olacak
break; //istediğimizi yaptığımız için döngüyü kes
end
else
adoquery1.next;
end;
end;
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Delphi - Değişken adına göre değer atama.

Mesaj gönderen mrmarman »

SGKOLON isiminde bir dizi oluşturup, dizinin eleman sayısını TEdit 'in yanındaki rakamsal ifade ile eşleştiğinde aslında kolay bir çözüm olur.

Mesela bir forma bir kaç TEdit koyun isimleri de dizideki ile eşlenik rastgele olsunlar. Burada verilen değerler sadece o Edit'lerde görünecektir.

Kod: Tümünü seç

Var
  SGKOLON : Array[0..50] of integer;
  i : integer;
begin
  ZeroMemory( @SGKOLON, sizeof(SGKOLON) );
  SGKOLON[3]  := 100;
  SGKOLON[35] := 120;
  for i := 0 to High(SGKOLON)
  do if SGKOLON[i] > 0 then
      TEdit(FindComponent('Edit'+IntToStr(i))).Text := IntToStr(SGKOLON[i]);
end;
Resim
Resim ....Resim
serdargungor
Üye
Mesajlar: 8
Kayıt: 08 Eyl 2011 02:51

Re: Delphi - Değişken adına göre değer atama.

Mesaj gönderen serdargungor »

yardımcı olan arkadaşlara çok teşekkür ederim,
integer değişkenin case of değerine işi çözdüm.
herkese kolay gelsin.
Cevapla