Форум: "Потрепаться";
Текущий архив: 2002.03.11;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.009 c