Delphi World - Перекодировка строк из одной кодировки в другую
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Перекодировка строк из одной кодировки в другую

Автор: Default
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> перекодировка строк из одной кодировки в другую

// функция CodeConversion служит для перекодировки строки символов из
// одной кодировки в другую кодировку;
// параметры: SourceStr - исходная строка для перекодировки,
// VectorCodeConv - вектор перекодировки;
// Result - перекодированная строка;
// Написана как альтернатива функции ConvertEncoding @VEG-а
// Быстрее как минимум - приблизительно в 4 раза,
// как максимум - приблизительно в 18 раз
// (минимум - когда первый параметр перед передачей в подпрограмму
// преобразовывается из типа String к типу PChar + результат
// преобразовывается из типа PChar в тип String;
// максимум - когда нет никаких преобразований String в PChar и обратно)

Зависимости: Нет
Автор:       default
Copyright:   default(+VEG@-ие вектора перекодировок)
Дата:        3 ноября 2003 г.
***************************************************** }

function CodeConversion(const SourceStr, VectorCodeConv: PChar): PChar;
asm
        // Вход: SourceStr --> EAX, VectorCodeConv --> EDX
        // Выход: Result --> EAX

        PUSH EBX
        XOR ECX, ECX
        XOR EBX, EBX
@@Go:
        TEST BYTE PTR [EAX + ECX], -1
        JZ @@Exit
        MOV BL, BYTE PTR [EAX + ECX]
        MOV BL, BYTE PTR [EDX + EBX - 1]
        MOV BYTE PTR [EAX + ECX], BL
        INC ECX
        JMP @@Go
@@Exit:
        POP EBX

 end;

Пример использования:

var
 S: PChar;
begin
 S := CodeConversion(CodeConversion('Тест!', cmAnsiToKoi8R), cmKoi8RToAnsi)
end;
Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования