Delphi türkiye mimarları hepinize merhaba.
benim sorum, 2 tane edit arasında birinr sayı girilip öbürüne girmediğimiz zaman otamatik olarak sıfır atayarak programın çalışmasına nasıl devam ettirebilirim.
2.si ise iki form arasındaki bağlantıyı nasıl kursam daha sağlıklı olur.ve formlar arasındaki ilişkide dikkat edeceğim önemli noktalar hakkında bilgi alabilirmiyim.
benim database'm de sorun var.açıkcası register olayı nasıl giderebilirim bu konuyu.Daha önce bu konudan başım çok ağrıdı yardımlarınızı bekliyorum.
kullanıdığım dil delphi..
çok teşekkür ederim.:Hepinize başarılar....
Delphi hakkında yardım....
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
soru cok net olmadigi icin bir cok da yontem ile cozum olabilir gibime geliyor.. Mesela her iki edit'in de onchange eventlerine her iki edit'in de degerlerini kontrol eden ve en az biri sıfırdan buyukse isiniz yapan kodu yazabilir veya procedure'u cagirabilirsiniz....
Database'deki sorunun ne oldugunu ve register olayi derken ne kastettiğiniz daha açık yazarsanız yardımcı olmaya çalışırız....
Database'deki sorunun ne oldugunu ve register olayi derken ne kastettiğiniz daha açık yazarsanız yardımcı olmaya çalışırız....
Soruma cevap verdiğiniz için çok teşekkür ederim.
cevabınızbeni aydınlattı.Daha geniş açıklarsam sorumu :
edit1.text
edit2.text
edit3.text button1.
butona bastığımda 3 tane edit içindeki sayıları toplayacak ama edit3 e sayı girmediysem edit3 e 0 atayarak yine üç editteki sayıları toplayarak sonucu nasıl verebilirim.
Ben databasedeki problemimi çözdüm.
Hepinize çok teşekkür ederim......
Kolay Gelsin.
cevabınızbeni aydınlattı.Daha geniş açıklarsam sorumu :
edit1.text
edit2.text
edit3.text button1.
butona bastığımda 3 tane edit içindeki sayıları toplayacak ama edit3 e sayı girmediysem edit3 e 0 atayarak yine üç editteki sayıları toplayarak sonucu nasıl verebilirim.
Ben databasedeki problemimi çözdüm.
Hepinize çok teşekkür ederim......
Kolay Gelsin.
Selam.
- @karflake ve @fahrettin'e hak vererek bunları nasıl yapacağınız konusunda birşeyler yazmak istedim.
- Şu anda sabah saat 05:30 ve Nöbetçi Delphi HelpDesk olarak
müsadenizle size bir programcı anekdotu yardımıyla önerimi yapıcam. Bu aslında bu işin ABC'si denebilir. Uygunsuz derseniz şimdiden özür dilerim.
1. Kullanıcı Edit1, Edit2 ve Edit3'e giriş yaparken rakam dışındaki ifadelerin girişlerini engelleyin. Her Edit kutusunun OnKeyPress olayına;
.. şekilde en azında kullanıcıya buraların harf değil rakam alanı olduğunu bir kere daha anlamasını sağlayın.
2. Klavye girişini kontrol altına aldık, ya bu alanlara başka bir şekilde giriş yaparsa ?? Nasıl olur demeyin, bir çok yolu var, en basiti Mouse ile Kopyala/Yapıştır yapılabilir. Klavyeden giriş olmadığından yukarda yaptığımız kontrolleri pass geçer, bu da sorun doğurur.
- Şimdi yazacağımız fonksiyon, toplama işlemini yap butona basıldığında Edit'leri kontrol edecek, gerekli düzeltmeler yapıp, cevaba ulaşmanız için yardımız olacak fonksiyondur.
3. Rakamsal ifade içermeyen karakterler karışmışsa, ufak bir fonksiyon ile bu karakterleri filtreleyip rakamların kalmasını sağlıyoruz...
- Butona bastığımızda bu fonksiyonumuz sayesinde, edit'ler içinde harf varsa silinecek, rakam varsa kalacak, hiç rakamsal ifade yoksa yerlerine 0 yazılacak.
- Artık gönül rahatlığıyla sonuca ulaştık.
- Burada anlatmak istediğim sadece bu sorununuzla ilgili çözüm üretmek değil, genel düşünme mantığınızı olabilecek sorunlara önceden müdahale şeklinde oluşturmanızı sağlamaktı -ki bu olay zaten zamanla oluşacaktı-
- BU şekilde programlarınızda minimum kodla maksimum verim alırsınız, hem de hatalarınızın basit kod kural hataları şeklinde kalmasını sağlarsınız, zaten bu durumda Delphi IDE hatanın tam yerini söyler.
- Başınız ağrıtmadığımı umuyor, benzer sorunlar yaşayan veya başkaları, bu yazıyı okuyacak diğer arkadaşlara da önerilerimi yineliyor, çalışmalarında başarılar diliyorum.
- @karflake ve @fahrettin'e hak vererek bunları nasıl yapacağınız konusunda birşeyler yazmak istedim.
- Şu anda sabah saat 05:30 ve Nöbetçi Delphi HelpDesk olarak


- - Afrika kıtasında, kıtanın en aşağısından Ümit Burnundan yukarıya Cebelitarık Boğazına kadar taranarak en az bir Fil bulunması istenmiş. Bunun için bir matematikçi, bir fizikçi ve bir de bilgisayar programcısı görevlendirilmiş. (Bu örnek yerine/konuya göre çoğaltılabilir.)
- Matematikçi aramasında matematiksel, fizikçi fiziki yöntemler, programcı ise sistem analizi yaparak bunu çözümleyecekler. Programcı dışındakiler bizi ilgilendirmiyor, yorum serbest ama programcının çözümü şuymuş.
- En son noktaya bir Fil koyup aramaya yine aşağıdan başlamış ama biliyormuş ki sonunda en az bir fil bulacak ve sorunsuz işini halledecektir.
1. Kullanıcı Edit1, Edit2 ve Edit3'e giriş yaparken rakam dışındaki ifadelerin girişlerini engelleyin. Her Edit kutusunun OnKeyPress olayına;
Kod: Tümünü seç
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
Const
Rakamlar = ['1'..'9', '0']; // Buraya müsade edilecek karakterler girildi.
begin
If NOT (Key in Rakamlar) then key := #0;
// Bu karakterler dışında girişler reddedildi.
end;
2. Klavye girişini kontrol altına aldık, ya bu alanlara başka bir şekilde giriş yaparsa ?? Nasıl olur demeyin, bir çok yolu var, en basiti Mouse ile Kopyala/Yapıştır yapılabilir. Klavyeden giriş olmadığından yukarda yaptığımız kontrolleri pass geçer, bu da sorun doğurur.
- Şimdi yazacağımız fonksiyon, toplama işlemini yap butona basıldığında Edit'leri kontrol edecek, gerekli düzeltmeler yapıp, cevaba ulaşmanız için yardımız olacak fonksiyondur.
3. Rakamsal ifade içermeyen karakterler karışmışsa, ufak bir fonksiyon ile bu karakterleri filtreleyip rakamların kalmasını sağlıyoruz...
Kod: Tümünü seç
Function TForm1.SadeceRakamKalsin(Yazi : String):String;
Const
Rakamlar = ['1'..'9', '0']; // Buraya müsade edilecek karakterler girildi.
Var
Sayac : Integer;
begin
Yazi := Trim(Yazi);
// Yine yukarda anlattığım Fil hesabı,
// İlk olarak boşluklardan kurtulduk.
Sayac := 1; // Kontrolen başlanacak harfin sirasi
Repeat
If NOT (Yazi[Sayac] in Rakamlar)
then Delete(Yazi, Sayac, 1); // Rakam içermiyorsa sil.
else Inc(Sayac); // Rakam içeriyorsa sıradakine geç.
Until Sayac > Length(Yazi); // Yazi sonunda döngüden çık.
If Yazi <> '' then Result := Yazi // Yazi içinde halen birşey kaldıysa ki rakamdır, rakamsal ifade dönsün.
else Result := '0'; // yazının tümü harfsel içerikse, hepsi silinmiştir, 0 rakamı dönsün.
end;
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
Var
Toplam : Integer;
begin
Edit1.Text := SadeceRakamKalsin(Edit1.Text);
Edit2.Text := SadeceRakamKalsin(Edit2.Text);
Edit3.Text := SadeceRakamKalsin(Edit3.Text);
// Burada artık biliyoruz ki fonksiyonumu sayesinde
// edit'ler içinde harf varsa silindi, rakam varsa kaldı,
// hiç rakamsal ifade yoksa yerlerine 0 yazıldı.
// Toplama işlemine gönül rahatlığıyla geçebiliriz.
Toplam := StrToInt(Edit1.Text) + StrToInt(Edit2.Text) + StrToInt(Edit3.Text);
ShowMessage(IntToStr(Toplam)); // Toplamı bir mesaj pencerisyle ekrana yansıttık.
end;
- Burada anlatmak istediğim sadece bu sorununuzla ilgili çözüm üretmek değil, genel düşünme mantığınızı olabilecek sorunlara önceden müdahale şeklinde oluşturmanızı sağlamaktı -ki bu olay zaten zamanla oluşacaktı-
- BU şekilde programlarınızda minimum kodla maksimum verim alırsınız, hem de hatalarınızın basit kod kural hataları şeklinde kalmasını sağlarsınız, zaten bu durumda Delphi IDE hatanın tam yerini söyler.

- Başınız ağrıtmadığımı umuyor, benzer sorunlar yaşayan veya başkaları, bu yazıyı okuyacak diğer arkadaşlara da önerilerimi yineliyor, çalışmalarında başarılar diliyorum.
guzel fonksiyon kutuphaneye attım ilerde lazım olur belki:)
muharrem beyin affına sıgınarak
duzenleyip tekrar gonderiyorum
muharrem beyin affına sıgınarak
duzenleyip tekrar gonderiyorum
Kod: Tümünü seç
function OnlyNumInStr(S: string): string;
const
Nums = ['1'..'9', '0'];
var
i: Integer;
begin
S := Trim(S);
i := 1;
repeat
if not (S[i] in Nums) then
Delete(S, i, 1) // Rakam içermiyorsa sil.
else
Inc(i); // Rakam içeriyorsa sıradakine geç.
until i > Length(S); // S sonunda döngüden çık.
if S <> '' then
Result := S // S içinde halen birşey kaldıysa ki rakamdır, rakamsal ifade dönsün.
else
Result := '0';
// yazının tümü harfsel içerikse, hepsi silinmiştir, 0 rakamı dönsün.
end;
ÜŞENME,ERTELEME,VAZGEÇME
@gkimirti, efendim ne demek
yayınlanmış bu kodlar sizin, bizim yani herkesin tasarrufundadır.
Müsaade istemek yersiz. Bu kodları yazan bizlere genel olarak haber gruplarında kullanırız, biraz kaba tabir ama afiyet olsun demek düşer. 
Ek:
- Ben de kod yazımında İngilizce'yi standart kabul ediyorum. Açıklayıcı olmak adına forumlarda Tütkçe değişken tanımları yapıyorum.
- Aynı fikri paylaştığımızı buradan görmek ayrıca sevindirdi.



Ek:
- Ben de kod yazımında İngilizce'yi standart kabul ediyorum. Açıklayıcı olmak adına forumlarda Tütkçe değişken tanımları yapıyorum.

- Aynı fikri paylaştığımızı buradan görmek ayrıca sevindirdi.
