Отправляет email-рассылки с помощью сервиса Sendsay

Web-Мастеринг - с нуля до профи

  Все выпуски  

нет.


Информационный Канал Subscribe.Ru


Познавательное программирование



Выпуск 5


Здравствуйте, Уважаемые подписчики!

Цель создания С++ была в том, чтобы пользователь мог определить новые типы данных,
работа с которыми была бы столь же удобна и эффективна как и со встроенными типами.
- Бьерн Страуструп


Наши друзья: (очень рекомендую подписаться на эти рассылки!)

comp.soft.prog.programmtutors - Рассылка "Уроки по программированию (от Ассемблера до Делфи)". Вы хотите начать программировать, но не знаете как. Тогда эта рассылка для вас! В ней публикуются уроки для изучения языков таких как Ассемблер, С, Паскаль, Delphi, Java, Basic.

rest.interesting.znakomstvonew - Рассылка "Как познакомиться?" - обсуждаются различные проблемы взаимоотношений, имеется клуб знакомств и дискуссии с психологом.


В этом юбилейном выпуске рассылки вы увидите две статьи:
1. первая про Flash-плейер на Delphi от CJ,
2. вторая - моя старая открытая разработка, которая переводит числа вида "123" в вид "сто двадцать три".



1.

Предлагаю вашему вниманию статью CJ о том, как создать свой Flash-плеер на основе движка ShockwaveFlash.

(Кстати, советую брать пример с CJ - здесь каждый может опубликовать свою статью и при этом сделать ссылку на свой сайт. К тому же прямая ссылка на исходники необязательна. Моё мыло внизу - пишите, договоримся.)

Привет всем!

Когда-то мне понадобилось просмотреть большой Flash-ролик, а именно то, что было в конце. Универсальных средств для этого у меня не было, меня даже не устраивал IE, так как у него нет полосы прокрутки. Однако Flash-плэйер можно написать самому с помощью Delphi! Об этом то я и расскажу.

Для начала создайте новый проект. Далее надо установить компонент Shockwave Flash (если он конечно не установлен), а делается это так:
1) Кликайте по пункту Component, далее Import ActiveX Control.
2) В списке необходимо выбрать Shockwave Flash (Version 1.0).
3) Нажать кнопку Install, в открывшемся окне нажать ОК.
4) Затем Yes и ОК.

Теперь у вас на закладке компонентов должен появится комппонент Shockwaveflash. Это ActiveX компонент. ActiveX - это технология для программеров, которая позволяет добавлять в свои программы компоненты, присутствующие в Windows и использовать их по своему усмотрению. Главное преимущество этой технологии в том, что при ее использовании совершенно неважно то, на каком Windows-языке (и в какой среде быстрой разработки приложений) вы пишете - Delphi, Visual C++ или Visual Basic. Но при этом для того, чтобы использовать компонент, необходимо чтобы сама среда быстрой разработки поддерживала импорт этого компонента. Дельфи этот импорт поддерживает на ура, а вот Visual Basic... Здесь всё ясно.
В следующей статье я расскажу как все подобные компоненты устанавливаются.

После установки ShockwaveFlash, его надо поместить на форму и придать удобные размеры.
Для начала измените свойство Name на более удобное flash.
Рассмотрим основные свойства нашего компонента, которые пригодятся для работы в программе:

1) Movie: WideString; //Загружает ролик.
2) Play; //Проигрывание ролика.
3) Stop; //Стоп.
4) Rewind; //Перемотка.
5) FrameNum: Integer;
6) GoToFrame(FrameNum: Integer); //Переход на нужный фрейм. (фрейм от англ. "frame", кадр - прим. ред.)
7) TotalFrame: Integer; //Возвращает количество всех фреймов в ролике.
8) Quality2: WideString; //Изменяет качество проигрываемого ролика.
9) Menu: WordBool; //Отключает меню великой Макромедии.
10) BackgroundColor: Integer; //Цвет фона ролика.

Змените заголовок формы например на Flash-Player.
Кинем на форму 6 кнопок и по порядку изменяйте свойство Name у кнопок на
1) Open;
2) Rewind;
3) Reset;
4) Stop;
5) Continue;
6) Exit;

Измените свойство Enabled на false, у кнопок 2-5.
Это их неактивными при старте программы.
Расположите их на форме по вашему вкусу.
На закладке Dialogs выбирите OpenDialog, и поместите его на форму.
Сразу настройте заголовок окна свойством Title, и фильтр файлов свойством Filter.
Потом поместите на форме компонент ScrollBar.
Измените его Name на Scroll.

Теперь приступим к написанию кода.


Кнопка Open:


procedure TForm1.OpenClick(Sender: TObject);
begin
If opendialog1.Execute then flash.Movie:=opendialog1.FileName else exit; //Открытие файла
flash.Play; //Начало проигрывания
//Включение кнопок...
rewind.Enabled:=true;
reset.Enabled:=true;
continue.Enabled:=true;
stop.Enabled:=true;
end;



Кнопка Rewind:


procedure TForm1.RewindClick(Sender: TObject);
begin
flash.Rewind; //Перемотка
flash.Play; //Проигрывание
end;



Кнопка Reset:


procedure TForm1.ResetClick(Sender: TObject);
begin
flash.Rewind; //Перемотка
opendialog1.FileName:=''; //Вовремя изменяем имя файла
//Выключение кнопок...
rewind.enabled:=false;
reset.enabled:=false;
stop.enabled:=false;
continue.enabled:=false;
scroll.Position:=0; //Обнуляем позицию полосы прокрутки
end;



Кнопка Stop:


procedure TForm1.StopClick(Sender: TObject);
begin
flash.Stop; //Останавливаем
continue.Enabled:=true; //Включаем кнопку
stop.Enabled:=false; //Выключаем кнопку
end;



Кнопка Continue:


procedure TForm1.ContinueClick(Sender: TObject);
begin
flash.Play; //Проигрываем
continue.enabled:=false; //Отключаем кнопку
stop.Enabled:=true; //Включаем кнопку
end;



Кнопка Exit:


procedure TForm1.ExitClick(Sender: TObject);
begin
close; //Выход
end;



Полоса прокрутки Scroll:


procedure TForm1.ScrollChange(Sender: TObject);
begin
scroll.Max:=flash.TotalFrames; //Максимальное значение равно общему количеству фрейма
flash.GotoFrame(scroll.Position); //Отправляем на указанный фрейм
flash.Play; //Проигрываем
If scroll.Max=scroll.Position then flash.FrameNum:=scroll.Max; //Если макс. значение равно текущей позиции тогла текущий фрейм равен максимальному значению
end;



Форма Form1:

(Этот код добавит в программу полезную вещь: при открытии файла по двойному щелчку (если пользователь укажет что открывать надо этой программой) она начинает его проигрывать.)

procedure TForm1.FormShow(Sender: TObject);
begin
If ParamCount<>0 then //Если количество параметров коммандной строки не равны нулю тогда
Flash.Movie:=ParamStr(1); //Загрузка файла
if flash.movie='Window' then exit; //Если свойство равно Window, выходим из процедуры
//Включение кнопок...
rewind.Enabled:=true;
reset.Enabled:=true;
continue.Enabled:=true;
stop.Enabled:=true;
end;


Это основное из чего можно сделать свой собственный Flash-плэйер.
Сейчас я расскажу о трех свойствах, которые не были использованы в программе.

1) Quality принимает значения в виде строки Low, Medium, High. Это параметры качества.
2) Menu принимает значения true или false. Оно отключает меню Макромедии.
3) BackgroundColor принимает значения -1 и 1. -1 это белый фон, а 1 - черный.
Ну вот и все.
Скачать исходные тексты программы можно по этому адресу: http://www.karatetski.narod.ru/flash.zip
Если будут вопросы, пишите на мыло.

Каратецкий Кирилл aka CJ
karatetski@tut.by
http://www.karatetski.narod.ru
ICQ: 221468417


< Статью редактировал автор рассылки >


2.

А теперь моя программка NumText.

Собственно, рассказывать я ничего на этот раз не буду. И комментировать тоже - только запутаю код.
Программа написана на Turbo Pascal с использованием моего модуля URiS.tpu (из него берутся всего две функции StrToInt() и IntToStr(), он есть на сайте), но её легко портировать на Delphi, как консольное приложение.
Смотрите программу и наслаждайтесь чистотой кода!

Uses crt,uris;
{Автор: Набатников Иван}
{site: http://NEWFF.narod.ru}
{e-mail: URISFF@inbox.ru}

function NumText(s: string): string;
const
hun: array[1..9] of string[20] = ('сто','двести','триста','четыреста','пятьсот','шестьсот','семьсот','восемьсот','девятьсот');
dec: array[1..9] of string[20] = ('десять','двадцать','тридцать','сорок','пятьдесят',
'шестьдесят','семьдесят','восемьдесят','девяносто');
dt: array[11..19] of string[13] = ('одиннадцать','двенадцать','тринадцать','четырнадцать','пятнадцать',
'шестнадцать','семнадцать','восемнадцать','девятнадцать');
t: array[1..9] of string[20] = ('одна','две','три','четыре','пять','шесть','семь','восемь','девять');
tc: array[1..9] of string[20] = ('тысяча','тысячи','тысячи','тысячи','тысяч','тысяч','тысяч','тысяч','тысяч');
m: array[1..9] of string[20] = ('один','два','три','четыре','пять','шесть','семь','восемь','девять');
mc: array[1..9] of string[20] = ('миллион','миллиона','миллиона','миллиона','миллионов',
'миллионов','миллионов','миллионов','миллионов');
ma: array[1..9] of string[20] =
('миллиард','миллиарда','миллиарда','миллиарда','миллиардов','миллиардов','миллиардов','миллиардов','миллиардов');
mt: array[1..9] of string[20] =
('триллиард','триллиарда','триллиарда','триллиарда','триллиардов','триллиардов','триллиардов','триллиардов','триллиардов');
var
a: array[1..10] of string[3];
n: integer;
z: string;

procedure non;
var
r,f: word;
begin
f:=3-(Length(s) mod 3);
If f=3 then f:=0
else
for r:=1 to f do s:='0'+s;
end;

procedure fill;
var
i: integer;
begin
non;
for i:=0 to Length(s) div 3 do
a[i+1]:=copy(s,i*3+1,3);
n:=Length(s) div 3;
end;

function on3(v: string; num3: byte): boolean;
var
k: integer;
begin
on3:=false;
for k:=1 to 3 do
If v[k]<>'0' then
begin
If k=1 then z:=z+hun[StrToInt(v[k])]+' ';
If k=2 then
If (v[2]='1') and (v[3]<>'0') then
begin
z:=z+dt[StrToInt(v[k]+v[k+1])]+' ';
on3:=true;
exit;
end
else
begin
z:=z+dec[StrToInt(v[k])]+' ';
end;
If k=3 then
If num3=1 then
z:=z+t[StrToInt(v[k])]+' '
else
z:=z+m[StrToInt(v[k])]+' ';
end;
If v[3]='0' then on3:=true;
end;

procedure intext;
var
i: integer;
begin
for i:=1 to n do
begin
If on3(a[i],n-i) then
begin
If iIf a[i]<>'000' then
begin
If n-i=1 then z:=z+'тысяч ';
If n-i=2 then z:=z+'миллионов ';
If n-i=3 then z:=z+'миллиардов ';
If n-i=4 then z:=z+'триллиардов ';
end;
end
else
begin
If iIf n-i=1 then z:=z+tc[StrToInt(a[i][3])]+' ';
If n-i=2 then z:=z+mc[StrToInt(a[i][3])]+' ';
If n-i=3 then z:=z+ma[StrToInt(a[i][3])]+' ';
If n-i=4 then z:=z+mt[StrToInt(a[i][3])]+' ';
end;
end;
end;

begin
z:='';
fill;
intext;
NumText:=z;
end;


begin
Writeln(NumText('123123123123123'));
end.
Аналогичный исходный код можно найти по этому адресу: http://newff.narod.ru/pascal/numtext.rar

Уважаемые подписчики! Возможно кому-то из ваших знакомых приводимые здесь материалы будут интересны!
Отправить приглашение подписаться.

Все вопросы и пожелания ко мне, т.е. ведущему рассылки, прошу слать на e-mail: urisff@inbox.ru
Перепубликация допускается только с моего разрешения.
В случае, если вы будете использовать приведённые в этой рассылке коды, не забудьте сделать ссылку на мой сайт.

Удачи вам и лучшего настроения!


Ведущий рассылки:
Набатников Иван (urisff@inbox.ru)
http://newff.narod.ru/


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное