Помогите перевести код «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» (что-то типа структуры как я понял или массива)
(Сам файл смешанный, на половину текстовый, на половину бинарный, т.е. значения в нём даны в бинарном виде, а переменные хранящие эти значения в текстовом)
пожалуйста… кому не трудно помогите…
З.Ы. Модераторам, если не правильно выбрал раздел просьба не удалять, а перенести в соответствующий…