Чтение онлайн

ЖАНРЫ

Интернет решения от доктора Боба

Swart Bob

Шрифт:

(((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.

unit UUCode;

 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) }

constructor Create(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 }

procedure Dummy(Ignore: ShortString);

protected

{ Protected Activate method }

procedure Activate(GoActive: Boolean);

public

{ Public UUCode interface declaration }

procedure UUCode;

published

{ Published design declarations }

property About: ShortString read FAbout write Dummy;

property Active: Boolean read FActive write Activate;

property Algorithm: TAlgorithm read Falgorithm write FAlgorithm;

property FileMode: Word read FFileMode write FFileMode;

property Headers: Boolean read FHeaders write FHeaders;

property InputFile: TFileName read FInputFileName write FInputFileName;

property OutputFile: TFileName read FOutputFileName write FOutputFileName;

property UnixCRLF: TUnixCRLF read FUnixCRLF write FUnixCRLF;

published

{ Published Event property }

property OnProgress: TProgressEvent read FOnProgress write FOnProgress;

end {TUUCode};

1.1.6.

Свойства

TUUCode компонент имеет восемь опубликованных свойств (мы здесь опустим описание обработчиков событий):

Свойство About содержит информацию о правах и версии.

Свойство Active может использоваться для вызова преобразования UUCode во время разработки (design time), подобно свойству Active у TTables и Tquery компонент.

Свойство Algorithm содержит информацию об алгоритме кодирования для метода UUCode. Реализованы следующие алгоритмы:

· filecopy – простое копирование файла InputFile в файл OutputFile

· uuencode – копирование файла с помощью алгоритма uuencode из файла InputFile и генерация файла OutputFile

Поделиться с друзьями: