Недавно добавленные исходники

•  Animation Loaders  633

•  DeLiKaTeS Tetris (Тетрис)  5 648

•  TDictionary Custom Sort  7 607

•  Fast Watermark Sources  7 297

•  3D Designer  10 498

•  Sik Screen Capture  7 818

•  Patch Maker  8 045

•  Айболит (remote control)  8 102

•  ListBox Drag & Drop  6 908

•  Доска для игры Реверси  100 038

•  Графические эффекты  8 165

•  Рисование по маске  7 568

•  Перетаскивание изображений  6 172

•  Canvas Drawing  6 534

•  Рисование Луны  6 465

•  Поворот изображения  5 648

•  Рисование стержней  4 567

•  Paint on Shape  3 275

•  Генератор кроссвордов  4 261

•  Головоломка Paletto  3 394

•  Теорема Монжа об окружностях  4 224

•  Пазл Numbrix  2 740

•  Заборы и коммивояжеры  3 639

•  Игра HIP  2 444

•  Игра Go (Го)  2 426

•  Симулятор лифта  2 834

•  Программа укладки плитки  2 277

•  Генератор лабиринта  2 988

•  Проверка числового ввода  2 497

•  HEX View  2 901

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Автоопределение кодировки ANSI-OEM



- Маша, давай прошвырнемся в кино?
- ?
- Hу давай хоть в кабак сходим.
- ? - А-а, понял, кодировка глючит...


const
  l3_csANSI = 0;
  {-признак кодировки ANSII}
  l3_csOEM = 255;
  {-признак кодировки OEM}

type
  cc_Graph_CriteriaRange = #176..#223; {-критерий для определения псевдографики}
  TChars = set of char;
  Long = LongInt;

const
  cc_OEM_CriteriaEx = [#128..#175] + [#224..#239];
  cc_ANSI_CriteriaEx = [#192..#255];
  cc_Graph_Criteria = [Low(cc_Graph_CriteriaRange)..High(cc_Graph_CriteriaRange)];

type
  T_cc_GraphCounts = array [cc_Graph_CriteriaRange] of Longint;

procedure l3AnalizeCharSetEx(var Buf: PChar; BufEnd: PChar;
var OEMCount, ANSICount, GraphCount: Long;
var GraphCounts: T_cc_GraphCounts);
var
  C : Char;
begin
  OEMCount := 0;
  ANSICount := 0;
  GraphCount := 0;
  for C := Low(T_cc_GraphCounts) to High(T_cc_GraphCounts) do GraphCounts[C] := 0;
  while (Buf <  BufEnd) do begin
    C := Buf^;
    Inc(Buf);
    if (C in cc_OEM_CriteriaEx) then Inc(OEMCount);
    if (C in cc_ANSI_CriteriaEx) then Inc(ANSICount);
    if (C in cc_Graph_Criteria) then begin
      Inc(GraphCounts[C]);
      Inc(GraphCount);
    end;
  end;{Buf <  BufEnd}
end;

function l3AnalizeCharSetExEx(Buf, BufEnd: PChar): Byte;
var
  OEMCount : Long;
  ANSICount : Long;
  GraphCount : Long;
  GraphCount_2: Long;
  GraphCounts : T_cc_GraphCounts;
  C : Char;
begin
    l3AnalizeCharSetEx(Buf, BufEnd, OEMCount, ANSICount, GraphCount,GraphCounts);
    if (OEMCount >  ANSICount) then
      Result := l3_csOEM
    else if (GraphCount > = ANSICount) then begin
    Result := 0;
    GraphCount_2 := GraphCount div 2;
    for C := Low(T_cc_GraphCounts) to High(T_cc_GraphCounts) do begin
      If (GraphCounts[C] >  GraphCount_2) then begin
        Result := l3_csOEM;
        break;
      end;{GraphCounts[C] >  ..}
    end;{for C}
  end else Result := 0;
end;

function l3AnalizeCharSetBuf(Buf: PChar; Len: Long): Byte;
begin
  Result := l3AnalizeCharSetExEx(Buf, Buf + Len);
end;





Похожие по теме исходники

Basic Image Transitions




Copyright © 2004-2026 "Delphi Sources" by «SiteAnalyzer». Delphi World FAQ

Группа ВКонтакте