Bob Swart - Интернет решения от доктора Боба
- Название:Интернет решения от доктора Боба
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Bob Swart - Интернет решения от доктора Боба краткое содержание
Интернет решения от доктора Боба - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
for i:=0 to 3 do
begin
case Chr(Kwartet[i]) of
'+': Kwartet[i] := 0 + Ord(SP);
'-': Kwartet[i] := 1 + Ord(SP);
'0'..'9': Kwartet[i] := 2 + Kwartet[i]
- Ord('0') + Ord(SP);
'A'..'Z': Kwartet[i] := 12 + Kwartet[i]
- Ord('A') + Ord(SP);
'a'..'z': Kwartet[i] := 38 + Kwartet[i]
- Ord('a') + Ord(SP)
end
end
end;
Triplet[0] := ((Kwartet[0] - Ord(SP)) SHL 2) +
(((Kwartet[1] - Ord(SP)) AND $30) SHR 4);
Triplet[1] := (((Kwartet[1] - Ord(SP)) AND $0F) SHL 4) +
(((Kwartet[2] - Ord(SP)) AND $3C) SHR 2);
Triplet[2] := (((Kwartet[2] - Ord(SP)) AND $03) SHL 6) +
((Kwartet[3] - Ord(SP)) AND $3F)
end{Kwartet2Triplet};
Заметим, что в новой версии появилась новая глобальная переменная, которая используется для определения формата кодирования.
1.1.4. MIME
MIME означает Multipurpose Internet Mail Extensions (Расширение форматов Интернет почты), в котором международным стандартом является кодирование Base64. Данное расширение было разработано для многоязычной поддержки и преобразования символов между системами (такими как IBM мейнфреймы, системы на базе UNIX, Macintosh и IBM PC).
MIME алгоритм кодирования базируется на RFC1341 как MIME Base64. Подобно UUencode, назначение MIME кодировать двоичные файлы так, что бы они смогли пройти через различные почтовые системы, и MIME использует для этого алгоритм кодирования Base64, плюс набор специальных ключевых слов и опций, которые используются для более детализированной информации о содержимом MIME.
1.1.5. TBUUCode компонент
Определение интерфейса компонента TUUCode, базируется на ранее приведенных и объясненных процедур Triplet2Kwartet и Kwartet2Triplet, заметим, что ниже приведенный код использует условное компилирование в зависимости от версий Delphi и C++Builder.
unitUUCode;
interface
uses
{$IFDEF WIN32}
Windows,
{$ELSE}
WinTypes, WinProcs,
{$ENDIF}
SysUtils, Messages, Classes, Graphics, Controls, Forms;
{$IFNDEF WIN32}
type
ShortString = String;
{$ENDIF}
type
EUUCode = class(Exception);
TAlgorithm = (filecopy, uuencode, uudecode, xxencode, xxdecode, Base64encode, Base64decode);
TUnixCRLF = (CRLF, LF);
TProgressEvent = procedure(Percent:Word) of Object;
TBUUCode = class(TComponent)
public
{ Public class declarations (override) }
constructorCreate(AOwner: TComponent); override;
private
{ Private field declarations }
FAbout: ShortString;
FActive: Boolean;
FAlgorithm: TAlgorithm;
FFileMode: Word;
FHeaders: Boolean;
FInputFileName: TFileName;
FOutputFileName: TFileName;
FOnProgress: TProgressEvent;
FUnixCRLF: TUnixCRLF;
{ Dummy method to get read-only About property }
procedureDummy(Ignore: ShortString);
protected
{ Protected Activate method }
procedureActivate(GoActive: Boolean);
public
{ Public UUCode interface declaration }
procedureUUCode;
published
{ Published design declarations }
propertyAbout: ShortString readFAbout writeDummy;
propertyActive: Boolean readFActive writeActivate;
propertyAlgorithm: TAlgorithm readFalgorithm writeFAlgorithm;
propertyFileMode: Word readFFileMode writeFFileMode;
propertyHeaders: Boolean readFHeaders writeFHeaders;
propertyInputFile: TFileName readFInputFileName writeFInputFileName;
propertyOutputFile: TFileName readFOutputFileName writeFOutputFileName;
propertyUnixCRLF: TUnixCRLF readFUnixCRLF writeFUnixCRLF;
published
{ Published Event property }
propertyOnProgress: TProgressEvent readFOnProgress writeFOnProgress;
end{TUUCode};
1.1.6. Свойства
TUUCode компонент имеет восемь опубликованных свойств (мы здесь опустим описание обработчиков событий):
Свойство Aboutсодержит информацию о правах и версии.
Свойство Activeможет использоваться для вызова преобразования UUCode во время разработки (design time), подобно свойству Active у TTables и Tquery компонент.
Свойство Algorithmсодержит информацию об алгоритме кодирования для метода UUCode. Реализованы следующие алгоритмы:
· filecopy – простое копирование файла InputFile в файл OutputFile
· uuencode – копирование файла с помощью алгоритма uuencode из файла InputFile и генерация файла OutputFile
· uudecode – копирование файла с помощью алгоритма uudecode из файла InputFile (и генерация файла OutputFile, если не используется Headers)
· xxencode – копирование файла с помощью алгоритма xxencode из файла InputFile и генерация файла OutputFile
· xxdecode – копирование файла с помощью алгоритма xxdecode из файла InputFile (и генерация файла OutputFile, если не используется Headers)
· Base64encode – копирование файла с помощью алгоритма Base64 encode InputFile и генерация файла OutputFile
· Base64decode – копирование файла с помощью алгоритма Base64 decode InputFile (и генерация файла OutputFile, если не используется Headers)
Свойство FileModeсодержит шестнадцатеричное значение режима файла (обычно 0644 или 0755). Заметим, что режим задается с помощью десятичных цифр.
Свойство Headersможет быть использовано для указания должны или нет использоваться заголовки begin-end в алгоритме кодирования или ожидаются в алгоритме декодирования. Значение по умолчанию True.
Свойство InputFileсодержит имя входного файла для кодирования/декодирования.
Свойство OutputFileсодержит имя выходного файла, в который будет записан результат кодирования. Заметим, что свойство OutputFile игнорируется при декодировании, если входной файл имеет заголовки, которые определяют имя файла для декодирования.
Свойство UnixCRLFиспользуется для указания разделителей строк специфичных для Unix систем, только Line Feed (перевод строки) или DOS/Windows, где используется пара Carriage Return/Line Feed (возврат каретки/ перевод строки). По умолчанию CRLF, но как минимум вы имеете возможность кодировать и декодировать файлы для Unix систем.
1.1.7. Методы
Компонент TUUCode имеет три метода; один public конструктор, один protected метод и один public метод:
Конструктор Createиспользуется для создания компонента и инициализации свойств ао умолчанию (default) для Active, FileMode, Headers и About.
Метод Activateиспользуется для вызова метода UUCode во время разработки, когда вы изменяете состояние свойства в True. При необходимости вы можете вызвать этот метод напрямую, так как это проще вызова метода UUCode.
Метод UUCodeэто метод, в котором в действительности производится кодирование/декодирование входного файла (InputFile), базируясь на состоянии других свойств компонента TUUCode.
1.1.8. События
Компонент TUUCode имеет только одно такое свойство:
Событие OnProgressможет использоваться как callback функция, позволяющая компоненту TUUCode выдавать текущий процент обработки входного файла. Использовать эту информацию вы можете с компонентами 16-битным TGauge или 32-битным TprogressBar, для примера показывая прогресс выполнения кодирования/декодирования от 0 до 100%.
Читать дальшеИнтервал:
Закладка: