|  | 
 
 | 
| 
 | |||||||
| Регистрация | << Правила форума >> | 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. |