public static void Remove <T>(int pos, TypedFile <T> typedfile)
        {
            typedfile.Reset();
            T[]      s = Read(typedfile);
            List <T> l = new List <T>();

            for (int i = 0; i < s.Length; i++)
            {
                if (i != pos)
                {
                    l.Add(s[i]);
                }
            }

            typedfile.Rewrite();
            for (int i = 0; i < s.Length; i++)
            {
                typedfile.Append();
                typedfile.Write(l[i]);
            }
        }
        public static void Sort <T>(TypedFile <T> typedfile, CompareDelegate <T> compareDelegate)
        {
            typedfile.Reset();
            T[] array = Read(typedfile);

            int inner, outer;
            T   temp;
            int h = 1;

            while (h <= array.Length / 3)
            {
                h = h * 3 + 1;
            }

            while (h > 0)
            {
                for (outer = h; outer < array.Length; outer++)
                {
                    temp  = array[outer];
                    inner = outer;

                    while (inner > h - 1 && compareDelegate(array[inner - h], temp) >= 0)
                    {
                        array[inner] = array[inner - h];
                        inner       -= h;
                    }
                    array[inner] = temp;
                }
                h = (h - 1) / 3;
            }

            typedfile.Rewrite();
            foreach (var item in array)
            {
                typedfile.Write(item);
            }
        }