Kayıt Bulma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Kayıt Bulma

Mesaj gönderen ozcank »

Arkadaşlar yardımcı olurmusunuz? Burda hata veriyor " If BUL = TRUE Then " bir türlü çözemedim

Kod: Tümünü seç

procedure TForm3.BitBtn5Click(Sender: TObject);
Var
CKODBUL:Boolean;
CEVAP,BUL:Integer;
Begin
IF Edit2.Text='' Then
Begin
ShowMessage('ÇIKIŞ MIKTARI Boş Geçilemez')
End
Else IF (DBEdit4.Text='G') Then
Begin
ShowMessage('İşlem Tipi "G" Olanlar Düzeltilemez !!!!!');
end;

BUL:=StrToInt(InputBox('Kayıt Bul','Bulmak istediğiniz ürünün Çıkış Kodunu giriniz.',''));
CKODBUL:=ERehber.Locate('ECIK_KODU',BUL,[]);
  If BUL = TRUE Then
    begin
    cevap:=Application.MessageBox('Kayıt muvcut. Değiştirilmesini ister misiniz?','Cevap',MB_YESNO);
    if cevap=mrYes Then
      begin
ShowMessage('düzeltme işlemine başla');
//EKAYIT.Edit;
//EKAYIT.FieldByName('ECIK_KODU').Value:=Edit1.Text;
//EKAYIT.FieldByName('ECARI_KOD').Value:=DBEdit1.Text;
//EKAYIT.FieldByName('ECARI_ISIM').Value:=DBEdit2.Text;
//EKAYIT.FieldByName('EFISNO').Value:=DBEdit3.Text;
//EKAYIT.FieldByName('ESTHAR_TARIH').Value:=DBEdit5.Text;
//EKAYIT.FieldByName('ESTHAR_GCMIK').Value:=Edit2.Text;
//EKAYIT.FieldByName('ESTOK_KODU').Value:=DBEdit6.Text;
//EKAYIT.FieldByName('ESTOK_ADI').Value:=DBEdit7.Text;
//EKAYIT.FieldByName('EKALAN').Value:=DBEdit10.Text;
//EKAYIT.FieldByName('EGCTIP').Value:='C';
//EKAYIT.FieldByName('ETARIH1').Value:=DateTimePicker1.DateTime;
//EKAYIT.FieldByName('ECIK_TARIH').Value:=DateTimePicker1.DateTime;
//EKAYIT.Post;
end
ELSE
ShowMessage('Düzeltme İşlemi Yapılmamıştır !!!!!');
end
end;
end;



Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Kayıt Bulma

Mesaj gönderen SimaWB »

:evil:
:Nevil
There's no place like 127.0.0.1
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: Kayıt Bulma

Mesaj gönderen ozcank »

Çok teşekkür ederim yardımlarınız için
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Re: Kayıt Bulma

Mesaj gönderen White Rose »

If BUL = TRUE Then karşılaştırması yanlış BUL değişkenini integer tanımlamışsınız
bu kontrol true/false değeri değil sayısal bir değer konrolü yapar sizin kodunuza göre BUL:=StrToInt(InputBox(....

true/false kontrolü için inputquery(...) kullanmalısınız...
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: Kayıt Bulma

Mesaj gönderen ozcank »

Arkadaşlar buraya kadar yaptım prgram çalışıyor ama kayıt bulmuyor çalışırken bu mesajı veriyor
[Warning] EMANETCIKIS.pas(163): Variable 'BUL' might not have been initialized / değişken bul başlatılmamış olabilir. Yardım edermisiniz?


procedure TForm3.BitBtn5Click(Sender: TObject);
Var
CKODBUL:AnsiString;
BUL:Boolean;
CEVAP:Integer;
Begin
IF Edit2.Text='' Then
Begin
ShowMessage('ÇIKIŞ MIKTARI Boş Geçilemez')
End
Else IF (DBEdit4.Text='G') Then
Begin
ShowMessage('İşlem Tipi "G" Olanlar Düzeltilemez !!!!!');
end
else
BUL:=InputQuery('Kayıt Bul','Bulmak istediğiniz ürünün Çıkış Kodunu giriniz.',CKODBUL);
BUL:=ERehber.Locate('ECIK_KODU',BUL,[]);
If BUL Then
begin
cevap:=Application.MessageBox('Kayıt muvcut. Değiştirilmesini ister misiniz?','Cevap',MB_YESNO);
if cevap=mrYes Then
begin
ShowMessage('düzeltme işlemine başla');
//EKAYIT.Edit;
//EKAYIT.FieldByName('ECIK_KODU').Value:=Edit1.Text;
//EKAYIT.FieldByName('ECARI_KOD').Value:=DBEdit1.Text;
//EKAYIT.FieldByName('ECARI_ISIM').Value:=DBEdit2.Text;
//EKAYIT.FieldByName('EFISNO').Value:=DBEdit3.Text;
//EKAYIT.FieldByName('ESTHAR_TARIH').Value:=DBEdit5.Text;
//EKAYIT.FieldByName('ESTHAR_GCMIK').Value:=Edit2.Text;
//EKAYIT.FieldByName('ESTOK_KODU').Value:=DBEdit6.Text;
//EKAYIT.FieldByName('ESTOK_ADI').Value:=DBEdit7.Text;
//EKAYIT.FieldByName('EKALAN').Value:=DBEdit10.Text;
//EKAYIT.FieldByName('EGCTIP').Value:='C';
//EKAYIT.FieldByName('ETARIH1').Value:=DateTimePicker1.DateTime;
//EKAYIT.FieldByName('ECIK_TARIH').Value:=DateTimePicker1.DateTime;
//EKAYIT.Post;
end
ELSE
ShowMessage('Düzeltme İşlemi Yapılmamıştır !!!!!');
end
end;
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Kayıt Bulma

Mesaj gönderen sabanakman »

Tavsiyem tüm yazılanların her cümlesini iyice anlayarak okumanız. Anlaşılan o ki daha emeklemeden, değil yürümek koşma aşamasına geçme gayretindesiniz. Öncelikle temel inşaatınızı hakkını vererek yapılandırmanız gerekiyor, aksi halde bazı kalıp ve şablonları ezberleyip bunların kombinasyonlarından ötede bir iş çıkaramazsınız. Böyle bir durumda ise çok basit meseleleri bile aşmak için çok daha yüksek güç harcamanız gerekmektedir. Mesela bir halter düşünelim. Bir köşesine geçip o köşeden tutarak kaldırmaya çalışılsa, o kişinin başarıya ulaşması pek akla yatmıyor. Başarılı olsa bile harcayacağı efor, çok daha fazla olacaktır. Üstelik diğer işi bilen yarışmacılar karşısında pek de şansı olamaz. Bu yüzden ne iş olursa olsun o işi yaparken işin temel bilgilerinin çok iyi oturmuş olması şarttır. O iş için asıl fark yaratan unsur artık bundan sonra başlar. Bu ister yazılım işi olsun isterse de başka bir iş olsun. Haksız rekabete maruz kalmamak için bu noktada hassasiyet göstermelisiniz.
ozcank yazdı:...[Warning] EMANETCIKIS.pas(163): Variable 'BUL' might not have been initialized / değişken bul başlatılmamış olabilir. Yardım edermisiniz?
Öncelikle warning satırları hata değil birer uyarıdır. Bu satırlarda delphinin gözüne çarpan bazı tutarsız satırlar hakkında bilgi verir. Mesela bir değişkene hiç bir değer vermeden ondan değer okunmaya çalışılırsa o değişkenden rastgele bir değer okunur ve işler planlandığı gibi gitmeyebilir. Uyarınıza çift tıklarsanız o satırdan önce BUL değişkenine değer atanmama olasılığını kodlarınızı inceleyerek çözebilirsiniz. Mesela bir IF şartı içinde atama yapıyorsanız bile Delphi burada IF bloğuna girememe olasılığı vardır diyerek aynı uyarıyı yine verecektir. Hata hakkında asıl bilgi alabileceğiniz satırlar Warning değil ERROR satırlarıdır.

ozcank yazdı:procedure TForm3.BitBtn5Click(Sender: TObject);
Var
CKODBUL:AnsiString;
BUL:Boolean;
CEVAP:Integer;
Begin
//BUL'a burada değer atanmıyor
IF Edit2.Text='' Then
Begin
ShowMessage('ÇIKIŞ MIKTARI Boş Geçilemez')
//BUL'a burada değer atanmıyor
End
Else IF (DBEdit4.Text='G') Then
Begin
ShowMessage('İşlem Tipi "G" Olanlar Düzeltilemez !!!!!');
//BUL'a burada değer atanmıyor
end
else //BUL'a sadece burada değer atanmış -->
BUL:=InputQuery('Kayıt Bul','Bulmak istediğiniz ürünün Çıkış Kodunu giriniz.',CKODBUL);
//Burada tamam tuşuna basılmışsa BUL True değeri alır aksi halde False ama elle girilen değer CKODBUL değişkenindedir.

BUL:=ERehber.Locate('ECIK_KODU',BUL,[]);//<--Warning uyarısının gelme nedeni, değer almama olasılığı bulunan BUL değişkeni.
//Burada elle kutucuğa girilen CKODBUL değer mi yoksa BUL değişkenindeki Tamam/İptal tuşlarından hangisine basılmış olduğu mu aranacak?...
//Tahminim kodunuzun doğrusu BUL:=ERehber.Locate('ECIK_KODU',CKODBUL,[]); şeklinde olabilir.
Ayrıca program kodlarının hatasız olarak kurallara uygun yazılmış olmasının fazla esprisi yoktur. Asıl olan kurgulanan mantığında da hatasız işlemesidir? Mesela bir metin kutusunda yazılan bir sayının 10 katını bulan kodu "Sonuc:=StrToInt(Edit1.Text)*10;" şeklinde yazılabilir ama kullanıcı bu kutucuğa rakam yerine "AHMET" yazarsa hatasız derlenmiş olmasına rağmen program "AHMET sayısal bir değer değildir." gibisinden bir hata çıkarır.

Tavsiyem yaşadığınız sorun her neyse o sorunun çıkabileceği nokta üzerine yoğunlaşıp kafa yormanız. Aksi halde bu tarz sorularınızın arkası kesilmez. Zaten bu türden sorulara cevap da verilmiyor. Forum kuralları bir kenara, bu kendi kişisel gelişmeniz için önemli bir nokta. Eğer kodlara bakarken tanımadığınız bir alfabedeki karakterler kadar yabancı buluyorsanız orada bir terslik var demektir (temel bilgileriniz yerine oturmamıştır). Aksi halde belli bir miktar efor sarf ederek problemi kendi başınıza aşabilirsiniz zaten. Burada yazılanları aleyhinize yazılmış kötü bir yazı olarak algılamamalısınız. Her cümle sizi boşuna yüksek emek harcamaktan korumak ve potansiyel gücünüzü yükseltmek içindi, aksi halde sadece yeşil renkli yazıyı sorunuza cevap olarak bırakmakla gayet aleyhinizde kötü bir iş yapabilirdim.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevapla