#include <windows.h>
#include <stdio.h>
void main(void)
{
int Chr[256], I, J, P;
char b[2];
b[1]=0;
for(I=0;I < 256; I++)
{
b[0]=I;
CharToOem(b,b);
Chr=(unsigned char)b[0];
}
printf("hex:\n ");
for(I=0; I < 21;I++)
printf("%02X,",Chr);
printf("\\\n ");
for(J=0; J < 9;J++)
{
for(P=0; P < 25; P++, I++)
printf("%02X,",Chr);
printf("\\\n ");
}
for(; I < 255; I++)
printf("%02X,",Chr);
printf("%02X\n",Chr);
}
CharToOem проблеммы
Есть вот такая проблемма: необходимо переконвертировать код вида 0, 1, ...255 в символы ДОС, т.е. при просмотре хиевом исходный файл выглядит так см. рис 1, а при конвертировании моей программой он выглядит так см. рис 2. Может кто подскажет в чем проблемма?!
Используется фукция CharToOem().
Код:
Код:
AnsiString sStr, tStr; // Объявляем начальную и конечную строки
for (int i = 0, Count = fSourse_File->Count; i < Count; i++)
{
sStr = fSourse_File->Strings; // Считываем строку из StringList
tStr.SetLength(sStr.Length()); // Указываем длину конечной строки, равную длине исходной
if (ToWindows) // Выбираем направление конвертирования
OemToCharA(sStr.c_str(), tStr.c_str());
else
CharToOemA(sStr.c_str(), tStr.c_str());
fSourse_File->Strings = tStr; // Записываем конечную строку в StringList
}
for (int i = 0, Count = fSourse_File->Count; i < Count; i++)
{
sStr = fSourse_File->Strings; // Считываем строку из StringList
tStr.SetLength(sStr.Length()); // Указываем длину конечной строки, равную длине исходной
if (ToWindows) // Выбираем направление конвертирования
OemToCharA(sStr.c_str(), tStr.c_str());
else
CharToOemA(sStr.c_str(), tStr.c_str());
fSourse_File->Strings = tStr; // Записываем конечную строку в StringList
}
Для конвертирования используются два строковых массива, указатели на которые получаем методом AnsiString::c_str() для исходной и конечной строк соответственно
Jackal, без обид, но в приведённом коде без поллитры не разберёшься. Что он вообще делает?
Скажи, что ты хотел, чтобы делала твоя програМа, тогда можно будет сказать, в чём проблеММа.