Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.03.2013, 14:50
Pcrepair
 
Сообщения: n/a
По умолчанию Оператор IF. Выбор кодировки ХТМЛ-страницы

Добрый день. Есть функция выбора кодовой страницы

Код:
function FindCharSet(const Data:string):integer;
const (*это в общем не нужно*)
  CodePages: array[0..10] of string = ('utf-8','utf-16','windows-1251','koi8-r','iso-8859-1',
  'iso-8859-15','windows-1252','iso-8859-2','iso-8859-3','iso-8859-4','iso-8859-5');

var Pos1,Pos2:integer; CharSet:string;
begin
  Pos1:=PosEx('charset=',Data,1);   
  Pos2:=PosEx('>',Data,Pos1);
  CharSet:=Copy(Data, Pos1,(Pos2-Pos1+1)); (*выделяем чарсет из страницы*)
  if Pos1 > 0 then (*если чарсет есть тогда*)
  begin
    if True then (*если в чарсет нет указания на кодировку страницы, принудительно назначить 1251*)
      begin
        Result:=1251;
      end
      else  (*когда номер страницы указан*)
      begin
        if PosEx('utf-8',CharSet,1) > 0 then         Result:=65001;
        if PosEx('utf-16',CharSet,1) > 0 then        Result:=65001;
        if PosEx('windows-1251',CharSet,1) > 0 then  Result:=1251;
        if PosEx('windows-1252',CharSet,1) > 0 then  Result:=1252;
        if PosEx('koi8-r',CharSet,1) > 0 then        Result:=20866;
        if PosEx('iso-8859-1',CharSet,1) > 0 then    Result:=28591;
        if PosEx('iso-8859-2',CharSet,1) > 0 then    Result:=28592;
        if PosEx('iso-8859-3',CharSet,1) > 0 then    Result:=28593;
        if PosEx('iso-8859-4',CharSet,1) > 0 then    Result:=28594;
        if PosEx('iso-8859-5',CharSet,1) > 0 then    Result:=28595;
        if PosEx('iso-8859-15',CharSet,1) > 0 then   Result:=28605;
      end;
  end
  else (когда чарсета нет, присваиваем принудительно)
  begin
    Result:=1251;
  end;
end;

Внимание!! Вопрос: Как покороче написать if True then
если использовать массив строк, то прийдется лепить излишне сложный код, поскольку есть варианты:
charset=windows-1251"
charset="windows-1251"
charset='windows-1251' из этого нужно выделить windows-1251(к примеру)
если помножить на число кодировок получается громоздко. нет ли какого фокуса чтоб написать покороче
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:01.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025