Esempio n. 1
0
        public static bool Savelinfile(this Myapp_inf Myapp, string path, int isbianyi)
        {
            dataput.bianyi = isbianyi;
            StreamWriter streamWriter = new StreamWriter(path);
            appinf0      appinf       = default(appinf0);
            appinf1      appinf2      = default(appinf1);
            uint         num          = Convert.ToUInt32("0xFFFFFFFF", 16);
            bool         result;

            try
            {
                if ((int)Myapp.myencode > datasize.encodes_App.Length)
                {
                    Myapp.myencode = ((datasize.Language == 0) ? "gb2312".GetencodeId() : "iso-8859-1".GetencodeId());
                }
                appinf.banbenh      = datasize.banbenh;
                appinf.banbenl      = datasize.banbenl;
                appinf.filever      = datasize.filever;
                appinf.mark         = ((dataput.bianyi == 1) ? datasize.hmibiaoshiL : datasize.hmibiaoshiH);
                appinf.encodeh_star = datasize.encodes_App[(int)Myapp.myencode].codeh_star;
                if (!Myapp.StructHtoL(ref appinf, ref appinf2))
                {
                    if (dataput.bianyi == 1)
                    {
                        if (datasize.Language == 0)
                        {
                            Myapp.Addbianyierr(string.Concat(new object[]
                            {
                                "编译失败!".Language(),
                                " ",
                                Myapp.errors,
                                "个错误,".Language(),
                                " ",
                                Myapp.warnings.ToString(),
                                "个警告".Language()
                            }));
                        }
                        else
                        {
                            Myapp.Addbianyierr(string.Concat(new object[]
                            {
                                "编译失败!".Language(),
                                " ",
                                Myapp.errors,
                                " ",
                                "个错误,".Language(),
                                " ",
                                Myapp.warnings.ToString(),
                                " ",
                                "个警告".Language()
                            }));
                        }
                    }
                    streamWriter.Close();
                    streamWriter.Dispose();
                    result = false;
                }
                else
                {
                    appinf.datasize += 4u;
                    byte[] array = new byte[400];
                    appinf.structToBytes().CopyTo(array, 0);
                    appinf2.structToBytes().Appfree10(datasize.apppasseord, appinf.Modelcrc).CopyTo(array, 200);
                    uint num2 = array.getcrc(4294967295u, 0, datasize.appxinxisize0);
                    num2.structToBytes().CopyTo(array, 196);
                    num2 = array.getcrc(4294967295u, 200, datasize.appxinxisize1);
                    num2.structToBytes().CopyTo(array, 396);
                    num = array.getcrc(num, 0);
                    streamWriter.BaseStream.Write(array, 0, array.Length);
                    int i;
                    if (dataput.bianyi == 1)
                    {
                        array = new byte[3696];
                        for (i = 0; i < array.Length; i++)
                        {
                            array[i] = 0;
                        }
                        num = array.getcrc(num, 0);
                        streamWriter.BaseStream.Write(array, 0, array.Length);
                    }
                    for (i = 0; i < Myapp.images.Count; i++)
                    {
                        num = Myapp.images[i].imagebytes.getcrc(num, 0);
                        if (dataput.bianyi != 1)
                        {
                            num = Myapp.images[i].imgxulie.getcrc(num, 0);
                        }
                        streamWriter.BaseStream.Write(Myapp.images[i].imagebytes, 0, Myapp.images[i].imagebytes.Length);
                        if (dataput.bianyi != 1)
                        {
                            streamWriter.BaseStream.Write(Myapp.images[i].imgxulie, 0, Myapp.images[i].imgxulie.Length);
                        }
                    }
                    for (i = 0; i < Myapp.zimos.Count; i++)
                    {
                        num = Myapp.zimodatas[i].getcrc(num, 0);
                        streamWriter.BaseStream.Write(Myapp.zimodatas[i], 0, Myapp.zimodatas[i].Length);
                    }
                    if (dataput.bianyi == 1)
                    {
                        int num3 = (Myapp.Getallimgsize(dataput.bianyi) + Myapp.Getallzimosize(false)) % 4096;
                        if (num3 != 0)
                        {
                            array = new byte[4096 - num3];
                            for (i = 0; i < array.Length; i++)
                            {
                                array[i] = 0;
                            }
                            num = array.getcrc(num, 0);
                            streamWriter.BaseStream.Write(array, 0, array.Length);
                        }
                    }
                    for (i = 0; i < dataput.strbytes.Count; i++)
                    {
                        num = dataput.strbytes[i].getcrc(num, 0);
                        streamWriter.BaseStream.Write(dataput.strbytes[i], 0, dataput.strbytes[i].Length);
                    }
                    if (dataput.bianyi == 1)
                    {
                        StreamReader streamReader = new StreamReader(Application.StartupPath + "\\asp" + appinf.xilie.ToString() + ".dll");
                        array = new byte[streamReader.BaseStream.Length];
                        streamReader.BaseStream.Position = 0L;
                        streamReader.BaseStream.Read(array, 0, array.Length);
                        num = array.getcrc(num, 0);
                        streamWriter.BaseStream.Write(array, 0, array.Length);
                        streamReader.Close();
                        streamReader = new StreamReader(Application.StartupPath + "\\cd" + appinf.xilie.ToString() + ".dll");
                        array        = new byte[streamReader.BaseStream.Length];
                        streamReader.BaseStream.Position = 0L;
                        streamReader.BaseStream.Read(array, 0, array.Length);
                        num = array.getcrc(num, 0);
                        streamWriter.BaseStream.Write(array, 0, array.Length);
                        streamReader.Close();
                        streamReader = new StreamReader(Application.StartupPath + "\\syscom.bin");
                        array        = new byte[streamReader.BaseStream.Length];
                        streamReader.BaseStream.Position = 0L;
                        streamReader.BaseStream.Read(array, 0, array.Length);
                        num = array.getcrc(num, 0);
                        streamWriter.BaseStream.Write(array, 0, array.Length);
                        streamReader.Close();
                        streamReader = new StreamReader(Application.StartupPath + "\\input.bin");
                        array        = new byte[streamReader.BaseStream.Length];
                        streamReader.BaseStream.Position = 0L;
                        streamReader.BaseStream.Read(array, 0, array.Length);
                        num = array.getcrc(num, 0);
                        streamWriter.BaseStream.Write(array, 0, array.Length);
                        streamReader.Close();
                    }
                    if (dataput.bianyi == 1)
                    {
                        for (i = 0; i < dataput.pages_down.Count; i++)
                        {
                            array = dataput.pages_down[i].structToBytes();
                            num   = array.getcrc(num, 0);
                            streamWriter.BaseStream.Write(array, 0, array.Length);
                        }
                    }
                    else
                    {
                        for (i = 0; i < Myapp.pages.Count; i++)
                        {
                            array = Myapp.pages[i].mypage.structToBytes();
                            num   = array.getcrc(num, 0);
                            streamWriter.BaseStream.Write(array, 0, array.Length);
                        }
                    }
                    for (i = 0; i < dataput.Lobjs.Count; i++)
                    {
                        array = dataput.Lobjs[i].structToBytes();
                        num   = array.getcrc(num, 0);
                        streamWriter.BaseStream.Write(array, 0, datasize.objxinxisize);
                        if (dataput.bianyi == 1)
                        {
                            num = dataput.Lobjattdatapianyi[i].getcrc(num, 0);
                            streamWriter.BaseStream.Write(dataput.Lobjattdatapianyi[i], 0, dataput.Lobjattdatapianyi[i].Length);
                        }
                    }
                    uint num4 = 0u;
                    for (i = 0; i < (int)appinf2.picqyt; i++)
                    {
                        guiimagetype guiimagetype = Myapp.images[i];
                        guiimagetype.picturexinxi.addbeg    = num4;
                        guiimagetype.picturexinxi.pictureid = (ushort)i;
                        if (dataput.bianyi != 1)
                        {
                            guiimagetype.picturexinxi.imgxuliebeg = guiimagetype.picturexinxi.imgbytesize;
                        }
                        if (dataput.bianyi != 1)
                        {
                            guiimagetype.picturexinxi.imgbytesize = guiimagetype.picturexinxi.imgbytesize + (uint)guiimagetype.imgxulie.Length;
                        }
                        array = guiimagetype.picturexinxi.structToBytes();
                        num   = array.getcrc(num, 0);
                        streamWriter.BaseStream.Write(array, 0, datasize.picxinxisize);
                        num4 += (uint)Myapp.images[i].imagebytes.Length;
                    }
                    i = 0;
                    while ((long)i < (long)((ulong)appinf2.strqyt))
                    {
                        array = dataput.strxinxis[i].structToBytes();
                        num   = array.getcrc(num, 0);
                        streamWriter.BaseStream.Write(array, 0, datasize.strxinxisize);
                        i++;
                    }
                    num4 = 0u;
                    for (i = 0; i < (int)appinf2.zimoqyt; i++)
                    {
                        zimoxinxi zimoxinxi = Myapp.zimos[i];
                        zimoxinxi.addbeg = num4;
                        array            = zimoxinxi.structToBytes();
                        num = array.getcrc(num, 0);
                        streamWriter.BaseStream.Write(array, 0, datasize.zimoxinxisize);
                        num4 += (uint)Myapp.zimodatas[i].Length;
                    }
                    num ^= (uint)((byte)appinf.Modelcrc);
                    num ^= (uint)appinf.mark;
                    num ^= (uint)((byte)appinf.datasize);
                    streamWriter.BaseStream.Write(num.structToBytes(), 0, 4);
                    streamWriter.Close();
                    streamWriter.Dispose();
                    if (dataput.bianyi == 1)
                    {
                        if (datasize.Language == 0)
                        {
                            Myapp.addbianyisuc(string.Concat(new object[]
                            {
                                "编译成功!".Language(),
                                " ",
                                Myapp.errors,
                                "个错误,".Language(),
                                " ",
                                Myapp.warnings.ToString(),
                                "个警告,文件大小:".Language(),
                                appinf.datasize.ToString("000,000")
                            }), (Myapp.warnings > 0) ? Color.Blue : Color.Black);
                        }
                        else
                        {
                            Myapp.addbianyisuc(string.Concat(new object[]
                            {
                                "编译成功!".Language(),
                                " ",
                                Myapp.errors,
                                " ",
                                "个错误,".Language(),
                                " ",
                                Myapp.warnings.ToString(),
                                " ",
                                "个警告,文件大小:".Language(),
                                appinf.datasize.ToString("000,000")
                            }), (Myapp.warnings > 0) ? Color.Blue : Color.Black);
                        }
                    }
                    result = true;
                }
            }
            catch (Exception ex)
            {
                MessageOpen.Show(ex.Message);
                result = false;
            }
            return(result);
        }