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.