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

RFpro.ru: СУБД и Delphi/Lazarus

  Все выпуски  

RusFAQ.ru: СУБД и Delphi


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

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

Выпуск № 209
от 25.09.2006, 12:05

Администратор:CJ
В рассылке:Подписчиков: 257, Экспертов: 36
В номере:Вопросов: 4, Ответов: 11


Вопрос № 55979: Здравствуйте. Подскажите, пожалуйста, как прологарифмировать функцию по основанию 10 в Delfi?...
Вопрос № 55990: Господа эксперты! Подскажите, как реализовать возведение в квадрат без привлечения модуля MAth и функции Power? ...
Вопрос № 55998: Здравствуйте! У меня такая проблема: пишу функцию в модуле Unit2 и хочу вызвать ее из Unit1. Компилятор выдает: Unsatisfied forward or external declaration: 'Pureclean' где я только ее не объявлял - не помогает. Я поставил "USE UNIT"...
Вопрос № 56006: Здравствуйте, уважаемые эксперты. При создании запроса (TQuery) я встретился с проблемой. ... st1:='A%'; SQL.Add('select * from database where Name Like "st1"'); Open; ... Подскажите, пожалуйста, как сделат...

Вопрос № 55.979
Здравствуйте. Подскажите, пожалуйста, как прологарифмировать функцию по основанию 10 в Delfi?
Отправлен: 19.09.2006, 16:09
Вопрос задал: Oricardo (статус: 1-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 4)

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

Воспользуемся одним из правил математики:

log{a}(b)=ln(b)/ln(a)

Сдедовательно Вы должны воспользоваться такой конструкцией:
log{10}(f(x))=ln(f(x))/ln(10);

В Delphi это выглядит примерно так:
z:=ln(f(x))/ln(10);

Удачи!!!
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Студент)
Ответ отправлен: 19.09.2006, 16:21
Оценка за ответ: 5
Комментарий оценки:
Жалко, что нельзя проще...

Отвечает: Arvist
Здравствуйте, Oricardo!
Используйте функцию log10(x) из модуля math
Тип данных Extended

---------
В будущем определено одно - неопределенность будущего!
Ответ отправил: Arvist (статус: 2-ой класс)
Ответ отправлен: 19.09.2006, 18:09

Отвечает: din
Здравствуйте, Oricardo!
Подключите юнит Math (в секции Uses) и там есть функция Log10.
Удачи!
---------
Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: din (статус: Практикант)
Ответ отправлен: 19.09.2006, 21:33


Вопрос № 55.990
Господа эксперты! Подскажите, как реализовать возведение в квадрат без привлечения модуля MAth и функции Power?
Отправлен: 19.09.2006, 18:01
Вопрос задал: Oricardo (статус: 1-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: Лукьяненко Алексей Валериевич
Здравствуйте, Oricardo!

a2 = a*a;
или
a2 = sqr(a);
Ответ отправил: Лукьяненко Алексей Валериевич (статус: 5-ый класс)
Ответ отправлен: 19.09.2006, 18:05
Оценка за ответ: 1
Комментарий оценки:
первый способ загромождает, а второй, как POwer

Отвечает: Arvist
Здравствуйте, Oricardo!
Использовать известную еще с паскаля системную функцию sqr(x)

---------
В будущем определено одно - неопределенность будущего!
Ответ отправил: Arvist (статус: 2-ой класс)
Ответ отправлен: 19.09.2006, 18:13

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

После прочтения всех ответов все-таки решился ответить.

Есть еще один весьма интерестный способ, воспользоваться одним из свойств логарифма:
x^n=e^(ln(x^n))=e^(n*ln(x))


Следовательно на языке Delphi это будет выглядеть так:
t:=exp(n*ln(x));


А для квадрата числа соответственно можно записать так:
t:=exp(2*ln(x));


Если число x отрицательное, то можно записать в таком виде (т.к. степень четная - то результат будет большим нуля):
t:=exp(2*ln(abs(x)));


Удачи!!!


---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Студент)
Ответ отправлен: 21.09.2006, 10:33


Вопрос № 55.998
Здравствуйте! У меня такая проблема: пишу функцию в модуле Unit2 и хочу вызвать ее из Unit1. Компилятор выдает: Unsatisfied forward or external declaration: 'Pureclean'
где я только ее не объявлял - не помогает.
Я поставил "USE UNIT" и все вроде бы работало. Но. потом, я снова загрузил модуль и снова та же ошибка выскакивает. Я нажимаю "use unit" в file, а комп говорит "Unit1 allready uses all units in project".
Ступор.
Отправлен: 19.09.2006, 19:36
Вопрос задал: Oricardo (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Prosto_Blackhowk
Здравствуйте, Oricardo!
По идее должно помочь, если обьявить функцию в секции public в Unit2. Вы такой вариант пробовали? Лучше было бы показать листинг, а то не понятно, что именно вы пробовали..
Ответ отправил: Prosto_Blackhowk (статус: 1-ый класс)
Ответ отправлен: 20.09.2006, 08:15


Вопрос № 56.006
Здравствуйте, уважаемые эксперты. При создании запроса (TQuery) я встретился с проблемой.
...
st1:='A%';
SQL.Add('select * from database where Name Like "st1"');
Open;
...

Подскажите, пожалуйста, как сделать так, чтобы st1 воспринималась не как строка, а как переменная, т.е. её значение.
В PHP с этим нет проблем, т.е. если написать следующее, то будет все работать
$st1 = 'A%';
$result = mysql_query("SELECT * FROM database where Name Like '$st1',$db);

Я программирую на Delphi 7.
Заранее благодарен.
Отправлен: 19.09.2006, 20:05
Вопрос задал: Sanya (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: din
Здравствуйте, Sanya!
С этим компонентом чуть иначе, запрос будет выглядеть следующим образом
SELECT * FROM database where Name Like :st1, его можно и в Design Time задать.
А потом Query1.ParamByName('st1').AsString := "A%" и все.
Удачи!
---------
Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: din (статус: Практикант)
Ответ отправлен: 19.09.2006, 20:45

Отвечает: Маренич Владимир
Здравствуйте, Sanya!
Фактически Вы выполняете поиск подстроки "st1", а не значения переменной st1.
Вам следует "извлечь" содержимое переменной:
...
st1:='A%';
SQL.Add('select * from database where Name Like '''+st1+'''');
Open;
...
Ответ отправил: Маренич Владимир (статус: Студент)
Ответ отправлен: 19.09.2006, 21:38
Оценка за ответ: 5

Отвечает: Prosto_Blackhowk
Здравствуйте, Sanya!
Это называется параметрический запрос. В тексте запроса пишете SELECT * FROM database where Name Like :st1. Потом можно использовать или Query1.Params[0].Value:= "A%"(или Edit1.Text+"%") или
Query1.ParamByName('st1').Value:= "A%"(или Edit1.Text+"%"). При нужде можно привести к нужному типу AsString или AsInteger или как нужно.
Пробуйте...
Ответ отправил: Prosto_Blackhowk (статус: 1-ый класс)
Ответ отправлен: 20.09.2006, 08:12

Отвечает: Tresda
Здравствуйте, Sanya!

Попробуйте сделать так:

st1:='A%';
SQL.Add('select * from database where Name Like ('st1')');
Open

или

st1:='A%';
SQL.Add('select * from database where Name Like '+st1);
Open

У меня без проблем работает такой вид конструкции при работе
Ответ отправил: Tresda (статус: 1-ый класс)
Ответ отправлен: 20.09.2006, 10:19


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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.36 от 06.09.2006
Яндекс Rambler's Top100

В избранное