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

•  DeLiKaTeS Tetris (Тетрис)  170

•  TDictionary Custom Sort  3 343

•  Fast Watermark Sources  3 095

•  3D Designer  4 852

•  Sik Screen Capture  3 350

•  Patch Maker  3 556

•  Айболит (remote control)  3 665

•  ListBox Drag & Drop  3 018

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

•  Графические эффекты  3 948

•  Рисование по маске  3 253

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

•  Canvas Drawing  2 761

•  Рисование Луны  2 586

•  Поворот изображения  2 195

•  Рисование стержней  2 170

•  Paint on Shape  1 569

•  Генератор кроссвордов  2 240

•  Головоломка Paletto  1 769

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

•  Пазл Numbrix  1 685

•  Заборы и коммивояжеры  2 059

•  Игра HIP  1 282

•  Игра Go (Го)  1 230

•  Симулятор лифта  1 476

•  Программа укладки плитки  1 219

•  Генератор лабиринта  1 548

•  Проверка числового ввода  1 367

•  HEX View  1 497

•  Физический маятник  1 359

 
скрыть


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-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

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