private void DecompressDialog_Loading(FrameworkElement sender, object args)
        {
            try
            {
                Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

                foreach (EncodingInfo Enco in Encoding.GetEncodings())
                {
                    if (Enco.CodePage == Encoding.Default.CodePage)
                    {
                        AvailableEncoding.Insert(0, Enco.GetEncoding());
                    }
                    else
                    {
                        AvailableEncoding.Add(Enco.GetEncoding());
                    }
                }

                AvailableEncoding.Add(Encoding.GetEncoding(936));

                EncodingOption.SelectedIndex = 0;
            }
            catch (Exception ex)
            {
                LogTracer.Log(ex);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Get a null terminated String
        /// </summary>
        /// <param name="Pointer">Pointer to the string</param>
        /// <param name="Decode">if False, return the hex of the string</param>
        /// <returns></returns>
        internal static string GetStringA(IntPtr Pointer, bool Decode = true, int?CP = null, int?Len = null)
        {
            int len = 0;

            if (Len == null)
            {
                while (Marshal.ReadByte(Pointer, len) != 0)
                {
                    ++len;
                }
            }
            else
            {
                len = Len.Value;
            }

            byte[] buffer = new byte[len];
            Marshal.Copy(Pointer, buffer, 0, buffer.Length);

            if ((LogInput || LogAll) && !DumpStrOnly)
            {
                Log("Input: {0}", true, ParseBytes(buffer));
            }

            if (Unicode && CP == null)
            {
                return(Encoding.Default.GetString(buffer));
            }
            else
            {
                if (CP != null)
                {
                    Encoding Enco;
                    switch (CP)
                    {
                    case 0:
                    case 3:
                    case 2:
                    case 1:
                        Enco = Encoding.Default;
                        break;

                    default:
                        Enco = (from x in Encoding.GetEncodings() where x.CodePage == CP select x.GetEncoding()).FirstOrDefault() ?? WriteEncoding;
                        break;
                    }
                    return(Enco.GetString(buffer));
                }
                else if (Decode)
                {
                    return(ReadEncoding.GetString(buffer));
                }
                else
                {
                    return(ParseBytes(buffer));
                }
            }
        }