Цель создания С++ была в том, чтобы пользователь мог определить новые типы данных,
работа с которыми была бы столь же удобна и эффективна как и со встроенными типами. - Бьерн Страуструп
Наши друзья: (очень рекомендую подписаться на эти рассылки!)
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;
Кнопка 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 Если будут вопросы, пишите на мыло.
А теперь моя программка NumText.
Собственно, рассказывать я ничего на этот раз не буду. И комментировать тоже - только запутаю код.
Программа написана на Turbo Pascal с использованием моего модуля URiS.tpu (из него берутся всего две функции StrToInt() и IntToStr(), он есть на сайте), но её легко портировать на Delphi, как консольное приложение.
Смотрите программу и наслаждайтесь чистотой кода!
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;
Все вопросы и пожелания ко мне, т.е. ведущему рассылки, прошу слать на e-mail: urisff@inbox.ru
Перепубликация допускается только с моего разрешения.
В случае, если вы будете использовать приведённые в этой рассылке коды, не забудьте сделать ссылку на мой сайт.