folder Tahribat.com Forumları
linefolder C - C++
linefolder Sayısı Belli Olmayan İnput Almak ??



Sayısı Belli Olmayan İnput Almak ??

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    uLtRaLoVeR
    uLtRaLoVeR's avatar
    Kayıt Tarihi: 25/Haziran/2007
    Erkek

    hocam kusura bakma koda bakınca faklı anladım ben sanırım istediğimi karşılıyor bir uyarlıyıp deneyeyim. iki gündür kurtarıyorsun beni çok sağol.

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SinusX
    SinusX's avatar
    Kayıt Tarihi: 14/Aralık/2010
    Erkek

    .net'te reflection çalışırken şöyle bişey yapmıştım ama metodun parametrelerine göre inputları değerlendirdiği için mantığı biraz farklı

     

    class Shell
        {
            public Shell()
            {
    
            }
    
            Regex regex = new Regex("DRLIMPORT|NEW|EXEC|PRINT|HELP|TOPLA|CLS|KIRVELI|ABOUT");
            Commands command = new Commands();
    
            public void Start()
            {
                Console.WriteLine("\n\n**********");
                Console.WriteLine(Environment.OSVersion);
                Console.WriteLine(Environment.MachineName);
                Console.WriteLine("\nKomutları görmek için HELP yazınız...\nSistemden çıkış için EXIT yazınız!");
                Console.WriteLine("**********");
                for (; ; )
                {
                    Console.Write("\n{0} # ",Environment.UserName);
                    string komut = Console.ReadLine();
                    string[] gelen = komut.Split(new char[1] { ' ' });
                    if (regex.IsMatch(gelen[0].ToUpper()))
                    {
                        Type tip = typeof(Commands);
                        object instance = Activator.CreateInstance(tip);
                        MethodInfo info = tip.GetMethod(gelen[0].ToUpper());
                        ParameterInfo[] pInfos = tip.GetMethod(gelen[0].ToUpper()).GetParameters();
                        object[] parameters = new object[pInfos.Count()];
                        int i = 0;
    
                        if (pInfos.Count() == 0)
                        {
                            info.Invoke(instance, null);
                        }
                        
                        else
                        {
                            try
                            {
                                foreach (ParameterInfo pInfo in pInfos)
                                {
                                    parameters[i] = gelen[i + 1];
                                    i++;
                                }
                                info.Invoke(instance, parameters);
                            }
                            catch (Exception exp)
                            {
                                Console.WriteLine("Hatalı Parametre Girdiniz.\n{0}",exp.Message);
                            }
                        }
                    }
                    
                    else if(gelen[0].ToUpper() == "EXİT" || gelen[0].ToUpper() == "EXIT")
                    {
                        break;
                    }
                    
                    else
                    {
                        Console.WriteLine("Hatalı Komut Girdiniz!!!");
                    }
                    
                }
                Exit();
            }

     


    Si vis pacem para bellum.
Toplam Hit: 2419 Toplam Mesaj: 13