![]() |
![]() |
|
v7: Иногда зависает обработка | ☑ | ||
---|---|---|---|---|
0
Масянька
21.06.13
✎
14:18
|
День добрый!
Есть такая обработка: Перем Предел; Перем РасшФ, Курсорчик; Перем фЗакрытия; Перем мФайл; Перем НачСекунда, ТекСекунда; //******************************************************************************** Функция Time() Форма.Обновить(); Возврат currentTime(,,ТекСекунда); КонецФункции // Time() //******************************************************************************** Функция СлучайноеЧисло() СлучайноеЧисло = _GetPerformanceCounter()%(Предел - 8); Возврат СлучайноеЧисло; КонецФункции // СлучайнаяПозиция() //******************************************************************************** Функция Курсор() КонецФункции //******************************************************************************** Процедура РаспаковатьBin(ИмяФайла,ИдентификаторФайла,РазмерФайла) //©Александр Маляев http://infostart.ru/projects/600 КаталогФормы = ""; ИмяФормы = ""; РасположениеФайла(КаталогФормы, ИмяФормы); ТекстСкрипта = " |Sub Main | Dim FSO,F | Set FSO = CreateObject(""Scripting.FileSystemObject"") | Set F = FSO.OpenTextFile(""" + КаталогФормы + ИмяФормы + """, 1) | Str = """" | BeginFind = 0 | Do | Char = F.Read(1) | Str = Str & Char | If BeginFind = 0 Then | If Right(Str," + СокрЛП(СтрДлина(ИдентификаторФайла)) + ")=""" + ИдентификаторФайла + """ Then | BeginFind = 1 | Str = """" | End If | Else | If Right(Str,2) = ""BM"" Then | F.Skip(1076) | Str=F.Read(" + СокрЛП(РазмерФайла) + ") | F.Close | Set F=FSO.CreateTextFile(""" + ИмяФайла + """) | F.Write(Str) | F.Close | Exit Do | End If | End If | Loop While F.AtEndOfStream=0 |End Sub |"; VBS = СоздатьОбъект("MSScriptControl.ScriptControl"); VBS.Language = "vbscript"; VBS.Timeout = -1; VBS.AddCode(ТекстСкрипта); VBS.Run("Main"); КонецПроцедуры //******************************************************************************** Процедура ПриОткрытии() Предел = 117; Матф = СоздатьОбъект("Math"); Матф.SRANd(_GetPerformanceCounter()); currentTime(,,НачСекунда) ; Курсорчик = КаталогИБ()+"cursor2.cur"; // определяем имя файла мФайл = СлучайноеЧисло(); // собираем имя файла СтрИмяФайла = Строка(мФайл); РасшИмяФайла = ".jpg"; КаталогФайла = "\\MANAGER2\1Cv7\DB\Shablons\Funny\"; ИмяФайла = КаталогФайла + СтрИмяФайла + РасшИмяФайла; Картинка.Загрузить(ИмяФайла); Картинка.РежимРисования(2); // убираем курсор Курсорчик = КаталогИБ() + "cursor.cur"; Если ФС.СуществуетФайл(Курсорчик) = 0 Тогда Состояние("Инициализация ..."); РаспаковатьBin(Курсорчик,"Курсор()", 198); КонецЕсли; Если (Форма.Параметр <> "modal") Тогда ОткрытьФормуМодально("Processing#","modal",filePath()); СтатусВозврата(0); Возврат; КонецЕсли; фЗакрытия = 0; Форма.Закрыть(); КонецПроцедуры // ПриОткрытии //******************************************************************************** Процедура ПриЗакрытии() Если (фЗакрытия = 0) Тогда СтатусВозврата(0); КонецЕсли; фЗакрытия = 1; КонецПроцедуры // ПриЗакрытии //******************************************************************************** Процедура СамоЗакрытие() Форма.Закрыть(0); КонецПроцедуры //******************************************************************************** Функция ОбновитьКартинку() ПрошлоСекунд = ТекСекунда - НачСекунда; Если (ПрошлоСекунд = 8) Тогда // определяем имя файла мФайл = мФайл + 1; // собираем имя файла мСтрИмяФайла = Строка(мФайл); мРасшИмяФайла = ".jpg"; мКаталогФайла = "\\MANAGER2\1Cv7\DB\Shablons\Funny\"; мИмяФайла = мКаталогФайла + мСтрИмяФайла + мРасшИмяФайла; Картинка.Загрузить(мИмяФайла); Картинка.РежимРисования(2); НачСекунда = ТекСекунда; КонецЕсли; Форма.Обновить(); Возврат ""; КонецФункции // ОбновитьКартинку //******************************************************************************** Процедура ПослеОткрытия() РасшФ = СоздатьОбъект("Расширениеформы"); РасшФ.УстановитьФорму(Форма); Окна = СоздатьОбъект("Окна"); Окна.СтильОкна(Форма, 1); Если ФС.СуществуетФайл(Курсорчик) = 1 Тогда РасшФ.УстановитьКурсор(Курсорчик); КонецЕсли; РасшФ.ОбработкаОжидания("СамоЗакрытие", 45000); //время в милисекундах - 1 минута = 60000 КонецПроцедуры Смысл - при открытии программы выводится заставка с картинкой.Каждые 8 секунд картинка меняется. Первая картинка выбирается случайно (типа, получить случайное число). На форме есть таймер. Через 40 секунд обработка закрывается. Так вот - иногда (не могу объяснить и поймать этот момент) - картинки перестают меняться, то есть висит одна картинка, через 40 секунд - заставка закрывается. Где я накосячила? PS Цой - жив! |
|||
1
Voronve
21.06.13
✎
14:22
|
Если (ПрошлоСекунд = 8) Тогда
Заменить на Если (ПрошлоСекунд >= 8) Тогда РасшИмяФайла = ".jpg"; Заменить на РасшИмяФайла = "*.jpg"; |
|||
2
Voronve
21.06.13
✎
14:23
|
РасшИмяФайла = ".jpg";
Оставить. пардон |
|||
3
Масянька
21.06.13
✎
14:24
|
(1) Не помогло.
|
|||
4
Ёпрст
гуру
21.06.13
✎
14:24
|
(0) Если формекс>99 версии, то в нём не работает ПослеОткрытия в модальной форме
|
|||
5
Ёпрст
гуру
21.06.13
✎
14:25
|
переделай на ПослеСозданияФормы.. у тебя тупо обработкаОжидания не запущается и привет
|
|||
6
Ёпрст
гуру
21.06.13
✎
14:26
|
Ну и .. есть увереность, что по пути есть картинка вообше ?
Выведи в сообщиьт имя картинки при её "смене" |
|||
7
Масянька
21.06.13
✎
14:30
|
(4) У меня 2.0.5.0 #60
(5) Не понял :( (6) То работает, то нет. Картинки - есть (это всё, в чём я уверена) :))) |
|||
8
Масянька
21.06.13
✎
14:31
|
+(5) А почему тогда через 40 секунд - закрывается (как и должно)?
|
|||
9
Ёпрст
гуру
21.06.13
✎
14:31
|
(7) ё.. какое старьё..
|
|||
10
Ёпрст
гуру
21.06.13
✎
14:31
|
возьми нормальный формекс и отдельно 1cpp
|
|||
11
Масянька
21.06.13
✎
14:33
|
(10) Где?
Причем, бывает - открылась и все (картинка не меняется), а бывает - несколько картинок сменилось, потом висит.... |
|||
12
dk
21.06.13
✎
14:33
|
про замер производительности в отладчике слышала?
|
|||
13
Масянька
21.06.13
✎
14:34
|
(12) Слышала, а при чем тут это?
|
|||
14
Ёпрст
гуру
21.06.13
✎
14:36
|
(11)
http://www.1cpp.ru/forumfiles/Attachments/icpp-3-2-4-1.rar http://www.dorex.pro/files/?formex_t.zip ЗЫ: выкини везде Форма.Обновить, выкини свой таймер, и переменые ПрошлоСекунд и т.д.. Тупо Создай объект Таймер и запусти 2 обработки ожидания, одна - для закрытия поделки, вторая - для смены картинки. Усё.. |
|||
15
Масянька
21.06.13
✎
14:36
|
1с++ 3.2.2.8
|
|||
16
Ёпрст
гуру
21.06.13
✎
14:36
|
И форму обновляй, только в момент смены картинки..
а не формулой текста на форме - этим ты грузишь проц на 100 % |
|||
17
Ёпрст
гуру
21.06.13
✎
14:38
|
Ну и все картинки, при желании, можно кинуть в саму поделку (правда её размерчик возрастёт некисло так..)
|
|||
18
Масянька
21.06.13
✎
14:38
|
(14) (16) Спасибо! Пойду мучаться :))))
|
|||
19
Масянька
21.06.13
✎
14:38
|
(17) Не, мне так не нравится - там около 120 картинок.
|
|||
20
Масянька
21.06.13
✎
16:55
|
Ёпрст!
Как всегда - ОГРОМНОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО! |
|||
21
Ёпрст
гуру
21.06.13
✎
16:57
|
заработало шоле ?
|
|||
22
Масянька
21.06.13
✎
16:58
|
(21) Ага :)))))
Прикольная эта штука - Таймер.... |
|||
23
Масянька
21.06.13
✎
17:00
|
В общем, если когда будешь в наших краях - обращайся :))))
|
|||
24
Ёпрст
гуру
21.06.13
✎
17:02
|
был я там, на НГ в Геленджике, и в Новоросе проездом
|
|||
25
Масянька
21.06.13
✎
17:03
|
(24) Чего не сказал-то? На НГ? Лучше летом - голые загорелые девушки и волосатые мужики :)))))))))
|
|||
26
Ёпрст
гуру
21.06.13
✎
17:11
|
(25) зовут да, круглый год.. некогда.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |