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); }