Delphi - Değişken adına göre değer atama.
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 8
- Kayıt: 08 Eyl 2011 02:51
Delphi - Değişken adına göre değer atama.
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.
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.
Re: Delphi - Değişken adına göre değer atama.
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
var
ali,veli,ahmet,mehmet,huseyin : integer;
procedure button1.click .....
begin
if edit1.text = 'ali' then ali := edit2.text
end;
gibi yapabilirsin
-
- Üye
- Mesajlar: 8
- Kayıt: 08 Eyl 2011 02:51
Re: Delphi - Değişken adına göre değer atama.
teşekkür ederim ama o şekilde yapmak istemiyorum.
-
- Üye
- Mesajlar: 8
- Kayıt: 08 Eyl 2011 02:51
Re: Delphi - Değişken adına göre değer atama.
çünkü kullandığım 50 adet değişken var. onları daha önce o şekilde yapıyordum,
yöntemi değiştirmek istiyorum.
yöntemi değiştirmek istiyorum.
Re: Delphi - Değişken adına göre değer atama.
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
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
www.polisoft.com.tr
-
- Üye
- Mesajlar: 8
- Kayıt: 08 Eyl 2011 02:51
Re: Delphi - Değişken adına göre değer atama.
volkan bey, çok teşekkür ederim cevap yazdığınız için, bu akşam deneyeceğim inşallah.
-
- Üye
- Mesajlar: 8
- Kayıt: 08 Eyl 2011 02:51
Re: Delphi - Değişken adına göre değer atama.
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.
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.
Re: Delphi - Değişken adına göre değer atama.
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;
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;
Re: Delphi - Değişken adına göre değer atama.
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.
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;
-
- Üye
- Mesajlar: 8
- Kayıt: 08 Eyl 2011 02:51
Re: Delphi - Değişken adına göre değer atama.
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.
integer değişkenin case of değerine işi çözdüm.
herkese kolay gelsin.