Thread overview
biliG.d'den izin sınıfının kodları
March 11, 2010

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 ?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

March 11, 2010

Alıntı:

>

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.
Alıntı:

>
  • 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 :-)
Alıntı:

>
  • 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ı.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

March 11, 2010

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

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

March 11, 2010

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

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]