Главная страница
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.011 c
3-32407
Mirovodin
2002-02-11 12:23
2002.03.11
Использование ADO


3-32394
IronHawk
2002-02-11 18:57
2002.03.11
Где в DBGrid поставить разделитель между столбцами !


6-32531
Sour
2001-12-22 19:59
2002.03.11
Ошибка POP3 SMTP......


1-32494
AlexMey
2002-02-25 01:25
2002.03.11
Вопрос по поводу конвертирования string во float и про функцию StrToFloat()


3-32415
КСА
2002-02-12 12:05
2002.03.11
InterBase. Deadlock detected