Читаем Советы по Delphi. Версия 1.4.3 от 1.1.2001 полностью

Имена файлов будут вводится либо вручную, либо из диалога (double-click на поле ввода edit), причем в edit1.text должно лежать имя входного файла, в edit2.text — выходного. По нажатии кнопки пойдет процесс, который завершится сообщением "DONE."

Всего хорошего.

P.S. Функция toanysys обнаружена в книге "Для чего нужны и как работают персональные ЭВМ" от 1990 г. Там она присутствует в виде программы на BASIC'e.

P.P.S. Для стимулирования фантазии читателей "Советов…" высылаю так же мессагу из эхи, на основе которой я сваял свое чудо.

Файл Unit1.pas

//UUE кодирование

unit Unit1;

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,ExtDlgs, StdCtrls;

type TForm1 = class(TForm)

 Button1: TButton;

 Edit1: TEdit;

 Edit2: TEdit;

 OpenDialog1: TOpenDialog;

 SaveDialog1: TSaveDialog;

 procedure Edit1DblClick(Sender: TObject);

 procedure Edit2DblClick(Sender: TObject);

 procedure Button1Click(Sender: TObject);

private

  { Private declarations }

public

  { Public declarations }

end;

var Form1: TForm1;

implementation

{$R *.DFM}

const

 ssz = (High(Cardinal) - $F) div sizeof(byte);//эта константа используется при выделении памяти

 p: string = '0123456789ABCDEF';//эта константа используется функцией toanysys

//выбор входного файла

procedure TForm1.Edit1DblClick(Sender: TObject);

begin

 if opendialog1.execute then edit1.text:= opendialog1.filename;

end;

//выбор выходного (UUE) файла

procedure TForm1.Edit2DblClick(Sender: TObject);

begin

 if savedialog1.execute then edit2.text:= savedialog1.filename;

end;

//выделение подстроки

function mid(s: string; fromc, toc: byte): string;

var

 s1: string;

 i : byte;

begin

 s1:= '';

 for i:= fromc to toc do s1:= s1+s[i];

 mid:= s1;

end;

//перевод числа (a) из десятичной системы в другую

//с основанием (r)

function toanysys(a, r: byte): string;

var

 s, k : string;

 n,m,i : byte;

begin

 s:='';

 m:= 1;

 while m<>0 do begin

  m:= a div r;

  n:= a-m*r+1;

  k:= p[n];

  s:= k+s;

  a:= m;

 end;

 //добавляет незначащие нули

 for i:=1 to 8-length(s) do s:='0'+s;

 toanysys:= s;

end;

//перевод 6-разрядного числа из двоичной системы в десятичную

//двоичное число подставляется в виде строки символов

function frombin(s: string): byte;

var i, e, b: byte;

begin

 b:= 0;

 for i:=1 to 6 do begin

  e:= 1 shl (6-i);

  if s[i]='1' then b:= b+e;

 end;

 frombin:= b;

end;

//непосредственно кодирование

type tcoola = array [1..1] of byte;

pcoola = ^tcoola;

procedure TForm1.Button1Click(Sender: TObject);

var

 inf: file of byte;

 ouf: textfile;

 uue: pcoola;

 b  : array[1..4] of byte;

 bin,t  : string;

 szf,oum,szl,szh,sxl,sxh,i, j  : longint;

begin

 {$I-}

 assignfile(inf, edit1.text); //входной файл

 reset(inf);

 szf:= filesize(inf);    //

 szh:= (szf*8) div 6;    //

 if szf*8-szh*6 = 0 then szl:= 0

 else szl:= 1;      //

 getmem(uue, szh+szl); //выделение памяти

 oum:= 1;

 while not(eof(inf)) do begin

  b[1]:= 0;

  b[2]:= 0;

  b[3]:= 0;

  b[4]:= 0;

  //чтение должно быть сделано посложнее,

  //дабы избежать "read beyond end of file"

Перейти на страницу:

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

А. Алексашин , Дэвид Томас , Эндрю Хант

Программирование / Книги по IT