Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблемы перекодировки [D7, Win95/98]


***_Diman_*** ©   (2005-07-10 09:43:00) 

Люди подскажите плз нижеприведенная функция вытаскивает из обычного текстового файла строку разделённую #, с выводом в MessageBox английских букв цифр и пр. символов никаких проблем нет а вот русские ну не в какую не выводятся. Что делать, как поправить?
LRESULT LoadContragents(HWND hItem)
{
HANDLE hFile;

PCHAR Buffer;
TCHAR Naimenovanie[100] = TEXT("");
TCHAR RNN[15] = TEXT("");
TCHAR Address[100] = TEXT("");
TCHAR RS[15] = TEXT("");
TCHAR MFO[15] = TEXT("");
TCHAR Phone[20] = TEXT("");

DWORD nCnt;
INT  count,i,nFileSize,sPart;


hFile = CreateFile(TEXT ("\\1CSoftware\\Databases\\contragents.dat"),GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
 MessageBox(0,TEXT ("Файл не найден !"),TEXT ("Ошибка"),MB_ICONWARNING);
 return 0;
}

nFileSize = GetFileSize(hFile,NULL);
 
sPart = 1;
count = 0;

for (i = 0; i < nFileSize-1; i++)
{
 //а вот тут будет считывание до CRLF
 ReadFile(hFile,&Buffer,1,&nCnt,NULL);
 if ((UCHAR)Buffer == '#')
  {
   sPart++;
   count = 0;
   continue;
  }
 switch (sPart)
 {
  case 1:
   Naimenovanie[count] = (UCHAR)Buffer;
   break;
  case 2:
   RNN[count] = (UCHAR)Buffer;
   break;
  case 3:
   Address[count] = (UCHAR)Buffer;
   break;
  case 4:
   RS[count] = (UCHAR)Buffer;
   break;
  case 5:
   MFO[count] = (UCHAR)Buffer;
   break;
  case 6:
   Phone[count] = (UCHAR)Buffer;
   break;
 }
 count++;

 //теперь добавл.
 
}
 SendMessage(hItem,CB_ADDSTRING,0,LPARAM(Naimenovanie));
 
 MessageBox(0,Naimenovanie,TEXT("text"),MB_OK);
 MessageBox(0,RNN,TEXT("text"),MB_OK);
 MessageBox(0,Address,TEXT("text"),MB_OK);
 MessageBox(0,RS,TEXT("text"),MB_OK);
 MessageBox(0,MFO,TEXT("text"),MB_OK);
 MessageBox(0,Phone,TEXT("text"),MB_OK);
 CloseHandle(hFile);
return 0;
}
Кстати может подскажите более простой способ построчного чтения файла чем этот (ну он ещё немного не доделан), а то кажется наворотил я там с избытком много лишнего.


Virgo_Style   (2005-07-10 16:01:00) [1]

Открыть исходный файл для просмотра, например, Total Commander'ом, подобрать кодировку, при загрузке перекодировать из этй кодировки в нужную.


Anatoly Podgoretsky   (2005-07-10 13:23:00) [2]

Делать правильно.


***_Diman_***   (2005-07-10 13:14:00) [3]

ну, это всё лирика, и не по существу вопроса. так что делать дабы и русские буквы нормально отображались?


Anatoly Podgoretsky   (2005-07-10 12:52:00) [4]

Не Билли надо дать, а местный доморащеных умельцев на Колыму. Они до сих пор продолжают свою вредительскую деятельность.


***_Diman_***   (2005-07-10 12:20:00) [5]

ну да. вместо русских букв всякая лабуда нечитаемая. а с кодировками я уже запутался окончательно. билли в зубы надо было дать в своё время чтобы только одну придумал и людям голову не морочил.


Virgo_Style   (2005-07-10 11:02:00) [6]

Вероятно, проблемы с кодировкой?


Наверх

Титульная страница Поиск, карта сайта Написать письмо