powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как прочитать текстовый файл в 10 байт и вывести ShowMessage ?
6 сообщений из 6, страница 1 из 1
Как прочитать текстовый файл в 10 байт и вывести ShowMessage ?
    #39712265
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Хочу прочесть текстовый файл.
Если текстовый файл сохранён в UniCode, то функция TFile.ReadAllText возвращает ерунду.

Есть ли в RadStudio 10.2 функция, которая читает текстовые файлы правильно ?
Не перекладывая на разработчика определение кодировки текстового файла(т.е. работает как NotePad.exe)
...
Рейтинг: 0 / 0
Как прочитать текстовый файл в 10 байт и вывести ShowMessage ?
    #39712273
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_Bт.е. работает как NotePad.exe
Так он определяет.
...
Рейтинг: 0 / 0
Как прочитать текстовый файл в 10 байт и вывести ShowMessage ?
    #39712274
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_B,

TStringList.LoadFromFile(FileName, Encoding)

Определить кодовую страницу можно примерно так:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
function DetectCodePage(Buffer: PAnsiChar;  BufSize: integer): cardinal;
var i,j:integer;
    AMax:integer;
    S:AnsiString;
begin
  if IsTextUnicode(Buffer,BufSize,nil) then Result:=CP_UNICODE
  else begin
         if (Buffer<>nil) then S:=AnsiString(Buffer)
         else S:='';
         if (S<>'') and (Copy(S,1,3)=BOM_UTF8_STR) then Result:=CP_UTF8
         else
         if (S<>'') and (Copy(S,1,3)=BOM_UTF7_STR) then Result:=CP_UTF7  
         else
         if (S<>'') and ((Copy(S,1,2)=BOM_LSB_FIRST_STR) or
                         (Copy(S,1,2)=BOM_MSB_FIRST_STR)) then
             begin
               if (Copy(S,1,2)=BOM_LSB_FIRST_STR) then Result:=CP_UTF16BE
               else Result:=CP_UNICODE;
             end
         else
            begin
               // а вот тут уже твое личное творчество, как отличить KOI8 от ANSI1251 ;)
            end;
end;
...
Рейтинг: 0 / 0
Как прочитать текстовый файл в 10 байт и вывести ShowMessage ?
    #39712284
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

Да, так можно. Я в примерно так же и сделал +-.

Но в данном случае - это ты определяешь кодировку.
Есть ли функция, которая это делает за разработчика ?
...
Рейтинг: 0 / 0
Как прочитать текстовый файл в 10 байт и вывести ShowMessage ?
    #39712294
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_B,

Насколько я знаю - нет. Я определяю эвристикой - для моих задач - хватает. 100% угадывания, что это за кодировка ты все равно не добьешься - может быть бинарник, может быть "поломанный" юникод, может быть экзотика в виде древнего KOI-7 или какого-то арабского или китайского диалекта.
...
Рейтинг: 0 / 0
Как прочитать текстовый файл в 10 байт и вывести ShowMessage ?
    #39712299
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BЕсть ли функция, которая это делает за разработчика ?
Все функции/процедуры делают что-то за разработчика.
Даже та, что DarkMaster привел для примера.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как прочитать текстовый файл в 10 байт и вывести ShowMessage ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]