Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.11;
Скачать: CL | DM;

Вниз

RE   Найти похожие ветки 

 
handra ©   (2002-01-24 13:41) [0]

...возвращаясь к прошлому...
Помнится, в форумах обсуждалься вопрос по поводу определения кодировки русского текста (win, dos, koi) и функций преобразование для него. Были предложены частотные, исключающие способы...
Увы, поиск по сайту с целью локализации той дискуссии результатов не дал.
Всем, у кого осталось/имеется что-либо на эту тему - просьба, откликнитесь. Приветствуется готовая библиотека функций, т.к. вермени на ее создание, ко сожалению, уже нет.
Заранее благодарен, Ваш handra.


 
Виктор Щербаков ©   (2002-01-24 14:12) [1]

Function TForm1.DetectCharSet(FName : String) : Integer; // by Sergey Luzan ----
// -1: Charset not detected
// 1: DOS
// 2: WIN
CONST
MaxSize = 4096; // Max text length analized for detecting charset
DOSTopChars : String = #165#168#173#174;
// "еино" в кодировке DOS - часто встречающиеся символы
WINTopChars : String = #229#232#237#238;
// "еино" в кодировке WIN - часто встречающиеся символы
Type
TMyBuffer = Array[1..MaxSize] OF Char;
Var
DOSCount, WINCount : Integer;
TopDOSChar, TopWINChar : Array[Char] OF Boolean;
F: file;
Size: Cardinal;
Buffer: ^TMyBuffer;
i : Integer;
c : Char;
Begin
DOSCount:=0; WINCount:=0;
FOR c:=#0 TO #255 DO
Begin
TopDOSChar[c] := ( Pos(c,DOSTopChars) > 0 );
TopWINChar[c] := ( Pos(c,WINTopChars) > 0 );
End;
{$I-}
AssignFile(F, FName);
Reset(F,1);
{$I+}
IF IOResult=0 Then // File found
Begin
Size := FileSize(F);
IF Size>MaxSize Then Size:=MaxSize;
try
GetMem(Buffer, Size);
try
BlockRead(F, Buffer^, Size);
FOR i:=1 TO Size DO
Begin
IF TopDOSChar[Buffer^[i]] Then Inc(DOSCount);
IF TopWINChar[Buffer^[i]] Then Inc(WINCount);
End;
finally
FreeMem(Buffer);
end;
finally
CloseFile(F);
end;
End; { IOResult = 0 }
IF DOSCount=WINCount Then
DetectCharSet:=-1
Else
IF DOSCount>WINCount Then DetectCharSet:=1
Else DetectCharSet:=2;
End; { DetectCharSet }


 
handra ©   (2002-01-25 15:30) [2]

to Виктор Щербаков > спасибо, немного легче...
to all> видать забыли?! или сюда заходят, чтобы испачкать друг друга д..., грязью?



Страницы: 1 вся ветка

Текущий архив: 2002.03.11;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.01 c
1-32503
Почемучка
2002-02-20 17:49
2002.03.11
QReport в Delphi 5.0


3-32411
Draculenok
2002-02-12 12:40
2002.03.11
SQL для QReports


7-32584
Nickolaus
2001-12-05 22:03
2002.03.11
ПОМОГИТЕ! ! ! Кто-нибудь что-нибудь слышал о записи на CD-RW


3-32384
af
2002-02-11 16:52
2002.03.11
Можно ли программно добавлять значения для DBcombobox?


1-32455
Катя
2002-02-20 13:24
2002.03.11
Мастера, как правильно сделать подчёркивание надписи на SpeedButton