Forum: Projeler dkv RSS
biliG.d'den izin sınıfının kodları
canalpay (Moderatör) #1
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: biliG.d'den izin sınıfının kodları
biliG.d'nin izin sınıfı için yazdığım kodlar:

module biliG;
import dkvG;
import std.string;
import std.path;
import std.conv;
import std.process;
 
class izin{
    this()
    {
        dkvG taban=new dkvG;
        if(!denetle("ayar"d)){
            taban.v_yarat("ayar"d);
        }
        int izin(const dchar[] yol_)
        {
            taban.t_yarat("izinler"d,"ayar"d);
            /*linux için anahtar ekleme*/
            immutable dchar[] linux_ad  = dtext(yol_,"_linux");
            // immutable dchar[] windows_yol = replace(text(yol_),text("/"),text("\\"));            
            taban.veri_ekle(yol_,linux_ad,yol_,"izinler"d,"ayar"d);
            immutable dchar[] windows_ad  = dtext(yol_,"_windows");
            immutable dchar[] windows_yol = replace(text(yol_),text("/"),text("\\"));
            taban.veri_ekle(windows_yol,windows_ad,yol_,"izinler"d,"ayar"d);
            taban.veri_ekle("izin_yok"d,"izin"d,yol_,"izinler"d,"ayar"d);
            return 0;
        }
    }
    int izin_iptal(const dchar[] yol_)
    {
        taban.anahtar_değiştir("izin_yok"d,"izin"d,yol_,"izinler"d,"ayar"d);
        return 0;
    }
    int izin_ver(const dchar[] yol_)
    {
        taban.anahtar_değiştir("izin_var"d,"izin"d,yol_,"izinler"d,"ayar"d);
        return 0;
    }
    bool izin_var_mı(const dchar[] yol_)
    {
        string izin_türü = taban.anahtar_oku("izin"d,yol_,"izinler"d,"ayar"d);
        if(izin_türü == "izin_var"){
            return true;
        } else if(izin_türü == "izin_yok"){
            return false;
        } else {
            throw new Exception("Hata; izin türü belirlenemedi.");
        }
    }
    int izin_sil(const dchar[] yol_)
    {
        string yol = "ayar"~sep~"izinler"~sep~yol_;     
        string silmeYolu=to!string(yol);
        string silKomutu="rm "~silmeYolu~" -rf";
        system(silKomutu);
        return 0;
    }
}


Şuan daha dkvG'ye eklemedim hatta kodu denemedim bile :-) Ama genel tasarım için soruyorum. Sizce mantığı nasıl iyi mi ?
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4412 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Dikkatimi çeken bir aksaklık yok. :)

Eleştirmek için değil, yalnızca bu kodun hatırlattıkları:

- dstring kullanma zorunluluğu rahatsız edici

- Galiba Java'da, Error ile Exception türlerini farklı kavramlar için kullanıyorlarmış: birisi giderilemez hataları gösteriyormuş. Hangisi olduğunu bilmiyorum. :D

Şimdi baktım: Error, programların yakalamayı bile düşünmeyecekleri gibi kötü hata imiş; Exception ise giderilebilen hatalı durumlar içinmiş.

(Gerçekten senin kodun için söylemedim. Sonunda araştıracak kadar ilgimi çekmiş oldu. :))

Ali
canalpay (Moderatör) #3
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Dikkatimi çeken bir aksaklık yok. :)

Algoritma olarak yoksa sevindim. Ama kodda çok fazla hata var. Hala hatalardan kurtulmaya çalışıyorum ama şu hata dikkatimi çekti:
 
biliG.d(32): Error: undefined identifier taban

32.satır sınıfın kurucusundan sonraki satırlardan biri, ben kurucuda taban türünü tanımlamıştım. Belki dmd'de sorun vardır :-) Şimdi 2.040'ı yeniden kuruyorum.
- dstring kullanma zorunluluğu rahatsız edici

char[] Türkçe karakterleri 2 karakter olarak saydığı için ben kendimce dchar[] ve dstring'i standart haline getirdim. Yoksa şu an projenin yarısı dönüşüm kodu. Herhalde buda tür konusundaki beceriksizliğimi gösteriyor :-)
- Galiba Java'da, Error ile Exception türlerini farklı kavramlar için kullanıyorlarmış: birisi giderilemez hataları gösteriyormuş.

Orada verdiğim hata giderilebilir mi giderilemez mi emin değilim. Ama sizce şuan ne hata verdirtmeliyim. Aslında orada hata olma olasılığı yok. Ben if ve else ile işi bitirecektim ama sonra o kadar iki ayrı anahtar ad belirlemişim onları kullanayım amacı ile yazdığım kod parçaları.
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4412 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Kurucu içindeki taban, bir yerel değişken. this'ten çıkıldığı an yaşamı sona erer. Sen herhalde bir üye olarak düşündün:

class izin{
 
    dkvG taban;
 
    this()
    {
        taban=new dkvG;
    
// ...
}

Artık başka işlevlerde de görünür.

Eğer hata olma olasılığı yoksa, sanırım Error olmalı. Yani üstesinden gelinemeyecek kadar kötü bir durum.

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:
Forum: Projeler dkv RSS
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: 2017-06-24, 22:28:39 (UTC -07:00)