Exemplo n.º 1
0
        public FormMain(string[] args)
        {
            InitializeComponent();

            InstParameters=Parameters.InterpretCommandLine(args);

            bool bFilenameZip=InstParameters.Contains("FilenameZip");
            bool bPathApplication=InstParameters.Contains("PathApplication");
            bool bFilenameApplication=InstParameters.Contains("FilenameApplication");

            if(bFilenameZip=false||bPathApplication==false||bFilenameApplication==false)
            {
                string output="Unvollständige Parameter!\n\n";
                output+="Parameterliste:\n";
                foreach(string i in args)
                {
                    output+=i+'\n';
                }

                output+="\n";
                output+="FilenameZip: "+bFilenameZip.ToString()+"\n";
                output+="PathApplication: "+bPathApplication.ToString()+"\n";
                output+="FilenameApplication: "+bFilenameApplication.ToString()+"\n";

                output+="\n";
                output+="Sollte dieser Fehler bei einem Updateprozess aufgetreten sein,\n";
                output+="so laden Sie bitte eine neue Version unter http://www.seeseekey.net herunter.";

                MessageBox.Show(output, "Hinweis");
                Environment.Exit(0);
            }

            FilenameZip=InstParameters.GetString("FilenameZip");
            PathApplication=InstParameters.GetString("PathApplication");
            FilenameApplication=InstParameters.GetString("FilenameApplication");

            PathApplication=PathApplication.TrimEnd('\\')+'\\';
        }
Exemplo n.º 2
0
        public Parameters GetParameters(string name, Parameters std)
        {
            object o=Get(name, std);

            if(o is Parameters) return (Parameters)o;

            return std;
        }
Exemplo n.º 3
0
        public Parameters AddDeep(Parameters values)
        {
            foreach(string key in values.items.Keys)
            {
                if(!items.ContainsKey(key))
                {
                    Put(key, values.items[key]);
                    continue;
                }

                object valThis=items[key];
                bool fPThis=(valThis is Parameters);

                object valThat=values.items[key];
                bool fPThat=(valThat is Parameters);

                // Wenn beides pParameters sind, rekursiv weitermachen
                if(fPThis&&fPThat)
                {
                    ((Parameters)valThis).AddDeep((Parameters)valThat);
                    continue;
                }

                // Wenn beide keine Parameters sind -> Werte austauschen
                if(!fPThis&&!fPThat)
                {
                    Put(key, valThat); // Put statt Add wegen des unbekannten Typs von 'valThat'
                    continue;
                }

                // Jetzt ist eins Parameters und der andere nicht
                Parameters p;

                if(fPThis)
                {
                    p=(Parameters)valThis;
                    object o=valThat;

                    // Wir tragen den anderen Wert als "$default$"-Eintrag ein
                    p.Put("$default$", o);
                }
                else
                {
                    p=(Parameters)valThat;
                    object o=valThis;

                    // Wir tragen den anderen Wert als "$default$"-Eintrag ein
                    p.Put("$default$", o);

                    Add(key, p);
                }
            }

            return this;
        }
Exemplo n.º 4
0
        //////////////////////////////////////////////////////////////////////
        // Spezial-Add-Methoden
        //////////////////////////////////////////////////////////////////////
        // Fügt alle Werte des übergebenen Parameters ein. (Shallow Add)
        public Parameters Add(Parameters values)
        {
            foreach(string key in values.items.Keys) Put(key, values.items[key]);

            return this;
        }
Exemplo n.º 5
0
 // Parameters
 public Parameters Add(string name, Parameters val)
 {
     Put(name, val); return this;
 }
Exemplo n.º 6
0
        public static Parameters InterpretCommandLine(string[] args)
        {
            Parameters ret=new Parameters();
            if(args.Length<1) return ret;	// nix Argumente

            int filecount=0;
            string key;
            foreach(string str in args)
            {
                if(str[0]=='-')
                {
                    int idx=str.IndexOf(':');
                    if(idx>=0)
                    {
                        key=str.Substring(1, idx-1);
                        ret.Add(key, str.Substring(idx+1));
                    }
                    else
                    {
                        key=str.Substring(1);
                        ret.Add(key, true);
                    }
                }
                else
                {
                    key=String.Format("file{0:000}", filecount++);
                    ret.Add(key, str);
                }
            }
            return ret;
        }
Exemplo n.º 7
0
        public static string GetHashString(Parameters value)
        {
            long hc=GetHash(value, 13);

            string ret="1-";
            while(hc>0)
            {
                ret+=(char)(hc%26+'a');
                hc/=17;
            }
            return ret;
        }
Exemplo n.º 8
0
        public static long GetHash(Parameters value, long hc)
        {
            unchecked
            {
                if(value==null) hc+=1345;
                else
                {
                    List<string> keys=new List<string>(value.items.Keys);
                    keys.Sort(StringComparer);
                    foreach(string key in keys)
                    {
                        hc=GetHash(key, hc);
                        object v=value.Get(key);
                        if(v==null) hc=GetHash((Parameters)null, hc);
                        else if(v is bool) hc=GetHash((bool)v, hc);
                        else if(v is double) hc=GetHash((double)v, hc);
                        else if(v is long) hc=GetHash((long)v, hc);
                        else if(v is string) hc=GetHash((string)v, hc);
                        else if(v is Parameters) hc=GetHash((Parameters)v, hc);
                        else
                        {
                            hc*=1234597;
                            hc=System.Math.Abs(hc);
                        }
                    }
                }

                hc*=1234597;
                hc=System.Math.Abs(hc);
            }

            return hc;
        }
Exemplo n.º 9
0
        void PutSub(string name, object val)
        {
            int ind=name.IndexOf('/');

            if(ind!=-1)
            { // wenn sub-Block
                string mainkey=name.Substring(0, ind);
                string subkey=name.Substring(ind+1);

                Parameters newp=new Parameters();
                newp.PutSub(subkey, val);

                PutLast(mainkey, newp);
                return;
            }

            PutLast(name, val);
        }