Помогите перевести код «Visual Studio 2008 Express» на «Borland C++Builder 6».Пожалуйста, кто-нибудь помогите…я, уже буквально, выбился из сил… код вроде и простой, но я не как не догоняю (не могу найти аналоги в C++), как его перевести на «Borland C++Builder 6» оригинал написан на C#  «Visual Studio 2008 Express»…
List<Var> Variablen = new List<Var>();
       public bool ReadMyFile(string p)  // Здесь принимается строка с именем файла
        {
            Variablen.Clear(); // Вот здесь не пойму наверное это массив 
            if (p.Trim().Length==0||!File.Exists(p))
            {
                MessageBox.Show(MBFILENOTFOUND, MBTFILEERROR);
                return false;
            }
            string Oldname = currentFileName;
            this.Text = TITLE +" - "+ p.Replace(path,"");
            currentFileName = p; 
            dialogMode = true;  
            dialogBegin = false;
            byte[] ByteArray; //в C++есть такой массив но как он применён здесь не понятно
            try
            {
                ByteArray = File.ReadAllBytes(p); // Заносится файл в массив
// как такое сделать на C++ знаю но можно
 // просто читать файл до конца с помощью fgetc(file) по симвалам
            }
            catch
            {
                MessageBox.Show(MBFILENOTREAD, MBTFILEERROR);
                return false;
            }
            
            int strlength = 0;
            int position = 0;
            string varname = "";
            int value=0;
            bool Readmode = false;
            int i = 0;
            int Count0A = 0;
            int MaxByte = 0;
            while (i < ByteArray.Length)
            {
              
                if (ByteArray[i]==0x0A)
                {
                    Count0A++;
                    if (Count0A > 6)
                    {
                        i++;
                    }
                }
                if (ByteArray[i] == 0x02 
                && ByteArray[i+1] == 0x00
                && ByteArray[i+2] == 0x00
                && ByteArray[i+3] == 0x00
                && ByteArray[i+4] == 0x01
                && ByteArray[i+5] == 0x00
                && ByteArray[i+6] == 0x00
                && ByteArray[i+7] == 0x00)
                {
                    break;
                }
                i++;
            }
            i += 8;
            MaxByte = BitConverter.ToInt32(ByteArray, i);
            i += 3;
            
            while (i < MaxByte)
            {
                
                try
                {
                    
                    if (ByteArray[i] == 0x12)
                    {
                        
                        if (dialogMode)
                        {
                            value = JumpNr(ref ByteArray, ref i, ref position);
                            
                        }
                        else
                        {
                            
                            if (Readmode == true && varname.Trim().Length > 0)
                            {
                                
                                value = JumpNr(ref ByteArray, ref i, ref position);
                                if (dialogEnd)
                                {
                                    dialogEnd = false;
                                }
                                else
                                {
                                    
                                    Variablen.Add(new Var(varname, value, position));
                                }
                                i--; 
                                Readmode = false;
                                
                            }
                        }
                    }
                    else if (ByteArray[i]== 0x01)
                    {
                        strlength=ReadLength(ref ByteArray, ref i);
                        if (strlength >0)
                        {
                            varname = ReadName(ref ByteArray, ref i, strlength);
                        }
                        
                      
                            
                            if (varname.Trim().Length > 0)
                            {
                                if (dialogMode && dialogBegin)
                                {
                                    Variablen.Add(new Var(varname, value, position));
                                }
                                else
                                {
                                    Readmode = true;
                                }
                                
                            }
                        
                    }
                    
                }
                catch
                {
                    break;
                    
                }
                i++;
            }
            Variablen.Sort();
            if (Variablen.Count == 0)
            {
                MessageBox.Show(MBFILENOTREAD, MBTFILEERROR);
                currentFileName = Oldname;
                this.Text = TITLE + " - " + currentFileName.Replace(path, "");
                return false;
            }
            return true;
        }
Вспомогательные функции…
        public string ReadName(ref byte[] b, ref int z, int l)
        {
            StringBuilder  r = new StringBuilder(2048); 
            string s;
            int i;
            for ( i = z; i < z+l; i++)
            {
                r.Append((char)(b[i]));
               
            }
            s = r.ToString();
            
            z += s.Length-1;
            if (tagebuchmode && s==("[]"))
            {
                tagebuchmode = false;
                return "";
            }
            if (tagebuchmode)
            {
                return "";
            }
            return s;
        }
        public int JumpNr(ref byte[] b,ref int z, ref int k)
        {
            int d2 = 0;
            int r = 0;            
            while (b[z]==0x12)
            {
                z +=5;
                if (b[z] != 0x01)
                {
                    if (dialogBegin && b[z] == 0x02)
                    {
                        tagebuchmode = true;
                        dialogMode = false;
                        dialogEnd = true;
                        dialogBegin = false;
                    }
                    z++;
                    k = z; 
                    if (dialogBegin == false && d2 < 2)
                    {
                        r = BitConverter.ToInt32(b, z);
                        d2++;
                    }
                    z += 4;
                    if (b[z - 5] != 2)
                    {
                    }
                    if (dialogMode && b[z-5] == 0x06)
                    {
                        dialogBegin = true; 
                        return r;
                    }
                }
                 
                
            }
            return r;
        }
        public int ReadLength(ref byte[] b, ref int z)
        {
            int r = 0;
            z += 1;
            r = BitConverter.ToInt16(b, z);
            z += 2;
            return r;
        }
Вспомогательные не так важны, я просто их привел, чтоб понятно было… мне б с первой разобраться, а остальное я сам сделаю.
Да, боже мой, чуть не забыл, пояснить, что это всё значит.
В первую функцию передаётся имя файла, … и она его читает в бинарном режиме и находит в нём значения, которые после выводятся в «Variablen»  (что-то типа структуры как я понял или массива) 
(Сам файл смешанный, на половину текстовый, на половину бинарный, т.е. значения в нём даны в бинарном виде, а переменные хранящие эти значения в текстовом)
пожалуйста… кому не трудно помогите…
З.Ы. Модераторам, если не правильно выбрал раздел просьба не удалять, а перенести в соответствующий…