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

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


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

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

Выпуск № 824
от 29.05.2007, 17:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 465, Экспертов: 79
В номере:Вопросов: 9, Ответов: 15


Вопрос № 88309: Не поможете пожалуйста: какой элемент лучше использовать чтоб ввести массив данных. Мне для программы надо расчитать вычисление средних данных эксперимента. Есть формулы для расчета средних значений (спс Ghostik, d- массив данных) но вот никак не мог...
Вопрос № 88311: Уважаемые эксперты. Как можно преобразовать вордовский файл в текстовый формата txt. Нужно чтоб был отступ первой строки, чтоб соблюдались поля (левый и правый отступы), пустая строка перед абзацем, строка автор и название. Подскажите как это...
Вопрос № 88329: Добрый день уважаемые эксперты. Если у кого есть программа или кусок программы или листинг или адресок инете по решению линейных уравнений методом Крамера, поделитесь…. Прошу не ради наживы. Взялся помочь с дипломом по родственному,...
Вопрос № 88343: Здравствуйте, уважаемые эксперты! Возник такой вопрос. Мне необходимо что б при вызове процедуры, например нажатия на кнопку на форме, программа создавала на диске exe файл и запускала его. Проблема в том что я не знаю как "вшить" в програм...
Вопрос № 88350: Добрый день! У меня вопрос, точнее два, по поводу компонента NMHTTP. Я молучаю данные с сайта, как узнать что данные все загружены и можно преступать к загрузки новых данных? Второй вопрос вот в чем, когда начинаю загружать с нового адрес...
Вопрос № 88359: Здравствуйте, дорогие эксперты! Прошлый раз (81491) вы мне очень помогли. А именно ответ Bingo. Так вот. Применив его ответ(вам придется его посмотреть) форма не перемещалась за края экрана. Раньше я отслеживал позицию формы(Left,Top) и е...
Вопрос № 88362: мне нужно в TMediaPlayer сделать возможность перемотки видео, как в стандартных видео прогигрователях....
Вопрос № 88410: Здравствуйте уважаемые!В моём приложении мне необходимо заносить в ListBox некие названия,там они должны получать защиту от дублирования,здесь я понимаю надо предварительно поработать со StringList(Duplicates),далее сортироваться по имени(Sorted),но ...
Вопрос № 88423: Добрый день, уважаемые эксперты. Заинтересовал вопрос внезапно, а что такое Query , а в частности CloseQuery, и для чего его применяют. Заранее спасибо....

Вопрос № 88.309
Не поможете пожалуйста: какой элемент лучше использовать чтоб ввести массив данных. Мне для программы надо расчитать вычисление средних данных эксперимента. Есть формулы для расчета средних значений (спс Ghostik, d- массив данных) но вот никак не могу найти формулу для среднего кубического.
Я понимаю что формулы надо загнать в элемент RadioGroup, а вот дальнейший вывод в сторку для них как выглядит будет?

Приложение:

Отправлен: 23.05.2007, 20:43
Вопрос задал: Mantis (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Gh0stik
Здравствуйте, Mantis!

Для ввода массива данных я посоветую Вам воспользоваться функцией function InputBox(const ACaption, APrompt: WideString; ADefault: Integer; Min: Integer = Low(Integer); Max: Integer = High(Integer); Increment: Integer = 1): Integer; overload;, по необходимо прописать такой модуль: uses QDialogs;

Сами формулы в объектах я Вам предлагаю не писать, а просто в RadioGroup - прописать их названия и при выборе того или иного пункта делать соответствующие вычисления.

Например так:
procedure TForm1.RadioGroup1Click(Sender: TObject);
var i,n:integer;
a:real;
begin
n:=UpDown1.Position-1;
case RadioGroup1.ItemIndex of
0: begin a:=0;for i:=0 to n do a:=a+d[i]; a:=a/n;end;
1: begin a:=0;for i:=0 to n do a:=a+sqr(d[i]); a:=sqrt(a/n);end;
2: begin a:=1;for i:=0 to n do a:=a*d[i]; a:=power(a,1/n);end;
3: begin a:=0;for i:=0 to n do a:=a+1/d[i]; a:=n/a; end;
4: begin a:=0;for i:=0 to n do a:=a+d[i]*d[i]*d[i]; a:=power(a/n,1/3); end;
end;
LabeledEdit1.EditLabel.Caption:=RadioGroup1.Items[RadioGroup1.ItemIndex];
LabeledEdit1.Text:=format('%.5f',[a]);
end;


Соответственно:
0 - среднее арифметическое
1 - среднее квадратичное
2 - среднее геометрическое
3 - среднее гармоническое
4 - среднее кубическое

При вычислениях Вы можете обратить внимание на то, что я использую функцию power() - данная функция взята из пакета Math (uses Math) и соответственно находит степень числа.

Так же Вы спрашивали формулу среднего кубического, вот как его можно вычислить - это корень кубический частного суммы кубов элементов на их количество.
S = ((a13 + a23 + ... + an3)/n)1/3.

Полный код проекта программы Вы найдете в прикрепленном файле, а код юнита в приложении.

Good Luck!!!

Приложение:

Прикреплённый файл: Загрузить >>
Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа.
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.

Ответ отправил: Gh0stik (статус: Профессор)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 24.05.2007, 01:38


Вопрос № 88.311
Уважаемые эксперты. Как можно преобразовать вордовский файл в текстовый формата txt.
Нужно чтоб был отступ первой строки, чтоб соблюдались поля (левый и правый отступы), пустая строка перед абзацем, строка автор и название.
Подскажите как это можно реализовать?
Отправлен: 23.05.2007, 20:50
Вопрос задал: Култышев Владимир (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 7)

Отвечает: Sattar
Здравствуйте, Култышев Владимир!
Почитайте книгу "ПРОГРАММИРОВАНИЕ ДОКУМЕНТОВ И ПРИЛОЖЕНИЙ MS OFFICE в DELPHI"
Автор: Василий Корняков.
Книгу можна найти в електронном виде.
А реализацыя простого сохраненния с формату doc в формат txt в приложениии.

Приложение:

---------
Programming is like sex, one mistake and you have to support it for the rest of your life.

Ответ отправил: Sattar (статус: 3-ий класс)
Ответ отправлен: 26.05.2007, 15:46


Вопрос № 88.329
Добрый день уважаемые эксперты.

Если у кого есть программа или кусок программы или листинг или адресок инете по решению линейных уравнений методом Крамера, поделитесь….

Прошу не ради наживы. Взялся помочь с дипломом по родственному, но зашиваюсь по времени…

Заранее благодарен. Алексеев А.В.
Отправлен: 23.05.2007, 23:20
Вопрос задал: Алексеев Александр Владимирович (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Raden
Здравствуйте, Алексеев Александр Владимирович!
Нашёл в своих архивах что-то подобное, может подойдёт....

Приложение:

---------
Учение - изучение правил, опыт - изучение исключений

Ответ отправил: Raden (статус: 1-ый класс)
Ответ отправлен: 24.05.2007, 00:05
Оценка за ответ: 5
Комментарий оценки:
Спасибо!!! Буду разбираться...


Вопрос № 88.343
Здравствуйте, уважаемые эксперты! Возник такой вопрос. Мне необходимо что б при вызове процедуры, например нажатия на кнопку на форме, программа создавала на диске exe файл и запускала его. Проблема в том что я не знаю как "вшить" в программу этот самый ехе и как его потом создавать на диске.
Отправлен: 24.05.2007, 03:39
Вопрос задал: Sleeper (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Gladiator
Здравствуйте, Sleeper!
1) Тебе для этого нужно создать 2 файла : txt2res.bat и exefile.txt (См. приложение)
2) Запускаешь bat-файл; в каталоге появляется файл ресурса exefile.res, внутри которого лежит ваш exe-файл.
3) В своей программе пишете {$R exefile.res} (См. приложение). После компиляции exe-файл помещается в вашу программу.
4) Функцию извлечения exe-файла и его запуска указаны в приложении.
Удачи.

Приложение:

Ответ отправил: Gladiator (статус: 9-ый класс)
Ответ отправлен: 24.05.2007, 08:20
Оценка за ответ: 5
Комментарий оценки:
Спасибо очень помог твой код. Правда упростил его для себя!

Отвечает: Gh0stik
Здравствуйте, Sleeper!

На данный вопрос рекомендую прочитать мои и ответы других экспертов по таким ссылкам - вопрос № 87500 и вопрос № 87645.
Обращаю Ван внимание на то, что к каждому ответу прикреплено соответствующее приложение с полым кодом, которое Вы можете скачать.
Также советую просмотреть статьи, которые рекомендуются к прочтению в вопросе № 87645.

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


Вопрос № 88.350
Добрый день!
У меня вопрос, точнее два, по поводу компонента NMHTTP.
Я молучаю данные с сайта, как узнать что данные все загружены и можно преступать к загрузки новых данных?
Второй вопрос вот в чем, когда начинаю загружать с нового адреса, выдает ошибку Already connected. Когда начинаю второй раз загружать все загружается.
Заранее всем спасибо кто ответит.
Отправлен: 24.05.2007, 08:12
Вопрос задал: AllexZ (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Чрнавин Е. А.
Здравствуйте, AllexZ!
По поводу второго вопроса. Попробуй применить метод Free, а постле прописать новый хост. А вообще почитай про этот компанент по этой ссылке. Там пишут как можно работать с http серверами через методы get and post. Этот вариант работы больше подойдет для тебя если ты динамически изменяешь адреса серверов -> http://www.compress.ru/Archive/CP/1999/5/11/#09.
Ответ отправил: Чрнавин Е. А. (статус: 1-ый класс)
Ответ отправлен: 24.05.2007, 09:32


Вопрос № 88.359
Здравствуйте, дорогие эксперты!
Прошлый раз (81491) вы мне очень помогли. А именно ответ Bingo.
Так вот. Применив его ответ(вам придется его посмотреть) форма не перемещалась за края экрана.
Раньше я отслеживал позицию формы(Left,Top) и если он была меньше 0 то приравнивал к нулю. Но форма прыгала за экран а потом возвращалась обратно, получалось некрасиво.
Сейчас проблема следующая. Надо сделать так, чтобы размер формы уменьшался до определенных пределов. Я делал как всегда (код в приложении), но размер формы скачет: уменьшается меньше, а потом снова увеличивается. Некрасиво :-(
Я думаю надо делать так, как и в случае Bingo. Я так понял он делал через системные сообщения. Но я абсолютно не знаю как с ними работать.

Задача в том чтобы размер формы уменьшался до определенных размеров, и ни в каком случае не перескакивал эту границу.

Дайте ссылки где можно найти информацию по этой теме, т.е. по отслеживанию системных событий.

Приложение:

Отправлен: 24.05.2007, 09:39
Вопрос задал: Patriotix-N (статус: 3-ий класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Чрнавин Е. А.
Здравствуйте, Patriotix-N!
Форма наследует свойство Constraints, класса TControl.
Если при создании окна ты укажешь:
Constraints.MinHeight := 407;
Constraints.MinWidth := 625;
То твоя форма не уменьшится меньше этих размеров.
Ответ отправил: Чрнавин Е. А. (статус: 1-ый класс)
Ответ отправлен: 24.05.2007, 09:49

Отвечает: Виктор Пырлик
Здравствуйте, Patriotix-N!
Дак это свойство можно статически прописать - в Constraints раскройте дерево (в дизайнере формы - инспектор объектов)
там есть:
MaxHeight - максимальная высота
MaxWidth - максимальная ширина
MinHeight - минимальная ..
MinWidth - минимальная ...
Это удобно иногда - настроили форму, компаненты - и что бы не нарушать "красоту" ограничиваем допустимые размеры изминения...


---------
Надо пребывать господа, пребывать! Иначе ничего не получится!
Ответ отправил: Виктор Пырлик (статус: 3-ий класс)
Ответ отправлен: 24.05.2007, 10:47


Вопрос № 88.362
мне нужно в TMediaPlayer сделать возможность перемотки видео, как в стандартных видео прогигрователях.
Отправлен: 24.05.2007, 10:15
Вопрос задал: Сидоров Александр Александрович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Ерёмин Андрей
Здравствуйте, Сидоров Александр Александрович!
У TMediaPlayer есть свойства Length и Position, которые отвечают соответственно за длину проигрываемого файла и текущую позицию воспроизведения. Вот их и нужно использовать. Можно взять, например, TTrackBar со страницы Win32 и использовать его в качестве перемотки. После открытия файла нужно задать длину:
TrackBar.Max:=MediaPlayer.Length;
На событие OnChange соответственно саму перемотку:
MediaPlayer.Position:=TrackBar.Position;
Наконец, для автоматического движения ползунка можно использовать TTimer с маленьким интервалом:
TrackBar.Position:=MediaPlayer.Position;
Удачи!
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на Delphi. Помощь, советы, обмен опытом.
ICQ: 286837644
----
Ответ отправлен: 24.05.2007, 14:03
Оценка за ответ: 5


Вопрос № 88.410
Здравствуйте уважаемые!В моём приложении мне необходимо заносить в ListBox некие названия,там они должны получать защиту от дублирования,здесь я понимаю надо предварительно поработать со StringList(Duplicates),далее сортироваться по имени(Sorted),но самое главное в чём и вопрос,как узнать Index добавленного названия с учётом сортировки.Если можно то весь фрагмент кода включая Duplicates,Sorted,Index .
Отправлен: 24.05.2007, 15:37
Вопрос задал: GAZOT (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Gladiator
Здравствуйте, GAZOT!
Для этого существует сообщение LB_FINDSTRING.

Приложение:

Ответ отправил: Gladiator (статус: 9-ый класс)
Ответ отправлен: 24.05.2007, 16:07
Оценка за ответ: 4
Комментарий оценки:
спасибо только не очень понятно ,что есть Longint(Pchar(Mashine)),может объясните

Отвечает: Gh0stik
Здравствуйте, GAZOT!

Я Вам рекомендую воспользоваться функцией function IndexOf(Value: TListItem): Integer;, которая возвращает значение равное "-1", если в списке отсутствует значение Value, а если присутствует то соответственно возвращает номер позиции этой строки.

Для Вашего примера соответственно подойдет такой не сложный код обработки дублей:
procedure TForm1.Button1Click(Sender: TObject);
begin
If ListBox1.Items.IndexOf(Edit1.Text)<>-1
then ShowMessage('Такая строка уже внесена!!!')
else ListBox1.Items.Add(Edit1.Text);
end;


А для автоматической сортировки списка достаточно на этапе создания формы добавить такую строку:
 ListBox1.Sorted:=true;


Good Luck!!!

---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессор)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 24.05.2007, 22:30
Оценка за ответ: 4
Комментарий оценки:
да спасибо я об этой функции и забыл
ListBox1.ItemIndex:=ListBox1.Items.IndexOf(...)так я понимаю на выходе

Отвечает: Sattar
Здравствуйте, GAZOT!
Если правильно понял то реализацыя в приложении.

Приложение:

---------
Programming is like sex, one mistake and you have to support it for the rest of your life.

Ответ отправил: Sattar (статус: 3-ий класс)
Ответ отправлен: 26.05.2007, 15:59
Оценка за ответ: 4
Комментарий оценки:
да только надо ещё в else добавить
ListBox1.ItemIndex:=ListBox1.Items.IndexOf(Edit1.Text);


Вопрос № 88.423
Добрый день, уважаемые эксперты. Заинтересовал вопрос внезапно, а что такое Query , а в частности CloseQuery, и для чего его применяют. Заранее спасибо.
Отправлен: 24.05.2007, 17:30
Вопрос задал: SunnyKiller (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: Виктор Пырлик
Здравствуйте, SunnyKiller!
Query это запрос (дословно) - и везде, как ни странно, это так и используется, в том числе и в Delphi - компонент TQuery. Этот компонент предназначен для передачи запроса на сервер баз данных, ну, или, если работаете с локальными таблицами, то выполнить инструкции SQL. Как правило, в этом компоненте реализуются запросы - конструкции типа SELECT * FROM, хотя не обязательно, можно и управляющие инструкции посылать - INSERT, UPDATE, DELETE и т.д.
Но в любом случае, открывается соединение с базой/таблицей и эта связь активна на протяжении всего времени активности данного, конкретного компонента. Поэтому, так важно вовремя освобождать эту связь, тем более, с некоторыми СУБД необходимо переоткрыть запрос, что бы увидеть извинения. Основное отличие и преимущество TQuery – динамические наборы данных, гибкость в получении данных и снижена нагрузка на сеть. Недостаток в том, что редактирование возможно только одной таблицы, или использовать дополнительный компонент TUpdateSQL.
---------
Надо пребывать господа, пребывать! Иначе ничего не получится!
Ответ отправил: Виктор Пырлик (статус: 3-ий класс)
Ответ отправлен: 24.05.2007, 17:58
Оценка за ответ: 5

Отвечает: Ерёмин Андрей
Здравствуйте, SunnyKiller!
В вопросе вы также упомянули CloseQuery. У формы есть событие с таким именем - OnCloseQuery(). Фактически, к понятию "запрос" это событие относится тем, что вызывается при попытке закрыть форму, т.е. при запросе на закрытие. Событие удобно тем, что в нём можно остановить закрытие, установив значение локальной переменной CanClose в False.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на Delphi. Помощь, советы, обмен опытом.
ICQ: 286837644
----
Ответ отправлен: 24.05.2007, 19:22
Оценка за ответ: 5

Отвечает: Louken
Здравствуйте, SunnyKiller!

В дополнение ко всему выше сказанному, приведу пример:

Приложение:

Ответ отправил: Louken (статус: 2-ой класс)
Ответ отправлен: 24.05.2007, 23:00
Оценка за ответ: 5


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

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

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

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

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


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


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

В избранное