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

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


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

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

Выпуск № 488
от 30.05.2006, 22:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 340, Экспертов: 65
В номере:Вопросов: 8, Ответов: 17


Вопрос № 44160: Такой вопрос... К примеру надо получить содержание странички вебсайта. Как это сделать с помощью компонента TIdHTTP из Indy Clients?...
Вопрос № 44169: Здравствуйте уважаемые эксперты. Подскажите, как сделать в DBGrid выпадающее меню с данными из другой таблицы?...
Вопрос № 44185: Доброго всем. Есть числа от 1 до 100, например. Надо выдавать случайные числа с вероятностью, такие, что чем ближе к 20, например, тем вероятность больше. Вроде понятно написал. Если что уточните - не ругайте....
Вопрос № 44198: Делаю програмку; много форм, юнитов. Как её организовать лучше? те юниты переделываю в dll, а как быть с формами? как то читал что можно сохранять их в dll. ...
Вопрос № 44208: Здравствуйте все уважаемые эксперты. Хотелось спросить почему у меня тормозит программа на Delphi ,,??,, Она служит для копирования файлов с носителей. Но очень долго работает и сама на время работы зависает как этого избежать и ускорить ...
Вопрос № 44218: Здраствуте, эксперты!!! В приложении приведён листинг программы, которая должна рисовать линии одна из одной(последяя точка одной первая точка следующей) точки задаются красным квадратиком(управление стрелочками) и сразу рисуется красная линия ко...
Вопрос № 44235: Здраствуйте! Как организовать проверку пароля в программе. Типа сравнение из TEdit с какой нибудь переменной. Я знаю что такое может прокатить с цифрами (val потом if a=12345 then ...) а вот буквы уже не сравнишь... может какие компоненты есть. Да и ...
Вопрос № 44239: Здравствуйте Уважаемые Эксперты! Подскажите какие-нибудь компоненты для создания Мульти языкового приложения. Желательно, чтобы компоненты были бесплатные или такие к которым легко можно найти лекарство. Заранее Спсибо....

Вопрос № 44.160
Такой вопрос...
К примеру надо получить содержание странички вебсайта.
Как это сделать с помощью компонента TIdHTTP из Indy Clients?
Отправлен: 25.05.2006, 02:46
Вопрос задал: Vento (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Ерёмин Андрей
Здравствуйте, Vento!
Вот так например:

var Str: AnsiString;
HTTP.Host:=`rusfaq.ru`;
HTTP.Connect();
Str:=HTTP.Get(`http://rusfaq.ru`);
HTTP.Disconnect;


---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 25.05.2006, 07:59
Оценка за ответ: 4
Комментарий оценки:
Делал точто так же.... и оно успешно вылетает при соединении с ошибкой... Причем с пустой :) Может у меня Инди глючный?...
Благо нашел Синапс, поставил, сформировал запрос вручную... И все заработало :) Не дружить мне с Indy...


Вопрос № 44.169
Здравствуйте уважаемые эксперты. Подскажите, как сделать в DBGrid выпадающее меню с данными из другой таблицы?
Отправлен: 25.05.2006, 06:26
Вопрос задал: Сапожников Владимир Алексеевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: RSV
Здравствуйте, Сапожников Владимир Алексеевич!

Самый простой и легкий способ - использование TDBGridEh из пакета EhLib 3.6 (http://www.ehlib.com/RUS/default.htm Раздел "Регистрация"), либо воспользоваться "Советы по Delphi" от В.Озерова (материалы отправлены на Вашу внутреннюю почту RusFAQ.ru)

Ответ отправил: RSV (статус: 1-ый класс)
Ответ отправлен: 25.05.2006, 11:15


Вопрос № 44.185
Доброго всем.
Есть числа от 1 до 100, например.
Надо выдавать случайные числа с вероятностью, такие, что чем ближе к 20, например, тем вероятность больше.
Вроде понятно написал. Если что уточните - не ругайте.
Отправлен: 25.05.2006, 11:36
Вопрос задал: Kazakh (статус: 9-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Kazakh!

Можно, например, так, как написано в приложении. Здесь c-ваше число 20, r-случайное число, p- период.
Смысл работы таков:
Выбираем случайное число.
Если оно входит в интервал (c-p;c+p), то выводим его, иначе увеличиваем интервал.
Если интервал включает в себя промежуток [1;100], то выводим получившееся число.

Изменение периода p подберите как вам будет удобнее. Чем он меньше, тем больше вероятность получения чисел наиболее близких к c и меньше вероятность получить числа более отдаленные от c.

Удачи!

Приложение:

---------
Ответы на все вопросы - на сайте www.ya.ru :)

Ответ отправил: Устинов Сергей Евгеньевич (статус: 10-ый класс)
Ответ отправлен: 25.05.2006, 12:09
Оценка за ответ: 5
Комментарий оценки:
Как всё иногда оказывается просто :-)
Спасибо.

Отвечает: Boriss
Здравствуйте, Kazakh!
Оно, конечно, можно и так, через N-ное место. Но проще воспользоваться функцией из модуля Math
function RandG(Mean, StdDev: Extended): Extended;
которая генерирует случайное число, подчиняющееся статистике Гаусса:
Mean - среднее значение (20, у Вас);
StdDev - ширина разброса
А так, есть формулы пересчета случайных чисел, равномерно разбросанных в некотором интервале, в случайные числа, разбросанные вокруг среднего по определенному закону

---------
Вывод - то место в тексте, где вы устали думать
Ответ отправил: Boriss (статус: Профессор)
Россия, Саранск
Организация: факультет Электронной техники, Мордовский госуниверситет
Адрес: г. Саранск
WWW: Программирование на Паскале
----
Ответ отправлен: 25.05.2006, 13:09
Оценка за ответ: 5
Комментарий оценки:
Спасибо. Так ещё проще :-)


Вопрос № 44.198
Делаю програмку; много форм, юнитов. Как её организовать лучше? те юниты переделываю в dll, а как быть с формами? как то читал что можно сохранять их в dll.
Отправлен: 25.05.2006, 13:37
Вопрос задал: Negruzzi Cristian (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Negruzzi Cristian!
Нет никакго смысла переделывать все в DLL, если Ваши модулиформы не будут использовать ОДНОВРЕМЕННО другие приложения. Ваш вопрос непонятен, что Вы подразумеваете под "Как её организовать лучше"? У Вас есть определение, что такое "лучше"?
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 25.05.2006, 14:02

Отвечает: Проходящий Мимо
Здравствуйте, Negruzzi Cristian!
Прочитайте статью http://delphiworld.narod.ru/base/using_and_creating_dll.html, где описаны области применения DLL. По Вашему вопросу поможет http://delphiworld.narod.ru/base/forms_in_dll.html.
Формы можно сохранять в случае использования DLL в качестве Plug-in, так как в тело DLL компилируются модули, которые используются для создания форм. Соответственно, возникает ситуация, при которой одновременно в памяти размещаются несколько копий одного и того же модуля, а это не есть оптимизация Вашего проекта.
---------
Carpe diem!
Ответ отправил: Проходящий Мимо (статус: 4-ый класс)
Ответ отправлен: 25.05.2006, 14:18


Вопрос № 44.208
Здравствуйте все уважаемые эксперты.
Хотелось спросить почему у меня тормозит программа на Delphi ,,??,,
Она служит для копирования файлов с носителей.
Но очень долго работает и сама на время работы зависает как этого избежать и ускорить её работу ?
Спасибо за внимание.
P.S : Это не весь код программы но именно где то здесь ошибки !

Приложение:

Отправлен: 25.05.2006, 15:28
Вопрос задал: Tamashev Denis M (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Решетник Д
Здравствуйте, Tamashev Denis M!
чтобы не томрозило, поставьте в цикле Application.ProcessMessage

---------
Жизнь коротка, чтобы писать на ассемблере
Ответ отправил: Решетник Д (статус: 6-ой класс)
Ответ отправлен: 25.05.2006, 16:07
Оценка за ответ: 4
Комментарий оценки:
Я в Delphi не очень что это даст ?


Вопрос № 44.218
Здраствуте, эксперты!!!
В приложении приведён листинг программы, которая должна рисовать линии одна из одной(последяя точка одной первая точка следующей) точки задаются красным квадратиком(управление стрелочками) и сразу рисуется красная линия которая показывает как будет выглядеть следующая! Но почему-то при использовании динамического массива рисуется только одна линия первой точкой которой является точкой старта ( х=0 и у=0), а точка конца линии- последяя указаная точка!
Если чётко указать размер массива то всё работает!
Подскажите где ошибка!

Приложение:

Отправлен: 25.05.2006, 17:24
Вопрос задал: chikanok (статус: 2-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: sir henry
Здравствуйте, chikanok!
Подозоеваю, что у Вас проблемы с зажданием размера массива. Опять же подозреваю, что Вы его задаете в цикле прибавляя по одному и сразу же задаете размер. Из Вашего кода неясно, извините.
Сделайте так: сначала определитесь с размером массива (как Вы его определяеие - Ваше дело) и только когда размер уже известен, за один раз задайте его с помощью SetLength().
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 26.05.2006, 07:29
Оценка за ответ: 3
Комментарий оценки:
Если размер массива задовать за одни раз то зачем мне тогда вообще нужна динамическая длина массива! Дело в том,что я не как не могу предсказать длину массива, а тратить лишнии ресурсы,сами понимаете мимо! В конце концов в этой программе будет около 500 массивов!

Отвечает: Caleb
Здравствуйте, chikanok!

Если вы задаёте размер масива динамически, то обращение к последнему элементу лучше делать вот так: lines[high(lines)]:=<value>;
Точно также можно обращаться к самому первому элеменe lines[low(lines)]:=<Value>;
А в цикле обработки массива при выводе можно использовать length.
for q:=0 to length(line)-1 do ...
или
for q:=low(lines) to high(lines) do ...

Удачи.
Ответ отправил: Caleb (статус: 1-ый класс)
Ответ отправлен: 26.05.2006, 09:22
Оценка за ответ: 5
Комментарий оценки:
Хех! Работает! Ток непонимаю почему,но работает! Спасибо!!!


Вопрос № 44.235
Здраствуйте! Как организовать проверку пароля в программе. Типа сравнение из TEdit с какой нибудь переменной. Я знаю что такое может прокатить с цифрами (val потом if a=12345 then ...) а вот буквы уже не сравнишь... может какие компоненты есть. Да и если не сложно обьясните как пользоваться этим компнентом... Жду ответов =)

Приложение:

Отправлен: 25.05.2006, 21:04
Вопрос задал: Калашников Михаил (статус: 6-ой класс)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: Ерёмин Андрей
Здравствуйте, Калашников Михаил!
Возможно, я неправильно понял вопрос и посчитал его слишком лёгким, но всё-таки...

var Pwd: String;
. . .
Pwd:='123';
if (Edit1.Text = Pwd) then
begin
{ Пароль верный }
end
else
begin
{ Пароль неверный }
end;


---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 25.05.2006, 21:24
Оценка за ответ: 3
Комментарий оценки:
такая штука как раз не катит потому что
"f (Edit1.Text = Pwd) thenbegin" String нельзя сравнивать а Edit1.Text как раз СТРИНГ, только числовые вроде сравниваются...

Отвечает: Решетник Д
Здравствуйте, Калашников Михаил!
такой код
if 'asdfa' = 'Asdfa' then beep;
после выполнения НЕ пропищит (проверил :). так что можете сравнивать строки.

http://www.codenet.ru/progr/delphi/stat/delphi.php
---------
Жизнь коротка, чтобы писать на ассемблере
Ответ отправил: Решетник Д (статус: 6-ой класс)
Ответ отправлен: 25.05.2006, 21:35
Оценка за ответ: 5
Комментарий оценки:
Может конечно и правильно, но когда я пытаюсь сделать это, у меня ничего не получается. Компилятор ругается что нельзя сравнивать стринги ... =( Может конечно я чё неправильно делаю...

Отвечает: Kazakh
Здравствуйте, Калашников Михаил!
А что кто-то отменил стандартные дельфийские функции
function AnsiCompareStr(const S1, S2: string): Integer;
function CompareStr(const S1, S2: string): Integer; ? Или они тоже не работают?

А вообще конструкции экспертов Ерёмина А. и Решетника Д. являются правильными. И мой компилятор не ругается. Может у вас проблемы с Delphi? Может уже пора переустановить?
---------
Если собеседник затрудняется ответить, значит, вопрос поставлен правильно.
Ответ отправил: Kazakh (статус: 9-ый класс)
Ответ отправлен: 26.05.2006, 07:26

Отвечает: nimoid
Здравствуйте, Калашников Михаил!
Все ответы экспертов правильные и работают на 100%. Строковые типы так сравнивать можно. if a = b then ... // a, b: string;
Проверь свои объявления переменных. Возможно ты где-то ошибся и написал к примеру не var a: string; , а может var a: integer;
И еще.. так ради интереса, какая версия делфей?
---------
Пишем баги на любые патчи :-]
Ответ отправил: nimoid (статус: 8-ой класс)
Ответ отправлен: 26.05.2006, 09:37

Отвечает: Shcherbakov Anton
Здравствуйте, Калашников Михаил!
а что вам мешает сравнить тексты??
var str : string;
if str = edit.text then ...
Ответ отправил: Shcherbakov Anton (статус: 2-ой класс)
Ответ отправлен: 26.05.2006, 10:04


Вопрос № 44.239
Здравствуйте Уважаемые Эксперты! Подскажите какие-нибудь компоненты для создания Мульти языкового приложения. Желательно,
чтобы компоненты были бесплатные или такие к которым легко можно найти лекарство. Заранее Спсибо.
Отправлен: 25.05.2006, 21:45
Вопрос задал: Шишкин М.А. (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Николай Б.
Здравствуйте, Шишкин М.А.!
Насколько мне известно, таких компонентов нет. В интернете много статей по созданию мультиязычных приложений.
I. Самый популярный (и, наверно, лучший) способ - через ini-файлы. В него записываются значения каждого пункта меню, сообщения и т.д. и установленный язык. Во время работы, программа, в зависимости от языка, считывает нужные значения и использует их. Другой вариант- загрузка значений в массив и использование на протяжении работы программы. Он использует больше памяти. Первый же тратит время на обращение к диску.
II. Часто используется реестр. В него аналогично записываются значения пунктов меню и т.д., а затем считываются.
Удачи!
---------
Недавно прошёл тест на IQ. Результат отрицательный.
Ответ отправил: Николай Б. (статус: 9-ый класс)
Ответ отправлен: 26.05.2006, 06:49

Отвечает: Проходящий Мимо
Здравствуйте, Шишкин М.А.!
Как один с вариантов, можно использовать компоненты на подобии FormStorage с пакета RXLib, который сохраняет во внешний ini-файл выбранные свойства компонентов, в т.ч. Caption. Этот ini-файл можно отредактировать под нужный язык. Соответственно, при создании формы автоматически считываются и заполняются надписи на нужном языке:
FormStorage1.IniFileName:=ExtractFilePath(Application.ExeName)+'Eng.ini';
FormStorage1.Active:=true;
Аналог компонента FormStorage есть во многих пакетах. Удачи.
---------
Carpe diem!
Ответ отправил: Проходящий Мимо (статус: 4-ый класс)
Ответ отправлен: 26.05.2006, 09:29

Отвечает: Решетник Д
Здравствуйте, Шишкин М.А.!
В приложении приведен кусок кода, который работает по принципу, описанному Николаем Б. - через ini-файлы.
функция ReadString: 1 параметр - имя секции ([]), 2 параметр - название ключа, а 3 - значение по-умолчанию

Приложение:

---------
Жизнь коротка, чтобы писать на ассемблере

Ответ отправил: Решетник Д (статус: 6-ой класс)
Ответ отправлен: 26.05.2006, 14:46


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

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

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

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

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


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


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.33 от 25.05.2006
Яндекс Rambler's Top100

В избранное