Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Flash может больше. (http://www.flasher.ru/forum/showthread.php?t=65774)

riden 19.06.2005 06:36

Flash может больше.
 
Ниже представлен мой пример сохранения произвольного текста в произвольный файл из Flash. Для демонстрации выше сказанного, в моем примере пользователь имеет возможность сам вводить текст, который будет сохраняться. А так же пользователь может вводить имя, расширение файла, определять будет текст в файле дописываться или будет создаваться новый файл со вписанным в него текстом (переписывание). Так же пользователь может выбирать: будет файл сохраняться в папке fscommand (по умолчанию) или в другом месте на жестком диске (тут есть ограничения: названия каталогов в пути не должны содержать пробелов и символов кириллицы).

Для тех кто не понимает что это значит, объясню:
1)Возможность передавать параметры bat файлам или java script файлам (используя WSH) из Flash. Думаю не надо объяснять какие широкие возможности это раскрывает.
2)Возможность создания собственных редакторов, типов файлов (скажу только, что для этого используются команды Assoc и Ftype).
3)Ну и, разумеется, сохранение любого объема любых текстовых символов в файле на жестком диске.

P.S.: сначала скачайте, а потом я объясню как я это сделал, если потребуется.

Скачать - по ссылке:
Clb2txt4.exe - 793 кб

Ostgur 19.06.2005 12:44

Ну-ка колись, как это сделал, давно так хотел, вот только область в jpg можно?

Ostgur 19.06.2005 13:29

Код:

fscommand("exec", "ClrClb.exe");
fscommand("allowscale", "false");
var echo;
var inn;
var point;
var place;
place = "";
echo = "echo ";
inn = " >> ";
point = ".";
inn1 = new Object(this.Дописать);
inn1.click = function ()
{
    inn = ">>";
};
inn1.addEventListener("click", inn1);
inn2 = new Object(this.Переписать);
inn2.click = function ()
{
    inn = ">";
};
inn2.addEventListener("click", inn2);
place1 = new Object(this.в_папку_fscommand);
place1.click = function ()
{
    placeHD_txt.text = "";
};
place1.addEventListener("click", place1);
place2 = new Object(this.Указать_место );
place2.click = function ()
{
    placeHD_txt.text = placeHD_txt.text;
};
place2.addEventListener("click", place2);
this.createTextField("out_txt", this.getNextHighestDepth(), 10, 50, 430, 250);
out_txt.multiline = true;
out_txt.border = true;
out_txt.type = "input";
this.createTextField("name_txt", this.getNextHighestDepth(), 63, 332, 100, 20);
name_txt.multiline = true;
name_txt.border = true;
name_txt.type = "input";
this.createTextField("expan_txt", this.getNextHighestDepth(), 133, 355, 30, 20);
expan_txt.multiline = true;
expan_txt.border = true;
expan_txt.type = "input";
this.createTextField("placeHD_txt", this.getNextHighestDepth(), 217, 370, 220, 20);
placeHD_txt.multiline = true;
placeHD_txt.border = true;
placeHD_txt.type = "input";
this.gg.onRelease = function ()
{
    System.setClipboard(echo + out_txt.text + inn + placeHD_txt.text + name_txt.text + point + expan_txt.text);
    fscommand("exec", "Clb2bat.exe");
};

Вот код, но вот только как в jpg сохранить незаню! =(

Friday13 19.06.2005 17:39

гы:) стока мучений?;) есть интересная коммандочка Mmsave :) . народ, а под браузеры слабо сейвить? кнешна слабо. вот подождем 8 флэш и тада будет не слабо;)

riden 19.06.2005 17:48

Цитата:

Сообщение от Friday13
гы:) стока мучений?;) есть интересная коммандочка Mmsave :) . народ, а под браузеры слабо сейвить? кнешна слабо. вот подождем 8 флэш и тада будет не слабо;)

Friday13, все существующие на Flash способы сохранения изобилуют недостатками. PHP -MySQL, Shared Object, Local Connection, fscommand во flash 5,... все отстой. Почитай инфу.
//этот вырванный код - код одного кадра и тем более с ошибками; да и не в коде сдесь дело

Friday13 19.06.2005 19:29

Гы.. сенкс. Начитался уж;) даже AsNative() Начинаю пользоваться, чтобы код никто взломать не думал:)

В 8 флэше обещали открыть доступ к чтению инфы на локальных дисках и все такое:) Ну макромедия уж давно презентует презентует да никак не выпрезентуется:)

riden 19.06.2005 19:52

Цитата:

Сообщение от Ostgur
Ну-ка колись, как это сделал, давно так хотел, вот только область в jpg можно?

Итак, принцип в следующем. В папке fscommand лежит две программы написанные мною на Delphi 7:
1)Clb2bat.exe – эта программа при запуске записывает текущее содержание буфера обмена в файл system.bat.
2)ClrClb.exe – программа, которая при запуске очищает буфер обмена. Дело в том, что при сохранении необходимо, чтобы буфер обмена изначально был чист, во избижании глюков с кириллицей (но это уже флэшевская трабла). В моем примере буфер очищается при запуске программы и при каждом сохранении.Что касается моего примера, то, в идеале, нужно было бы очищать буфер при каждой активации окна flash приложения; а так все равно возможны глюки.

Итак, вначале Flash запускает программу ClrClb.exe, которая очищает буфер. Затем, Flash заносит в буфер текст со следующей структурой:

echo твой_текст >>/> путь\ твой_текст_2.твой_текст_3 ,

где
● твой_текст – текст который будет записываться в файл;
● >>/> - добавить текст в уже существующий файл или создать файл и вписать в него текст;
● путь\ - необязательный параметр, место, куда будет сохраняться файл на жестком диске; по умолчанию сохраняется в ту же папку где находится bat файл;
● твой_текст_2 – имя файла;
● твой_текст_3 – расширение файла;
Следующий шаг: Flash запускает программу Clb2bat.exe, которая записывает данное содержание буфера в файл system.bat.
Ну и последний шаг: Flash запускает файл system.bat, который в соответствии с заданной ему командой записывает указанный пользователем текст в файл с указанными именем и расширением.

Если кого то все еще интересует исходник моего демонстрационного примера, вот он:
Скачать по ссылке:
Clb2txt_Final.fla

Ostgur 20.06.2005 01:24

огромное тебе спасибо, но мы читеры уже давно декомпилировали, но всё же, так оно ужобнее, разумеется авторсто за тобой! =)

Ostgur 20.06.2005 16:51

А не легче юзать ActiveX в самом html:
Цитата:

<script>
function writetext(texts)
{
var a, b;
a = new ActiveXObject("Scripting.FileSystemObject");
b = a.CreateTextFile("c:\\test.txt", true);
b.WriteLine("Ostgur.") ;
b.WriteBlankLines(3) ;
b.Write (texts);
b.Close();
}
</script>
Структура на fopen(); в PHP сильно похожа, да и кода меньше!

riden 22.06.2005 00:43

Этот код должен в HTML лежать? Тогда у меня ничего не получается. :( В любом случае, ведь нужно определять сохроняемый текст (как и все остальные атрибуты) из Flash, иначе теряется всякая произвольность. Так можно и просто Bat файл создать, который будет вызываться из Flash:
Код:

echo текст > c:\test.txt
Код еще короче! :D Но теряется всякая произвольность, интерактивность для Flash. ;)

Ostgur 22.06.2005 01:19

Ты кажись функцию саму забыл вызвать, напиши где-нить после body потом
Код:

<a href="" onMouseClick="writetext('ostgur')">LOL</a>

riden 22.06.2005 01:46

Честное слово не работает. При клике просто открывается диск С:\, и никакой файл test.txt там не появляется. Неважно. Ты скажи мне, есть какие небудь способы передовать параметры из Flash в HTML ( без серверных скриптов, PHP - My SQL мы уже знаем, это неподходит)? Иначе просто повторюсь...

...В любом случае, ведь нужно определять сохроняемый текст (как и все остальные атрибуты) из Flash, иначе теряется всякая произвольность. Так можно и просто Bat файл создать, который будет вызываться из Flash:

Код:

echo текст > c:\test.txt
Код еще короче! Но теряется всякая произвольность, интерактивность для Flash.

Ostgur 22.06.2005 01:59

Юзай Куки, иначе как не знаю или жди, как и я, Flash намбер 8!

riden 22.06.2005 04:08

Цитата:

Сообщение от Ostgur
А не легче юзать ActiveX в самом html:
Цитата:
<script>
function writetext(texts)
{
var a, b;
a = new ActiveXObject("Scripting.FileSystemObject");
b = a.CreateTextFile("c:\\test.txt", true);
b.WriteLine("Ostgur.") ;
b.WriteBlankLines(3) ;
b.Write (texts);
b.Close();
}
</script>
Структура на fopen(); в PHP сильно похожа, да и кода меньше!


Как это кода меньше?

Даже если некий документ Save.html, содержащий этот код, сохраняет текст в файл (у меня нихрена не получается), то этот документ соответствует, по функциям, bat файлу Save.bat, содержащему код:
Код:

echo ostgur > c:\test.txt
//У меня в примере такой файл - system.bat; и тут все четко работает, сразу при запуске

А теперь посмотрим на размеры:
Save.html - 566 байт;
Save.bat - 25 байт;

Ну, что теперь скажешь. ;)

Что касается передачи параметров, то я придлажил, в примере, хороший вариант использования буфера обмена. И для передаси параметра bat файлу, достаточно двух строк кода:
Код:

System.setClipboard(echo текст > имя.расширение);
fscommand("exec","Clb2bat.exe");

Если говорить про мой пример (первое сообщение топика), то в, нем я сторался продемонстрировать все возвозможности сохранения текста в интерактивном виде. Этим и объясняется такая нагроможденность кода.

P.S: Зря что ли я так распинался объясняя принципы моего примера (см. пред. страницу). Все равно меня не понимают. :(
P.S(2):скачать пример и исходник можно на предыдущей странице

.

Ostgur 22.06.2005 04:22

да я и не спорю, но там нужны ещё и внешние файлы, а в моём примере нет, и у тебя этот способ только на приложении работает!

riden 22.06.2005 04:31

У тебя в примере отсутствует возможность передовать параметры. В таком случае возвращаемся назад, чем хуже один bat файл.

Кстати, ты мог бы скинуть свой готовый HTML, у меня ничего не получается. Может что делаю не так.

Ostgur 22.06.2005 04:36

Вложений: 1
лови! ;) :)

riden 22.06.2005 04:51

Код:

у тебя этот способ только на приложении работает!
Дело в том, что я сохраняю текст из Flash, а у тебя один HTML. Но чтобы запускать этот HTML, тебе тоже понадобится приложение.

Ostgur 22.06.2005 10:41

Ну и что, зато на web можно легко функцию вызвать даже из того же Flash, тем паче, что он приложение в кэше создаёт, а не на самом сервере!

riden 22.06.2005 17:48

Тогда уж лучше использовать Shared Object, если говорить про web. Для web существует масса других способов сохранения. Все это уже обсуждалось и выглядит бонально. А мне надоело объеснять тебе эти вещи. Ведь имено недостатки использования Shared Object локально, побудили меня сделать этот пример. Мне казалось что это понятно. Тем более, что толку вызывать HTML, если ты не можешь передавать ему информацию для сохранения из Flash.

Повторяю мой пример для локального использования, для локальных приложений, а не для web.

hamMElion 22.06.2005 22:42

все супер! это очень поможет при разработке одного приложения, авторство сохраню, спасибо

unlexx 29.06.2005 15:08

http://www.northcode.com/swfstudio/index.html

Уверен это поможет для Stand-Alone приложений :)

Буньков Максим 29.06.2005 19:28

спору нет, респект!!!

digdig 29.06.2005 21:40

а вот посмотрите этот пример
 
Сохраняет новые записи, редактирует, стирает и всё в одном файле без дополнений

Пример

riden 29.06.2005 22:24

Цитата:

Сообщение от digdig
Сохраняет новые записи, редактирует, стирает и всё в одном файле без дополнений

Пример

Блин... Ну зачем же нам Shared Object. Что нового ты внес своим примером? Ты пишешь не в тему. Название топика: Flash может больше. Поэтому я так назвал тему со своим примером. Мало того, что Shared Object имеет кучу недостатков, так он еще и не позволяет делать того о чем я писал в начале топика:
Цитата:

Для тех кто не понимает что это значит, объясню:
1)Возможность передавать параметры bat файлам или java script файлам (используя WSH) из Flash. Думаю не надо объяснять какие широкие возможности это раскрывает.
2)Возможность создания собственных редакторов, типов файлов (скажу только, что для этого используются команды Assoc и Ftype).
3)Ну и, разумеется, сохранение любого объема любых текстовых символов в файле на жестком диске.

Atin 21.07.2005 11:09

не могу скачать...

Смольный (Smolniy) 21.07.2005 19:47

Ценно, ценно. Но напиминаю, что существует swf studio, позволяющая сделать все в одном флаконе. Также есть вариант с работой вручную с delphi, c++ или иным билдером и Shockwave flash active-x элементом, что дает возможности пракрически неограниченные.
Данный же вариант интересен как готовое бесплатное решение. :)

Atin 22.07.2005 08:17

Не могу скачать http://fa-flashworld.narod.ru/source...u/Clb2txt4.rar

Den0k 22.07.2005 22:48

про Swf Satudio
 
раз уж речь зашла о SWf Studio кто знает где достать крэк (s/n)
для SWf Studio v3 ?

Vovec 25.07.2005 18:53

:cool: было уже... http://www.flexilight.ru/other/Save.zip

меню тоже вроде нельзя убрать - оказывается все просто (в Дельфях).

Stefan_ 06.08.2005 14:34

нюансы публикации
 
Все клево работает. только вот вопрос немного в сторону:
как удалось сделать ехе-шку в 7 версии флеша размером
520кб, когда сам плеер 7 версии больше 900кб?

большая просьба просветить.

riden 08.08.2005 10:01

Цитата:

Сообщение от Stefan_
Все клево работает. только вот вопрос немного в сторону:
как удалось сделать ехе-шку в 7 версии флеша размером
520кб, когда сам плеер 7 версии больше 900кб?

большая просьба просветить.

The Ultimate Packer for eXecutables(upx) - компрессия exe-файлов

P.S: Кроме того существует еще и Jugglor, который также хорошо компрессирует приложения (только Flash:swf or exe), и много других программ.

Bad-cluster 16.08.2005 15:37

Цитата:

Сообщение от Den0k
раз уж речь зашла о SWf Studio кто знает где достать крэк (s/n)
для SWf Studio v3 ?

Поддерживаю просьбу!!! Помогите найти! уж оч нужно найти кряк,или серийник!!!

depth 14.10.2005 21:34

а во Flash MX работает эта команда?:
System.SetClipboard("мойТекст");

Ion 14.10.2005 21:38

Не знаю, как в МХ, а в МХ 2004 работает

depth 14.10.2005 21:46

у меня не помещается ничего в буфер
хотя синтаксис соблюден:
System.setClipboard(string:String) : Boolean

Ion 14.10.2005 22:38

А разве не Void? Ты конкретный пример, как ты его юзаешь дай, шаблон я видел и у мя всё работает! У тя Flash или Flash Professional?

depth 14.10.2005 22:51

В первом и единственном кадре:

// очищаем буфер
fscommand("exec", "fscommand\\clear.exe");

//складываем в буфер строку zak
zak = "mamamylaramu";
k1 = System.setClipboard(zak);

//проверяем как прошла операция по складированию в буфер
if (k1) {k = "da";} else {k = "net";};

//то что теперь в буфере переписываем в текстовый файл
fscommand("exec", "fscommand\\bm.exe");

====================
проверка на k1 дает отрицание


Файлы bm.exe и clear.exe работают точно. А вот еще! а ведь даже очистки буфера не происходит, т.е типа clear.exe не запустился???

P.S. я только перехожу на MX... все было на 5.. но там обнаружился глюк со звуком - не хочет пятый плеер правильно обрезать звук в начале :(

Ion 14.10.2005 23:30

А нафик буфер чистить?! И зачем проверять правильность выполнения? Я эт делаю так System.setClipboard("blablabla"); и всё работает

depth 14.10.2005 23:58

да, это не обязательно... это так пытаюсь исключить всякие ошибки! и проверки нужны для трассинга


Часовой пояс GMT +4, время: 14:46.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.