Показать сообщение отдельно
  #46  
Старый 14.07.2010, 22:50
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Я бы делал так (ИМХО):
1. Есть базовый класс (для ANSI).
2. Есть список форматов, генерирующийся на основе содержимого папки с программой.
3. В папке содержатся файлы (например, с расширением .enc), являющиеся DLL.
Функции, предоставляемые DLL:
PHP код:
procedure GetInfo(var EncodingClassinteger; var Namestring; var Descrstring; var Authorstring);
// Информация о модуле:
// * класс (зарезервировано на случай, если модули будут использоваться в разных программах пакета),
// * название (в данном случае - кодировка),
// * описание (любой текст от разработчика),
// * автор.
function IsFileInEnc(FileNamestring): boolean;
// Проверяет файл на возможность загрузки при помощи данного модуля
function IsStringInEnc(SString): boolean;
// То же самое для строки
function FileToAnsi(FileNamestring): string;
// Преобразует файл из кодировки модуля в ANSI
function StringToAnsi(Sstring): string;
// То же самое для строки
function AnsiToString(SString): string;
// Преобразует строку из ANSI в кодировку модуля.
procedure AnsiToFile(SStringFileNamestring);
// Преобразует строку из ANSI в кодировку модуля и сохраняет в файл. 
Можно ещё добавить функционал для работы со Stream-данными, но не существенно.
При вызове функции загрузки/сохраниния/перекодирования, пробегаемся по списку и проверяем...
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием