Форум 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. ;)


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

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