Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 927
от 17.09.2007, 12:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 464, Экспертов: 80
В номере:Вопросов: 5, Ответов: 7


Вопрос № 101676: Доброго времени суток. Необходимо расчитать/предсказать отаток времени для выполнения группы заданий. Известно общее количество заданий, известно время выполнения каждого задания, котрые уже выполнены. Среднеарифметический показ...
Вопрос № 101721: Уважаемые Эксперты, вопрос о динамическом создании объектов в Delphi 7. Возникла задача, которую я когда-то давно уже решал, но к сожалению запомнилась только логика. Суть задачи такова – нужно создать на главной форме надцать копий заранее ...
Вопрос № 101725: Ув. Эксперты. Подскажите как в record TSearchRec параметр Time перевести в формат понятный для чтения, изменить его и записать в файл с новым значением? ...
Вопрос № 101729: Ув. Эксперты. Как с помощью Delphi менять дату в EXIF?...
Вопрос № 101767: Всем доброго времени суток! У меня вопрос такого характера : работаю с текстовыми файлами, и когда закрываю один из них CloseFile, то другая программа ругаеться, не может его прочитать, и пишет что он занят другим процесом. Как можно полнустью за...

Вопрос № 101.676
Доброго времени суток.

Необходимо расчитать/предсказать отаток времени для выполнения группы заданий.
Известно общее количество заданий, известно время выполнения каждого задания, котрые уже выполнены.

Среднеарифметический показатель не интересует, так как он не точен.

Если уважаемые експерты знают готовый алгоритм, помогите.
Отправлен: 11.09.2007, 16:55
Вопрос задал: Игнатьев Дмитрий (статус: Студент)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: DimonSoft
Здравствуйте, Игнатьев Дмитрий!

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

К сожалению, сказать больше, имея только полученную от Вас информацию, не представляется возможным. Для решения указанной задачи нужны частный случай применения и знание специфики заданий (относительно времени их выполнения).

С уважением, DimonSoft.
Ответ отправил: DimonSoft (статус: 3-ий класс)
Ответ отправлен: 11.09.2007, 18:28

Отвечает: Delph
Здравствуйте, Игнатьев Дмитрий!

В Вашем случае, пожалуй, можно указывать вилку (т.е. оценочный минимум и оценочный максимум) оставшегося времени плюс уже затраченное время плюс процент общего выполнения. Для этого нужно будет хранить в памяти самое быстрое и самое медленное задание из уже выполненных, что поможет рассчитать вилку для оставшихся. Думаю, после 10 - 15 заданий очереди расчёт вилки будет в подавляющем большинстве случаев корректным: оставшее время (реальное, а не гипотетическое) будет укладываться в пределы, определённые на этом этапе, а дальше вилка будет в основном сокращаться. Но будут, хотя и редко, случаи, когда первые 20-30 % заданий окажутся самыми быстрыми или самыми медленными из всех... но и в этих ситуациях трудно указать более точный метод оценки.
---------
Сомневайся во всём! Реальность часто бывает не такой, как мы о ней думаем.
Ответ отправил: Delph (статус: 9-ый класс)
Ответ отправлен: 12.09.2007, 08:10


Вопрос № 101.721
Уважаемые Эксперты, вопрос о динамическом создании объектов в Delphi 7.
Возникла задача, которую я когда-то давно уже решал, но к сожалению запомнилась только логика.
Суть задачи такова – нужно создать на главной форме надцать копий заранее подготовленного фрейма, через его динамическое создание. Созданные фреймы помещаются в массив, который объявлен как массив таких фреймов. В связи с этим прошу:
1 – как создать такой массив зная, что максимальная его емкость 300/*оговорено предметной областью*/?
2* – как на этапе выполнения создать фрейм с последующим его помещением в массив?
/* Заполнить созданный в п.1 массив элементами-фреймами.*/
3 – как правильно обращаться к элементам такого массива?
4* – как правильно удалить элемент-фрейм?
5` – достаточно ли изменения top и left для «стройного» расположения элементов-фреймов на форме?
P.S.: Немного о вопросах.
Вопросы расположены по мере их возникновения при написании ПО.
2* и 4* - критичный вопрос /*ответ эти вопросы очень важен*/;
5` - вопрос – почва для рассуждений;
1 и 3 вопросы о решении которых я догадываюсь, но хотелось бы знать наверняка.
Вопросы максимально расписаны для наиболее полного(точного) изложения возникшей проблемы и во избежание ответов «Телепаты в соседнем разделе».

Приложение:

Отправлен: 11.09.2007, 22:21
Вопрос задал: Василенко Алексей Васильевич (статус: 3-ий класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: sir henry
Здравствуйте, Василенко Алексей Васильевич!
1,2,3) Создание массива фреймов ничем не отличается от создания других типов массивов:
а) Его, для начала, надо объявить:

Var
FrameArray: array[0..299] of TFrame;

б) Теперь можно создавать сами фреймы:

For i:=0 To 299 Do
Begin
FrameArray[i]:=TFrame.Create(Form1);
//Дальше Вы заполняете те свойства фрейма, которые Вам нужны
FrameArray[i].Top:=...;
FrameArray[i].Left:=...;
FrameArray[i].Height:=...;
FrameArray[i].Width:=...;
End;

К каждому свойству или методу фрейма Вы обращаетесь не забывая подставлять индекс массива.
Если же Вам неизвестно заранее сколько элементов будет в массиве, то объявите динамический массив:

Var
FrameArray: array of TFrame;

и как только в своей программе Вы определитесь с размером массива, задайте его:

SetLength(FrameArray, 300);

4) Элемент-фрейм удаляется как и обычный фрейм (только не забывайте про индекс :) ):

FrameArray[9].Free;

5) "Стройное" расположение фреймов на форме, это Ваша забота не как программиста, а как дизайнера.
Сначала возьмите лист миллиметровки и нарисуйте на ней Вашу форму в полную величину. После этого на форме нарисуте фреймы в том виде, в каком они должны быть. После этого Вы сразу же увидите какие координаты должны быть у каждого фрейма (Top, Left, Height, Width).
Теперь Ваша задача как программиста, описать алгоритм изменения координат.
Как видите, дело совершенно плёвое. :)
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 12.09.2007, 05:40
Оценка за ответ: 2
Комментарий оценки:
очень интересный ответ и самое главное по всем вопросам /* поидее на 5ть*/.
но созданее фрейма с именем Tframe не дает результата, созданный массив не отображаеться.
на Frame[i] ругается.
Я извиняюсь за резкость, но Notepad.exe не самая подходящая для Вас среда.

Отвечает: Примак Руслан Николаевич
Здравствуйте, Василенко Алексей Васильевич!
В дополнение к ответу sir henry хотелось бы отметить наличие такого компонента как TObjectList. Который позволяет манипулировать списком объектов, позволяя удалять, добавлять, сортировать, а также получать индекс нужного объекта. Единственное неудобство - это доступ к свойствам и методам объекта - необходимо делать преобразование типов: TMyFrame(MyObjects).
Плюс - это, если вы создаете TObjectList как: MyObjectList := TObjectList.Create(True), то всю заботу об управлении памятью при освобождении объектов MyObjectList берет на себя.
Ответ отправил: Примак Руслан Николаевич (статус: 3-ий класс)
Ответ отправлен: 12.09.2007, 11:54
Оценка за ответ: 2
Комментарий оценки:
я так подозреваю информация неплохая, но качество подачи удручает. Очень удручает. Без примера совсем не понятно о чем конкретно шла речь в ответе. И САМОЕ главное... зачем это мне?


Вопрос № 101.725
Ув. Эксперты. Подскажите как в record TSearchRec параметр Time перевести в формат понятный для чтения, изменить его и записать в файл с новым значением?
Отправлен: 11.09.2007, 23:41
Вопрос задал: Трепак Юрий Олексеевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Gh0stik
Здравствуйте, Трепак Юрий Олексеевич!

В поле Time заносится дата и время создания файла, но в формате DOS. Для того чтобы перевести во время типа TDateTime можно воспользоваться функцией FileDateToDateTime, а если требуется перевести в строку, то к значению типа TDateTime можно затем применить функцию DateTimeToStr.

Пример использования:
var z:TSearchRec;
...
begin
...
ShowMessage(DateTimeToStr(FileDateToDateTime(z.Time)));
...
end;


Good Luck!!!
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессор)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 11.09.2007, 23:52
Оценка за ответ: 5
Комментарий оценки:
Спасибо за оперативность. Все работает.


Вопрос № 101.729
Ув. Эксперты. Как с помощью Delphi менять дату в EXIF?
Отправлен: 12.09.2007, 00:22
Вопрос задал: Трепак Юрий Олексеевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Gh0stik
Здравствуйте, Трепак Юрий Олексеевич!

Вы наверняка имеете ввиду EXIF - стандарт, позволяющий добавлять к изображениям дополнительную информацию.

Если так, то наиболее правильным подходом дял решения поставленных задач будет воспользоваться уже готовым компонентом (чтобы не изобретать веломашины :)) ), таким как TExif.

Насколько работоспособен данный компонент сказать не могу, но то что он бесплатен тоже не малый плюс.

Good Luck!!!
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессор)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 12.09.2007, 01:31
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо. Компонент работает отлично. Вы мне очень помогли.
P.S. Gh0stik respect :-).


Вопрос № 101.767
Всем доброго времени суток!
У меня вопрос такого характера : работаю с текстовыми файлами, и когда закрываю один из них CloseFile, то другая программа ругаеться, не может его прочитать, и пишет что он занят другим процесом. Как можно полнустью закрыть файл? ПЛЗ Хелп!
Отправлен: 12.09.2007, 12:16
Вопрос задал: Стрилец Артем Виталиевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Omickron
Здравствуйте, Стрилец Артем Виталиевич!

Возможно, причиной этому то, что другая программа пытается его открыть, пока первая не закрыла.
Совет: вместо AssignFile, Readln, Writeln, CloseFile используйте файловые потоки TFileStream.
Гораздо проще, быстрее, удобнее.
Ответ отправил: Omickron (статус: 3-ий класс)
Ответ отправлен: 12.09.2007, 14:39


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.59 от 17.09.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное