Ru-Board.club
← Вернуться в раздел «Программы»

» Autoplay Media Studio

Автор: GOOSE
Дата сообщения: 10.12.2007 11:24
sparrik
В чем у тебя дата? Откуда ее берем?
Посчитать количество дней до дня рождения не проблема:
Используем плагин DateDiff:

Код:
--Вычисляем, сколько дней осталось до дня рождения
-- Получаем текущую дату
sToday = System.GetDate(DATE_FMT_US);
-- день рождения будет 25 октября
-- считаем, сколько дней осталось
nDays = DateDiff.GetDifference(sToday, "10/25/2008");
Автор: Lexua
Дата сообщения: 10.12.2007 14:09
ZnakZodiak

Цитата:
рано обрадовался... с жесткого все грузилось в один фрейм, с CD получился облом... в чем грабли не пойму. Вернулся к многостраничности... буду много и нервно курить и думать...


Гм... А пути у тебя относительные? Вобще трудно что-то сказать в слепую
Автор: sparrik
Дата сообщения: 10.12.2007 15:40
GOOSE

Цитата:
Код:
--Вычисляем, сколько дней осталось до дня рождения
-- Получаем текущую дату
sToday = System.GetDate(DATE_FMT_US);
-- день рождения будет 25 октября
-- считаем, сколько дней осталось
nDays = DateDiff.GetDifference(sToday, "10/25/2008");


Это хорошо когда рождение было в этом году. Но допустим есть конкретная дата. 5 мая 2005 года. тогда будет уже не то.



Цитата:
Посчитать года тоже не проблема:

Код:
--ГОДОВЩИНЫ
--получаем текущий год
sTodayYear = System.GetDate(DATE_FMT_YEAR);
--допустим, год рождения 1970
sBirthYear = 1970
--переводим строки в цифры (если надо)
nTodayYear = String.ToNumber(sTodayYear);
nBirthYear = String.ToNumber(sBirthYear);
--вычисляем возраст
nAge = nTodayYear-nBirthYear
--показываем возраст, к примеру в заголовке
Label.SetText("Label1", nAge);


Тут тоже немного не то, даже если я родился в 70 году, то мне может быть щас 37 лет, а если я родился 20 декабря 70 годя, то мне уже будет не 37 лет.


Видимо нужно вначале вычислить правильно годовщину, сделав проверку на день и месяц. Потому же вычислять колличество дней до Дня РОждения. добавив к Др колличество лет и проделать первый пример. тогда видимо всЁ получиться
Автор: GOOSE
Дата сообщения: 10.12.2007 17:44
sparrik
Вот ты снова не ответил на мою просьбу...
Дай ТЗ, ёлы-палы!
Для того, чтобы не было
Цитата:
а если я родился 20 декабря 70 годя, то мне уже будет не 37 лет.
нужно использовать дату в юлианском формате!
Например, моя дата рождения 27.10.1970 в этом формате будет 2440887
В этом формате удобно проводить сравнения именно дат
Код простой:

Код: nJulianDate = DateDiff.GetJulian("10/27/1970")
Автор: sparrik
Дата сообщения: 10.12.2007 18:16
GOOSE

Цитата:
sparrik
Вот ты снова не ответил на мою просьбу...
Дай ТЗ, ёлы-палы!
Для того, чтобы не было


Нужно чтобы решение было универсальным, чтобы для любой даты рождения можно было подсчитать количество дней до неё и какова годовщина. в любом формате и любым способом ввода ДР.
Автор: GOOSE
Дата сообщения: 10.12.2007 21:18
sparrik
Я попробую еще раз...

Если ты хочешь, чтобы
Цитата:
в любом формате и любым способом ввода ДР
, то хочу тебя расстроить - не получится, ибо тогда приложению придется еще и "понимать" формат, колторый "любой"... Машине то ведь не все равно, 27/10/1970 или 27101970 или 1970.10.27 и так далее...
Так что отбрасывай эту мысль сразу.
Решение простое - давать приложению дату, которую оно понимает. Без разницы в каком! Главное - одинаковую
1. Допустим, мы договариваемся, что вводим дату в виде мм/дд/гггг.
2. Далее, для того, чтобы корректно сравнивать даты, переводим их в юлианский формат (это делает скрипт скрытно от пользователя)
3. Проводим вычисления дат в этом формате.
4. Полученные значения переводим в удобоваримый для пользователя григорианский формат.
5. Выводим результат.

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

ЗЫ Если будешь только так намеками спрашивать, то вряд ли дождешься ответа
Автор: sparrik
Дата сообщения: 10.12.2007 22:23
GOOSE
Я ни в коем случае нихочу тебя запутать или скрываю чтолибо от тебя. Я наооборот говоря что формат любой и способ ввода хотел облегчеть, чтобы не было рамок.
Попробую исправиться.
Сегодня я делаю проектик где собран ряд фоток и видео 4 людей. И хочу чтобы на главной странице под каждой фоткой была дата рождения, потом сколько дней осталось до ДР и какая годовщина будет ему. А примеро через две недели родиться племянник, ему я тоже буду делать диск, а дата рождения то не известна, поэтому я и говорил чтобы решение было универсально, для любой даты.В примере то можно использовать лубые даты, а потом просто поменять на нужную.
И говоря что формат ЛЮБОЙ я имел виду что любой для тебя, а не для машины, ну чтобы тебя не привязывать к чему то определЁнно.
Вроде бы щас выразился более понятно ... надеюсь что так
Автор: bigbrain
Дата сообщения: 12.12.2007 12:58
Доброе время суток. Помогите, пожалуйста, а то самому никак не справиться.

Общая задача - собрать все txt файлы и каждый вставить как один из параметров в CSV. CSV в дальнейшем импортируется на сайт.

1. Позволить пользователю выбрать папку, где у него храняться файлы
2. Получить список всех файлов в массив. Можно этого и не делать, а просто получить общее количество и потом их как-нибудь перебирать по очереди.

Цикл:
3. Извлечь содержимое первого файла и вставить в переменную.
4. Записать данные в тестовый файл с раширением CSV (строка, в которой в нужном месте вставлена эта переменная).
5. Повторить цикл до завершения списка файлов. После каждого шага дописывать новые строчки в созданный в шаге 4 файл, созданный после первого выполнения цикла.

Впринципе, сам процесс импорта текста и записи его в нужном виде в другой файл проблемы не представляет.
Только вот с циклами у меня плохо получается и не знаю как список файлов в массив получить
Автор: tavria2
Дата сообщения: 13.12.2007 00:29
2All
Применение к окну проекта тени в стиле XP. Требуется Windows XP и выше.
Window ShadowXP (am7).apz | зеркало [42.90 Кб].
Автор: bigbrain
Дата сообщения: 13.12.2007 09:13
Пример CSV
link_name,cat_id,link_desc,user_id,link_hits,link_votes,link_rating,link_featured,metakey,metadesc,internal_notes,address,city,state,country,postcode,telephone,fax,email,website,price

Заполненный
Sample import listing,0,sample description,,0,0,0,1,"Joomla!, Mosets Tree, directory extension",,,,,,,,,,support@mosets.com,http://www.mosets.com/,,sample text,http://www.mosets.com/tree/

Я думаю мы будут заполнять только первые несколько значений. Полученный из файла тест подставляется в поле description
Автор: tavria2
Дата сообщения: 13.12.2007 16:10
bigbrain
Возможно я не все правильно понял, но из вышеуказанных данных я представляю себе следующую картину.
Есть несколько папок - для каждого пользователя своя. В каждой папке есть текстовые файлы с жестко определенными именами и нужно информацию из этих файлов разместить в CSV-файле в виде значений разделенных запятыми, для каждого пользователя - новая строка в CSV-файле. Если я прав, тогда делаем следующее:

Создаем CSV-таблицу со значениями по умолчанию, вместо значений куда нужно подставлять данные из текствого файла - указываем имя файла.
С помощью диалогового окна выбираем папку пользователя с текстовыми файлами и получаем таблицу всех текстовых файлов находящихся в выбранной папке.
В цикле проверяем, совпадает ли какое-либо значение CSV-таблицы cо значением таблицы текстовых файлов, если совпадает, то заменяем значение CSV-таблицы данными из файла.
Формируем строку из измененной CSV-таблицы, используя в качестве разделителя - запятую.
Добавляем в конец файла полученную строку.

Все пункты повторяем для каждого пользователя.

Код: -- структура CSV со значениями по умолчанию, если значения берутся из файла,
-- тогда в качестве значения нужно указать имя этого файла.

tCSV = {"file1.txt",0,"file2.txt","",0,0,1,"\"Joomla!, Mosets Tree, directory extension\"","","","","","","","","","","","","",""}
cFolderCSV = "C:\\CSV\\"; -- папка размещения полученного CSV-файла
cFileNameCSV = "MyFile.csv"; -- имя полученного CSV-файла
cPath = Dialog.FolderBrowse("Выберите папку пользователя:", ""); -- путь к папке пользователя с txt-файлами
cSringCSV = ""; -- строка CSV
if (cPath ~= "CANCEL") then -- если не была нажата кнопка "ОТМЕНА"
tFiles = File.Find(cPath, "*.txt", false, false, nil, nil); -- получаем таблицу файлов пользователя (*.txt)
if (tFiles) then -- есть файлы
for n, cFileName in tFiles do -- перебираем в цикле имена файлов пользователя
for nIdx, cValueCSV in tCSV do -- перебираем в цикле значения CSV таблицы
if (cPath.."\\"..cValueCSV == cFileName) then -- если значение параметра CSV совпадает с именем файла
cValue = TextFile.ReadToString(cFileName); -- читаем файл в строку
tCSV[nIdx] = cValue; -- подставляем значение из файла вместо имени файла
end
end
end
for nIdx, cValueCSV in tCSV do -- перебираем в цикле значения измененной CSV таблицы
cSringCSV = cSringCSV..cValueCSV..","; -- строка для записи в CSV-файл
end
if (not Folder.DoesExist(cFolderCSV)) then -- если папка размещения CSV-файла не существует
Folder.Create(cFolderCSV); -- создаем папку для размещения CSV-файла
end
if (not File.DoesExist(cFileNameCSV)) then -- если CSV-файл не существует
TextFile.WriteFromString(cFolderCSV..cFileNameCSV, cSringCSV, false); -- создаем CSV-файл и записываеи строку
else -- если CSV-файл существует
TextFile.WriteFromString(cFolderCSV..cFileNameCSV, "\r\n"..cSringCSV, true); -- добавляем строку в конец CSV-файла
end
end
end
Автор: bigbrain
Дата сообщения: 13.12.2007 20:27
я себе не так представляю.
Расскажу более подробно.
Папка одна, количество файлов файлов заранее не известно, имена их тоже.
Можно конечно их переименовать по шаблонуи класть строго определенное количество в папку, но это не обоснованно усложнит весь процесс.
Про выбор папки от этого конечно можно отказаться. Пользователь один, просто была идея выбирать в какой именно папке хранятся файлы.
Поэтому первый пункт у меня такой:
1. Получение списка файлов и подсчет их количества.
2 Извлечь содержимое первого файла и вставить в переменную.
3. Записать данные в тестовый файл с раширением CSV (строка, в которой в нужном месте вставлена эта переменная).

Примерно так
Название, 0, ТУТ ТЕСТ ПЕРВОГО ФАЙЛА,,0,0,0,1,"Joomla!, Mosets Tree, directory extension",,,,,,,,,,support@mosets.com,http://www.mosets.com/,,sample text,http://www.mosets.com/tree
Автор: tavria2
Дата сообщения: 13.12.2007 21:20
bigbrain

Цитата:
Папка одна, количество файлов файлов заранее не известно, имена их тоже.

Если имена файлов не известны, как ты будешь определять какому названию соответствует какой файл?

Название, 0, ТУТ ТЕСТ ПЕРВОГО ФАЙЛА,,0,0,0,1, ...

Или имя файла и будет названием?
Автор: bigbrain
Дата сообщения: 13.12.2007 21:48
Да, с названием сложнее. Но это не столь важно. В крайнем случае правда можно название файла пока ставить.
Главное сейчас понять сам алгоритм.
Создать список файлов, вытянуть из каждого текст и записать в CSV
Автор: tavria2
Дата сообщения: 13.12.2007 23:12
bigbrain
Выбираем папку с текстовыми файлами и получаем таблицу файлов
В цикле делаем перебор имен файлов, создаем CSV-таблицу с пустыми значениями, заполняем CSV-таблицу только необходимыми значениями, формируем CSV-строку и добавляем ее в CSV-файл.

исправленно
Код: cFolderCSV = "C:\\CSV\\"; -- папка размещения полученного CSV-файла
cFileNameCSV = "MyFile.csv"; -- имя полученного CSV-файла

cPath = Dialog.FolderBrowse("Выберите папку:", ""); -- путь к папке с txt-файлами
if (cPath ~= "CANCEL") then -- если не была нажата кнопка "ОТМЕНА"
tFiles = File.Find(cPath, "*.txt", false, false, nil, nil); -- получаем таблицу txt-файлов
if (tFiles) then -- есть файлы
for n, cFileName in tFiles do -- перебираем в цикле имена файлов
tCSV = {}; -- создаем CSV-таблицу
nMaxValue = 23; -- кол-во значений в строке CSV-файла
for n = 1, nMaxValue do
tCSV[n] = ""; -- заполняем CSV-таблицу пустыми значениями
end
-- заполняем необходимые значения параметров CSV-таблицы
tCSV[1] = String.SplitPath(cFileName).Filename..String.SplitPath(cFileName).Extension; -- link_name (имя файла)
tCSV[2] = 0; -- cat_id
tCSV[3] = TextFile.ReadToString(cFileName); -- link_desc (текст из файла)
tCSV[5] = 0;
tCSV[6] = 0;
tCSV[7] = 0;
tCSV[8] = 1;
tCSV[9] = "\"Joomla!, Mosets Tree, directory extension\"";
tCSV[19] = "support@mosets.com";
tCSV[20] = "http://www.mosets.com/";
tCSV[22] = "sample text";
tCSV[23] = "http://www.mosets.com/tree/";

cStringCSV = ""; -- строка CSV
for nIdx, cValueCSV in tCSV do -- перебираем в цикле значения заполненной CSV-таблицы
cStringCSV = cStringCSV..cValueCSV..","; -- формируем строку для записи в CSV-файл
end
cStringCSV = String.Left(cStringCSV, String.Length(cStringCSV) - 1); -- убираем завершающую запятую

if (not Folder.DoesExist(cFolderCSV)) then -- если папка размещения CSV-файла не существует
Folder.Create(cFolderCSV); -- создаем папку для размещения CSV-файла
end
if (not File.DoesExist(cFolderCSV..cFileNameCSV)) then -- если CSV-файл не существует
TextFile.WriteFromString(cFolderCSV..cFileNameCSV, cStringCSV, false); -- создаем CSV-файл и записываеи строку
else -- если CSV-файл существует
TextFile.WriteFromString(cFolderCSV..cFileNameCSV, "\r\n"..cStringCSV, true); -- добавляем строку в конец CSV-файла
end
end
end
end
Автор: bigbrain
Дата сообщения: 13.12.2007 23:41
Не понятно выходит.
В файл записывается только содержимое последнего файла.
А так подход очень оригинальный, ни за чтобы бы не догадался так сделать. Сразу видно работу профессионала
Автор: tavria2
Дата сообщения: 13.12.2007 23:55
bigbrain

Цитата:
В файл записывается только содержимое последнего файла.

Странно, у меня записывает, как положено. Проверь, может ты чего-то подправил в коде не в ту сторону.

Добавлено:
Нашел ошибку в коде, но она врядли связана с твоей проблемой. Код поправил.
Автор: bigbrain
Дата сообщения: 14.12.2007 00:31
Нет, поставл кнопку и на кнопку код, ка положено.
Все правильно. Может у нас документы разные
Автор: tavria2
Дата сообщения: 14.12.2007 00:33
bigbrain
Возможно у тебя файлы описаний имеют разные расширения, а у меня в коде при получении списка файлов стоит маска *.txt, если есть русские имена файлов попробуй заменить английскими.
Автор: GOOSE
Дата сообщения: 14.12.2007 11:42
sparrik
Держи пример счетчика дат
Поковырялся на досуге
ЗЫ Логику лень было выдумывать, сделал просто но работоспособно

Birthday.apz [158 Кб].
Автор: sparrik
Дата сообщения: 15.12.2007 14:13
GOOSE
Спасибо огромное, попробывал, все так как мне надо
Автор: Bloodwin
Дата сообщения: 16.12.2007 03:55
Короче для начала всем хай )

у меня Autoplay Media Studio 7
короче одна проблема.
Нужно сделать чото типа "iframe", и чтобы когда мышку на кнопку наводишь в ифрейме (поле, окошко, как это еще назвать)писалось краткое описание. например. на кнопке написано "Microsoft Windows XP Professional". справа от него это самое окошко, и при наведении курсора на кнопку,Ю справа пишется типа "Новая версия винды, траляля, тополя.". ну короче смысл понятен.

Автор: GOOSE
Дата сообщения: 16.12.2007 15:00
Bloodwin
Статью читал?
Скорее всего, нет Там именно это и реализовывается в учебном примере.
Если же читал и еще есть вопросы - формулируй точнее
Автор: Bloodwin
Дата сообщения: 16.12.2007 15:08
хм... во первых там в примере помоему шестая версия.
как еще понятнее сформулировать - нинаю.
могу скинуть autorun, который я делал в другой проге, но и там есть свои минусы.
Автор: Zloy_Gelud
Дата сообщения: 16.12.2007 16:13
Bloodwin

Цитата:
во первых там в примере помоему шестая версия.

Седьмая версия пооддерживает все предыдущие версии, так что читаем статью..
Ну а если лень читать, то вот:
Вешаешь на On Enter кнопки:

Код: Paragraph.SetText("Paragraph2", "Новая версия винды, траляля, тополя.");    -- при наведении курсора выводим текст в объект Параграф
Автор: Bloodwin
Дата сообщения: 16.12.2007 23:29
спасибо. так как мне и нужно было. ну тогда еще один вопрос: теперь требуется, чтобы в Paragraph2 была еще и картинка. либо картинка в одном параграфе, а описание в другом.

Чето из меня скриптор плохой наверно поставил картинку отдельно. а в On Enter начал что то мудрить. Начал прописывать: "Image." думал вылезет какой нибудь SetImage. как такового нет

+ еще заметил один минус. нужно скрыть текст в Paragraph2. т.к. он появляется в начале, а исчезает только после того как уберешь курсор с кнопки.
Автор: GOOSE
Дата сообщения: 17.12.2007 07:54
Bloodwin

Цитата:
теперь требуется, чтобы в Paragraph2 была еще и картинка

Этот тип объекта картинки не поддерживает...

Цитата:
Чето из меня скриптор плохой наверно

Из тебя не скриптор, из тебя читатель плохой Ты в помощь смотрел?
По аналогии с параграфом вставляешь объект Image и скрываешь\показываешь его по нужным действиям мыши.

Цитата:
еще заметил один минус

И причем тут минус? On Enter - событие при наведении мыши на объект, On Leave - при "уводе" мыши с объекта... Нормальная работа, а ты как хотел? Можешь на OnClick повесить...

ЗЫ Совет прежний - посмотри файл помощи, все понятно и без перевода, примеры есть к каждому действию, а то и не по одному

Автор: Alavar
Дата сообщения: 17.12.2007 10:25
Подскажите как в проекте сделать "поиск"по ключевому слову, для диска с софтом.Проект многостраничный,на каждой странице сделал кнопку и объект Input а что в свойствах прописать не имею понятия.Может примерчик есть?
Автор: GOOSE
Дата сообщения: 17.12.2007 10:49
Alavar
Реально еще не делал, но в помощи боль-мень понятно написано
Если коротко, то:
Поиск в 7 версии организовывается по ключевым словам страниц, т.е. на каждой странице вводим нужные уникальные ключевые слова.
Потом по ним создается индексная таблица, из которой можно вытянуть нужную страницу.
Код в помощи такой:

Код: tbKeywordIndex = Application.MakeKeywordIndex();

if (tbKeywordIndex) then
strTempString = "";
for key_index, page_table in tbKeywordIndex do
for page_index, page_value in page_table do
strTempString = strTempString .. key_index.." - "..page_index..": "..page_value.."\r\n";
end
end
Dialog.Message("Index Results", strTempString);
end
Автор: AleksejTokarev
Дата сообщения: 17.12.2007 20:16
День добрый, обитатели чудо-форума.

У меня вот какой вопрос.

Как можно с помощью АМС зделать следущее:

Програмку каторая будет заполнять чеки для перевода денег.
Имеется бумажный формуляр, на катором есть такие поля как (Сумма, Номер счёта, Номер и название банка, атпровитель) на бланке эти поля пустые. Для отправки денег эти поля надо ручиньками заполнить к примеру речкой или карандашом, с этим проблем нет, писать умею, но вот проблема в том, что не каждые автомат для перевода денег может понять что я написал.
Вот по этому я хочу сделать совтинку с изображением моего формуляра у каторого в местах где чтото нужно заполнять находились бы "Input" в каторых бы я писал цирфы и бувки и лёгким нажатием на кнопку печать, данные отправляются на принтер в катором ждёт своей очереди чистый-бумажный формуляр для оптправки денгов (Не просто листик, а именно формуляр)
Вот! Такой у иеня вопросик., Помогите пожалуйста если моно

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Symantec Endpoint Protection - SEP


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.