|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Каракули вместо текста
Считываю текст в переменную из файла, но в место теста китайские иероглифы, как исправить?
Код:
function FileOpenText(strFile:PChar):PChar; var f:thandle; dwResSize, dwRead:DWORD; pRes: PChar; begin result:=''; F:=CreateFile(pchar(strFile), GENERIC_READ, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if F=INVALID_HANDLE_VALUE then exit; dwResSize:=GetFileSize(F, nil); pRes:=SysGetMem(dwResSize); ReadFile(F, pRes^, dwResSize, dwRead, nil); CloseHandle(F); Result:=pRes; end; .... ShowMessage(FileOpenText('loginusers.txt')); |
#2
|
|||
|
|||
Какая версия дельфей и в какой кодировке записан файл?
|
#3
|
|||
|
|||
Цитата:
В файле данные такого типа: Цитата:
|
#4
|
|||
|
|||
Ага, вот тут, скорее всего, собака и порылась.
Первое, что смущает в твоем коде: Код:
ReadFile(F, pRes^, dwResSize, dwRead, nil); Далее, если не поможет, начинаем разбираться с Unicode. Для начала попробуй так: Код:
ShowMessage(AnsiString(FileOpenText('loginusers.txt'))); Код:
function FileOpenText(strFile:PChar):String; var f:thandle; dwResSize, dwRead:DWORD; pRes: AnsiString; begin result:=''; F:=CreateFile(pchar(strFile), GENERIC_READ, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if F=INVALID_HANDLE_VALUE then exit; dwResSize:=GetFileSize(F, nil); SetLength(pRes,dwResSize); ReadFile(F, pRes[1], dwResSize, dwRead, nil); CloseHandle(F); Result:=pRes; end; .... ShowMessage(FileOpenText('loginusers.txt')); Кстати, вопрос. А зачем надо это делать через API? Стандарных функций паскаля недостаточно? Последний раз редактировалось lmikle, 19.09.2015 в 03:11. |