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

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


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

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

Выпуск № 789
от 23.04.2007, 21:05

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


Вопрос № 83023: Уважаемые эксперты! Помогите пожалуйста, как получить права в NT для программирования в Ring0?...
Вопрос № 83036: Добрыть день. Как вбить в прогу формулу натурального логарифма? Заранее спасибо. .
Вопрос № 83057: будьте добры допишите небольшую прогу. основное задание сделано. нужно просто сделать контроль ввода. И так программа вычисляет след матрицы. хотелось бы чтобы в edit1 нельзя было вбивать больше 1 символа т.е. максимальное матрица равна 9, в этот же ...
Вопрос № 83058: Уважаемые эксперты, подскажите почему не работает код(в чем ошибка)/почему антивирус перехватывает прогу? Пытаюсь создать динамически форму, на ней все остальное. К основной форме прикреплен массив из объектов, объект состоит из формы(на форм...
Вопрос № 83084: Есть файл fdb - база данных Firebird. Как программно открыть эту базу с помощью FibPlus? Как узнать какие есть таблицы в базе и прочитать их данные? IBExpert с легкостью это делает (ему задаются только имя сервера, версия сервера, пользователь, парол...
Вопрос № 83132: Уважаемые эксперты подскажите пожалуйста. Мне надо к числу прибавить 50% напишите пожалуй небольшой пример. ...

Вопрос № 83.023
Уважаемые эксперты! Помогите пожалуйста, как получить права в NT для программирования в Ring0?
Отправлен: 17.04.2007, 21:11
Вопрос задал: Меженников Максим Сергеевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: ~Steep~
Здравствуйте, Меженников Максим Сергеевич!
Ну доступ в ринг0 вы наврятле получите.. хотя...
А зачем он вам? Поройте в сторону драйверов на Делфи..
---------
Все всегда делаеться к Лучшему!
Ответ отправил: ~Steep~ (статус: 6-ой класс)
Ответ отправлен: 18.04.2007, 07:08
Оценка за ответ: 3
Комментарий оценки:
Теоретически доступ в ринг0 можно осуществить с помощью Native API. RootKIT написать хочу)))


Вопрос № 83.036
Добрыть день. Как вбить в прогу формулу натурального логарифма? Заранее спасибо.
Отправлен: 17.04.2007, 22:25
Вопрос задал: SunnyKiller (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Louken
Здравствуйте, SunnyKiller!
Несовсем понятен Ваш вопрос.
Если Вам нужно вычислить натуральный логарифм числа n, то это можно сделать так: k:=Ln(n);
Ответ отправил: Louken (статус: 1-ый класс)
Ответ отправлен: 17.04.2007, 22:36

Отвечает: Necromancer
Здравствуйте, SunnyKiller!
Я так понял, вам нужно разложение натурального логарифма в ряд. Так вот, порывшись в старых конспектах по матанализу, я ее нашел:
ln(x+1) = сумма( ( (-1)^k+1 )*x^k/k ) + O( x^n ),
где О( x^n ) - бесконечно малая более высокого порядка, чем x^n,
но я думаю в задаче это не понадобиться.
Теперь все это в цикле for:

Удачи.

Приложение:

---------
Никогда не сдавайся, даже если боишься проиграть

Ответ отправил: Necromancer (статус: 1-ый класс)
Ответ отправлен: 18.04.2007, 11:19

Отвечает: Мисуно Михаил Петрович
Здравствуйте, SunnyKiller!
В Delphi уже есть функция натурального логарифма: ln(x).
Ответ отправил: Мисуно Михаил Петрович (статус: 1-ый класс)
Ответ отправлен: 18.04.2007, 21:06


Вопрос № 83.057
будьте добры допишите небольшую прогу. основное задание сделано. нужно просто сделать контроль ввода. И так программа вычисляет след матрицы. хотелось бы чтобы в edit1 нельзя было вбивать больше 1 символа т.е. максимальное матрица равна 9, в этот же едит не должны вводится буквы и отрицательные значение, при том все вводимые цифры должны быть целыми.
И есть еще 1 компанент который тоже нужно проверить на ввод.
StringGrid. дело в том что грамотно будет если после изменения ячейки была проверка на пустое значение и на onExit нужно проверить чтобы все ячейки были заполнены. в ячейки stringGrid можно вводить все кроме букв и дробных чисел.

Приложение:

Отправлен: 18.04.2007, 01:48
Вопрос задал: 12rus (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: PaVeL_Ekt
Здравствуйте, 12rus!

Вот простой пример
блокировки ввода (только цифры, ограничение символов)

Приложение:

---------
Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL

Ответ отправил: PaVeL_Ekt (статус: Студент)
Ответ отправлен: 18.04.2007, 08:10


Вопрос № 83.058
Уважаемые эксперты, подскажите почему не работает код(в чем ошибка)/почему антивирус перехватывает прогу?
Пытаюсь создать динамически форму, на ней все остальное.
К основной форме прикреплен массив из объектов, объект состоит из формы(на форме еще компоненты) и других переменных. Как сделать, чтоб форма создавалась динамически, появлялась сама со всеми компонентами на ней.
//код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Menus, StdCtrls;

type TFCli = class(TForm) //Форма для клиента
//public
CMenu: TMainMenu; //с компонентами
CButton1: TButton;
CImage: TImage;
end;

type TClient = class(TObject) //клиент[i] состоит из:
FCli: TFCli; //формы,
IPaddr: String[16]; //и дополнительных переменных: IP-адрес
port1: Integer; //порт 1,
port2: Integer; //порт2,
port3: Integer; //порт3,
CliVis: Boolean;
CliCtrl: Boolean;
end;

type TClients=array [1..10] of TClient;//Массив из клиентов(описан выше)

type TForm1 = class(TForm) //основная форма
Button1: TButton; //на всякий случай те же компоненты берем на ней
MainMenu1: TMainMenu;
Image1: TImage;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
public
Clients: TClients;
end;

type CliCou= 0..10;

var Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
// RegisterClasses([TMainMenu, TButton, TImage]); {при регистрации - перехватывает прогу антивирус}
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Clients[1]:=TClient.Create; //создаем сначала клиента
Form1.Clients[1].FCli:=TFCli.Create(Form1); //потом форму
(Form1.Clients[1].FCli as TFCli).Parent:=Form1; //родитель - Form1
end;

end.
Отправлен: 18.04.2007, 02:03
Вопрос задал: Ренат Байрамгулов (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: PGM
Здравствуйте, Ренат Байрамгулов!

К сожалению, вы не привели сообщения антивируса и не уточнили какой именно антивирус используется - здесь ничем помочь не могу (честно говоря непонятно, а зачем вам вообще подобная регистрация стандартных компонентов?)

Другой момент, который явно должен вызывать ошибку: каждой форме (классу формы) соответствует свой DFM файл (ресурс) и он грузится командой компилятору {$R *.dfm}, но в данном случае 2 класса форм в одном юните - TForm1 & TFCli - кому-то явно не хватит ресурса :). Советую вынести описание TFCli в отдельный юнит и не забыть создать для него DFM файл.

Еще один совет - дополнительные формы лучше создавать через вызов Application.CreateForm - это для Дельфи более родной способ (включаются встроенные механизмы управления формами, включая их освобождение) и поскольку TClient у вас класс, наверное, лучше это делать в его конструкторе (но это уже вопрос стиля - поступайте как удобнее)

Ответ отправил: PGM (статус: 5-ый класс)
Ответ отправлен: 18.04.2007, 10:47
Оценка за ответ: 5
Комментарий оценки:
Благодарен!!!


Вопрос № 83.084
Есть файл fdb - база данных Firebird. Как программно открыть эту базу с помощью FibPlus? Как узнать какие есть таблицы в базе и прочитать их данные? IBExpert с легкостью это делает (ему задаются только имя сервера, версия сервера, пользователь, пароль). Хочу аналогично уметь открывать базы.
Отправлен: 18.04.2007, 10:49
Вопрос задал: Rusland (статус: Профессионал)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Проходящий Мимо
Здравствуйте, Rusland!
Перечень таблиц и вьюшек IBExpert с легкостью узнает с системных таблиц при помощи следующего запроса:
Select *
from RDB$RELATIONS
where RDB$SYSTEM_FLAG = 0

Структуру полей таблиц можно узнать запросом
Select *
from RDB$RELATION_FIELDS
where RDB$RELATION_NAME = 'название_таблицы'.
Результаты, возвращаемые запросами можете обрабатывать, как Вам нужно. Удачи.
---------
Carpe diem!
Ответ отправил: Проходящий Мимо (статус: 8-ой класс)
Ответ отправлен: 18.04.2007, 11:26
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо. То что нужно.

Отвечает: Синельников Сергей
Здравствуйте, Rusland!

Для этого потребуется разместить на форме или в датамодуле следующее: FIBDatabase, FIBTransaction, FIBDataSet. В FIBDatabase заполняем DBName-файл базы данных, ConnectParams - имя пользователя и пароль, в DefaultTransaction - указывем на FIBTransaction. У FIBTransaction в DefaultDatabase - указывем ссылку на FIBDatabase. Далее в FIBDataSet заполняем свойства Database и Transaction, а в свойстве SQLs пишем запрос, любезно предоставленный "Проходящем мимо". Таким образом получаем список таблиц БД в FIBDataSet. Ну а потом добавляя другие компаненты FIBDataSet можно получать данные из таблиц. Вот как-то так.
Ответ отправил: Синельников Сергей (статус: 3-ий класс)
Ответ отправлен: 20.04.2007, 01:59


Вопрос № 83.132
Уважаемые эксперты подскажите пожалуйста. Мне надо к числу прибавить 50% напишите пожалуй небольшой пример.
Отправлен: 18.04.2007, 15:46
Вопрос задал: Smotrakov sacha (статус: Посетитель)
Всего ответов: 7
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Устинов С.Е.
Здравствуйте, Smotrakov sacha!

Например, к числу T нужно прибавить 50%.
T:=T*1.5;
Вот и все :)

Удачи!
---------
Ждешь квалифицированного ответа? Задай правильно вопрос!
Ответ отправил: Устинов С.Е. (статус: Практикант)
Ответ отправлен: 18.04.2007, 15:53

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

Можнодвумя способами, но один следует из другого. Полагаясь на определение получаем что:
x+50% - это x+x*50/100=x+x*0.5
В Delphi это можно написать так:

var x,p:real;
.........
x:=x+x*p/100;
.........

либо если вынести общий множитель то:
x:=x*(1+p/100);
.........


где переменная x - исходное число, а p - процент который необходимо прибавить.

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

Отвечает: Крылов Александр Владимирович
Здравствуйте, Smotrakov sacha!
var
i:real;
begin
//присваиваем i какое-то значение
i:=i*1.5;
end;
Ответ отправил: Крылов Александр Владимирович (статус: 3-ий класс)
Ответ отправлен: 18.04.2007, 16:00

Отвечает: василий1
Здравствуйте, Smotrakov sacha!

var
a,b,c:float;
begin
a:=99 ;// ваше число
b:= a /2 ; // заветные 50%
//или b:=a*0.5;
c:=a*b; // число которое должно получиться
end;

избыточность переменных надеюсь очевидна ))
смысл должен быть понятен
Ответ отправил: василий1 (статус: 3-ий класс)
Ответ отправлен: 18.04.2007, 17:03

Отвечает: W@NDeReR
Здравствуйте, Smotrakov sacha!
Вот пример:

x:=x+round((x*50)/100);

где х число к которому необходимо прибавить процент
50 само число процента ( может быть любым которое вам нужно)
---------
Опыт — дитя мысли, а мысль — дитя действия. Нельзя учиться по книгам.
Ответ отправил: W@NDeReR (статус: 3-ий класс)
Ответ отправлен: 18.04.2007, 18:00

Отвечает: Мисуно Михаил Петрович
Здравствуйте, Smotrakov sacha!
Проще всего : i:=i*1.5;
Ответ отправил: Мисуно Михаил Петрович (статус: 1-ый класс)
Ответ отправлен: 18.04.2007, 21:06

Отвечает: Diman Soldatov / DES
Здравствуйте, Smotrakov sacha!
Это же наверно 5 класс))

x:=x+x*0,5;
Ответ отправил: Diman Soldatov / DES (статус: 1-ый класс)
Ответ отправлен: 19.04.2007, 00:37


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

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

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

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

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

В избранное