Forum: Diğer Konular RSS
GtkD Modül özellikleri
Sayfa:  önceki  1  2  3  4  5  6  7  sonraki 
erdem (Moderatör) #31
Üye Tem 2009 tarihinden beri · 1050 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 13134
Ufak bir ipucu veriyorum. Artık senden bu bilgilerle basit bir hesap makinesi bekliyoruz  ;-)
import gtk.Ana;
import gtk.AnaPencere;
import gtk.Düğme;
import gdk.Olay;
import gtk.Giriş;
import gtk.Box;
 
import std.stdio;
import std.conv;
 
class Pencere: AnaPencere
{
    Düğme düğme;
    Giriş giriş, giriş2, giriş3;
    Box dikeyKutu;
 
    this()
    {
        super("Toplama");
        this.boyAyarla(200, 100);
        dikeyKutu = new Box(DİKEY, 6);
        ekle(dikeyKutu);
 
        giriş = new Giriş();
        dikeyKutu.atSepete(giriş, true, true, 0);
 
        giriş2 = new Giriş();
        dikeyKutu.atSepete(giriş2, true, true, 0);
 
        giriş3 = new Giriş();
        dikeyKutu.atSepete(giriş3, true, true, 0);
 
        düğme = new Düğme("Hesapla", &kopyala);
        dikeyKutu.atSepete(düğme, true, true, 0);
 
        tümünüGöster();
    }
 
    void kopyala(Düğme düğme)
    {
        int ilk = to!int(giriş.getText());
        int ikinci = to!int(giriş2.getText());
        auto sonuç = ilk + ikinci;
        giriş3.metinBelirle(to!string(sonuç));
 
    }
}
 
void main(string[] seçenekler)
{
    Ana.ilklendir(seçenekler);
    Pencere pencere = new Pencere();
    Ana.çalıştır();
}
cos00kun #32
Üye Kas 2014 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 13134
şimdi tek sorun kaldı... iki Entry kutusundaki değerleri önce int türüne dönüştürmek ve ardından bu ikisini toplayıp giriş3 girişine yazdırmak..Bu konuyuda burada çözersek sorun kalmayacaktır ..
herkesin emeğine sağlık sağolun..
E=mc^2
acehreli (Moderatör) #33
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4591 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 13134
cos00kun:
D dilini bitirmeden GtkD yürütürsen

Bence ikisi birlikte yürümeli yoksa koca dilin tamamını hatmetmek çok uzun sürer. :)

Ali
cos00kun #34
Üye Kas 2014 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yürüyor merak etmeyin  ;-)  tek sorun kendimi başka bir gezegene düşmüş yalnız başına birşeyler öğrenmeye çalışan biri gibi hissetmem.. Burada bu dünyada yaşayan birkaç kişi özellikle Erdem ve siz bana yol gösteriyorsunuz  :-) umarım birgün dahada çoğalırız. Her ne kadar D diline bir hareket gelmediği ve Windows ortamında daha çok destek verilmediği sürece pek bir ümidim olmasada
Acaba hobi olarak D ve kütüphaneler değilde kitapmı yazsam  :rolleyes:   :-)
E=mc^2
erdem (Moderatör) #35
Üye Tem 2009 tarihinden beri · 1050 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #32
cos00kun:
iki Entry kutusundaki değerleri önce int türüne dönüştürmek ve ardından bu ikisini toplayıp giriş3 girişine yazdırmak..Bu konuyuda burada çözersek sorun kalmayacaktır ..

Sanırım yazdığım örneği denememişsin  ;-)
cos00kun #36
Üye Kas 2014 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
her örneğini deniyorum Erdem hocam hiç şüphen olmasın  :-)
ben burda son mesajları yazarken nasıl oldu anlamadım ama son yazdığın mesajı ancak şimdi görebildim ve bunun için ayrıca çok teşekkür ederim..

şimdi benim yazdığım kod şu oldu ve iki girişe yazılan yazıları birbirine ekliyor(toplamıyor) bundan sonraki amacım text olarak yazılan rakamları topla düğmesine basıldığında toplayıp giriş3 girişine yazdırmak.. Bunuda sabah deneyeceğim yazmış olduğunuz kod yardımıyla bunu kolayca halledebileceğimi düşünüyorum..
import gtk.Main;
import gtk.MainWindow;
import gtk.Layout;
import gtk.Label;
import gtk.Entry;
import gtk.Button;
import std.stdio;
 
class Pencere : MainWindow
{
    Layout düzen;
    Entry giriş1,giriş2,giriş3;
    Label etiket1;
    Button düğme1;
 
    this()
    {
        super("Görsel Denemeleri..");
 
         düzen = new Layout(null, null);
         etiket1 = new Label("İKİ SAYIYI TOPLUYORUZ..");
         giriş1 = new Entry();
         giriş2 = new Entry();
         giriş3 = new Entry();
         düğme1 = new Button("TOPLA!");
 
        setSizeRequest(500, 300);
        move(200, 200);
        düzen.setSizeRequest(95, 85);
 
        düzen.put(etiket1, 5, 5);
        düzen.put(giriş1,200,50);
        düzen.put(giriş2,200,80);
        düzen.put(giriş3,200,150);
        düzen.put(düğme1,55,150);
        add(düzen);  
        showAll();
 
        düğme1.addOnClicked(&topla);
    }
 
    void topla(Button düğme1)
    {
        writeln("toplama tıklandı");
        giriş3.setText(giriş1.getText()~giriş2.getText());
    }
}
 
void main(string[] args)
{
    Main.init(args);
    Pencere pencere= new Pencere();
    Main.run();
}
E=mc^2
cos00kun #37
Üye Kas 2014 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
sabahı beklemeden yazdım .. kodun çok profesyonel olmasada son hali aşağıda.. Artık kodumuz iki girişi topluyor.. Elbette string girince saçmalıyor şu an için ancak şimdilik bu kadar yeterli daha sonra hataları engelleyecek mekanizmayı geliştireceğimççç
bundan sonraki hedefim görsel bileşenlerin ayarları örneğin Entry boyutunu görsel olarak değiştirmek ve sonrasında görsel bileşenleri artıırmak ve ardından daha önce burda yardımını da istediğim bir konu örneğinden yani dosyadan dataları okuyarak ekrana bu dataları okutmak.. Kurtulamazsın Erdem hocam benden kolay kolay  :-D
import gtk.Main;
import gtk.MainWindow;
import gtk.Layout;
import gtk.Label;
import gtk.Entry;
import gtk.Button;
import std.stdio;
import std.conv;
 
class Pencere : MainWindow
{
    Layout düzen;
    Entry giriş1,giriş2,giriş3;
    Label etiket1;
    Button düğme1;
 
    this()
    {
        super("Görsel Denemeleri..");
 
         düzen = new Layout(null, null);
         etiket1 = new Label("İKİ SAYIYI TOPLUYORUZ..");
         giriş1 = new Entry();
         giriş2 = new Entry();
         giriş3 = new Entry();
         düğme1 = new Button("TOPLA!");
 
        setSizeRequest(500, 300);
        move(200, 200);
        düzen.setSizeRequest(95, 85);
 
        düzen.put(etiket1, 5, 5);
        düzen.put(giriş1,200,50);
        düzen.put(giriş2,200,80);
        düzen.put(giriş3,200,150);
        düzen.put(düğme1,55,150);
        add(düzen);  
        showAll();
 
        düğme1.addOnClicked(&topla);
    }
 
    void topla(Button düğme1)
    {
        writeln("toplama tıklandı"); // bu kısım hatalarda fonksiyonun çalışıp çalışmadığının konrolünü sağlamak için vardır 
        int ilk = to!int(giriş1.getText());
        int ikinci = to!int(giriş2.getText());
        auto sonuç = ilk + ikinci;
        giriş3.setText(to!string(sonuç));
    }
}
 
void main(string[] args)
{
    Main.init(args);
    Pencere pencere= new Pencere();
    Main.run();
}
E=mc^2
acehreli (Moderatör) #38
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4591 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
to, ConvException atar. Şöyle bir şey olabilir (derlemeden):
    void topla(Button düğme1)
    {
        writeln("toplama tıklandı"); // bu kısım hatalarda fonksiyonun çalışıp çalışmadığının konrolünü sağlamak için vardır
        try {
            int ilk = to!int(giriş1.getText());
            int ikinci = to!int(giriş2.getText());
            auto sonuç = ilk + ikinci;
            giriş3.setText(to!string(sonuç));
 
        } catch (ConvException hata) {
            // Hatayı saçma biçimde sonuç alanında bildiriyorum :)
            giriş3.setText("HATA: İki tamsayı girmelisiniz");
 
        } catch (Exception hata) {
            // Başka çeşit bir hata oluştu
            import std.string : format;
            giriş3.setText(format("HATA: %s", hata.msg));
        }
    }
Ali
cos00kun #39
Üye Kas 2014 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
işe yaradı  :-)
E=mc^2
cos00kun #40
Üye Kas 2014 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
kodumuz şimdilik ufak birkaç düzenlemeyle şöyle oldu;
import gtk.Main;
import gtk.MainWindow;
import gtk.Layout;
import gtk.Label;
import gtk.Entry;
import gtk.Button;
import std.stdio;
import std.conv;
 
class Pencere : MainWindow
{
    Layout düzen;
    Entry giriş1,giriş2,giriş3;
    Label etiket1;
    Button düğme1;
 
    this()
    {
        super("Görsel Denemeleri..");
 
        düzen = new Layout(null, null);
        etiket1 = new Label("İKİ SAYIYI TOPLUYORUZ..");
        giriş1 = new Entry();
        giriş2 = new Entry();
        giriş3 = new Entry();
        düğme1 = new Button("TOPLA");
        
        setSizeRequest(500, 300);
        move(200, 200);
        düzen.setSizeRequest(195, 85);
        düzen.put(etiket1, 5, 5);
        düzen.put(giriş1,200,50);
        düzen.put(giriş2,200,80);
        düzen.put(giriş3,200,150);
        düzen.put(düğme1,55,150);
        add(düzen);  
        showAll();
 
        düğme1.addOnClicked(&topla);
    }
 
    void topla(Button düğme1)
    {
        writeln("toplama tıklandı"); // bu kısım hatalarda fonksiyonun çalışıp çalışmadığının konrolünü sağlamak için vardır.
        etiket1.setLabel("İKİ SAYIYI TOPLUYORUZ..");
        try {
            int ilk = to!int(giriş1.getText());
            int ikinci = to!int(giriş2.getText());
            auto sonuç = ilk + ikinci;
            giriş3.setText(to!string(sonuç));
 
        } catch (ConvException hata) {
            // Hatayı saçma biçimde sonuç alanında bildiriyorum :)
            etiket1.setLabel("HATA: İki tamsayı girmelisiniz");
            writeln("Uyarı!! Hata fırlatıldı!!");
 
        } catch (Exception hata) {
            // Başka çeşit bir hata oluştu
            import std.string : format;
            giriş3.setText(format("HATA: %s", hata.msg));
        }
    }
}
 
void main(string[] args)
{
    Main.init(args);
    Pencere pencere= new Pencere();
    Main.run();
}
belki konu dışı olacak ama ufak bir soruda D dilinden olsun konuyla biraz ilintili olduğu için müsadenizle;
buradaki  import std.string : format; burada string sınıfını programa dahil ediyıruz burasında sıkıntı yok ancak :format ile ne amaçlanıyor ? benim sınıflar konusundaki bilgim doğrultusunda; sanki format diye bir üst sınıftan türetilen bir string sınıfı çıkıyor olmalı . tam çözemedim açıkçası .. :rolleyes:
E=mc^2
Bu mesaj cos00kun tarafından değiştirildi; zaman: 2017-12-20, 00:56.
erdem (Moderatör) #41
Üye Tem 2009 tarihinden beri · 1050 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
format çıktıyı istediğimiz biçimde göstermeyi sağlıyor.Örneğin bu örnekte %s gördüğü yere hata mesajını ekliyor.

Bundan başka yanlış hatırlamıyorsam formattedRead ve formattedWrite var. Bu da özellikle dosya okuma, yazma işlemlerinde oldukça kolaylık sağlıyor.

http://ddili.org/ders/d/dizgiler.html
cos00kun #42
Üye Kas 2014 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
evet bunlar var ancak benim anlamadığım şu yazım dizimi ne işe yarıyor;
import std.string : format;
 yani burda format tan önceki  iki nokta üstüste ":" kafamı karıştırdı.. normalde sınıftan türemek için kullanıldığından kafam karıştı
E=mc^2
erdem (Moderatör) #43
Üye Tem 2009 tarihinden beri · 1050 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
cos00kun:
evet bunlar var ancak benim anlamadığım şu yazım dizimi ne işe yarıyor;
import std.string : format;
 yani burda format tan önceki  iki nokta üstüste ":" kafamı karıştırdı.. normalde sınıftan türemek için kullanıldığından kafam karıştı
import std.stdio:writeln;
import std.format:format;
import std.string:format;
//import std.format;
//import std.string;
 
 void main(string[] args)
 {
     auto pi = format!"%s sayısı %s'tür"("Pi", 3.14);
     writeln(pi);
     auto hatailetisi = "Bir hata oluştu";
     writeln(format("Hata : %s", hatailetisi));
 }
O : olanağı bir kaynak kütük içinde sadece bir işlevi kullanmak istediğimizi belirtiyor. İstersen : kullanmadan da koda ekleyebilirsin.
cos00kun #44
Üye Kas 2014 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Hay Allahım yaa nasıl unuturum bunu doğru ya  :nuts:
şimdi hatırladım sınıfın içinden sadece o işlevi programa dahil ediyordu  .. Kusura bakmayın

peki o halde sınıfın tamamını dahil edeceğimize, sınıf içerisinden az kullanılacak işlevler için bu yöntemi kullanmak daha az maliyetli oluyor sanırım.. Öyle ya yoksa sadece format işlevini kullanacağımız zaman neden tüm string sınıfını programa alalım !.
E=mc^2
acehreli (Moderatör) #45
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4591 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
cos00kun:
sadece format işlevini kullanacağımız zaman neden tüm string sınıfını programa alalım !.

Düzeltme: Sınıf değil, modül. :) Bu yöntem bir de isim kirlenmesini önlüyor; modüldeki bütün isimleri bu kapsama dahil etmemiş oluyoruz.

Ali
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Sayfa:  önceki  1  2  3  4  5  6  7  sonraki 
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2018-01-21, 00:10:05 (UTC -08:00)