Вопрос № 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