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

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


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

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

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

Выпуск № 1087
от 09.03.2008, 18:05

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

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 125826: Здравствуйте Уважаемые!Нашёл пример функции интерполяции методом Лагранжа function Lagr(n: Byte; xt: Real; x,y: Vect): real; var i,j: Byte; S,P: Real; begin S:=0; for i:=0 to n do begin P:=1; for j:=0 to n ...
Вопрос № 125843: Здравствуйте! Я студент и у меня дипломная на тему "Настройка Interbase Server ". Подскажите пожалуйста где можно найти инфо(книжки, статьи, сайты) по даной теме, чтоб научиться и сделать самому... спасибо.. ...
Вопрос № 125883: Здравствуйте! Delphi 7. Служба принимает входящие письма от клиентов по протоколу SMTP порт 25. Используется компонента IdSMTPServer с вкладки Indy Servers. Происходит авторизация по имени и паролю. А как узнать ip-адрес клиента?...
Вопрос № 125899: Здравствуйте! Используется некая служба в Windows XP Pr назовем ее ОбработчикДанных, которая иногда подвешивается и соответственно вешает другую прогу. Вопрос: можно ли программно выключить на некоторое время и включить обратно данную службу....
Вопрос № 125910: Здравствуйте! У Меня такая проблема: Необходимо вводить в TRichEdit разноцветный текст(причем текст вводится методом RichEdit1.Lines.Add(St);)...
Вопрос № 125911: И ещё один вопрос: Мне нужно получить IP-адрес моего компьютера, как это сделать?...

Вопрос № 125.826
Здравствуйте Уважаемые!Нашёл пример функции интерполяции методом Лагранжа

function Lagr(n: Byte; xt: Real; x,y: Vect): real;
var i,j: Byte; S,P: Real;
begin
S:=0;
for i:=0 to n do
begin
P:=1;
for j:=0 to n do
if i<>j then P:=P*(xt-x[j])/(x[i]-x[j]);
S:=S+y[i]*P;
end;
Lagr:=S;
end;
где const n=7; {n+1 - число узловых точек}
type Vect=array[0..n] of real;
,но в моём случае число узловых точек заранее неизвестно,т.е мне нужно описывать Vect не статическим,а динамическим массивом,но как только я это делаю вылетает ошибка в описании функции.Как мне выйти из этого положения.

Отправлен: 03.03.2008, 17:47
Вопрос задал: Зотов.Г.А (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 9)

Отвечает: Delph
Здравствуйте, Зотов.Г.А!

Самое простое решение - описать новый тип данных:

type TMyVect =Array of Real;

После этого в функцию можно передавать переменные этого типа:

function Lagr(xt: Real; x,y: TMyVect): real;
...


К любому динамическому массиву (которые обычно предполагаются одномерными) можно применять функции Length() (длина массива в его элементах) и High() - индекс последнего элемента. Для задания новой длины массива используется процедура SetLength(Arr, NewLength), где Arr - динамический массив, NewLength - его новая длина. Поскольку индексация динамических массивов начинается с нуля, High() на всегда единицу меньше, чем Length(), и для массива нулевой длины возвращает -1 - недопустимый индекс. Значит, при использовании массива нужно убедиться, что он не пустой.

И ещё: всё, что Вы планируете использовать (переменная, описание нового типа и т.д.), нужно описывать ДО первого использования. В данном случае сначала описываете "массивный" тип данных, а потом определяете функцию, принимающую параметры этого типа. Переменную "массивного" типа можно вводить и после функции, но функция должна понимать, что же она принимает. Если использовать предложенное мною описание, то где-то в программе должно фигурировать описание двух переменных нашего типа, что-то вроде этого:

var Arr1, Arr2: TMyVect;

Эти переменные можно уже спокойно подставлять в функцию.
---------
Сомневайся во всём! Реальность часто бывает не такой, как мы о ней думаем.
Ответ отправил: Delph (статус: Студент)
Ответ отправлен: 04.03.2008, 08:49
Оценка за ответ: 5
Комментарий оценки:
Всё, что Вы планируете использовать (переменная, описание нового типа и т.д.), нужно описывать ДО первого использования. В этом и была ошибка,спасибо разобрался.


Вопрос № 125.843
Здравствуйте! Я студент и у меня дипломная на тему "Настройка Interbase Server ". Подскажите пожалуйста где можно найти инфо(книжки, статьи, сайты) по даной теме, чтоб научиться и сделать самому... спасибо..
Отправлен: 03.03.2008, 20:20
Вопрос задал: Дьяченко Александр Александрович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

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

http://www.ibase.ru/
Ответ отправил: Drbear (статус: 8-ой класс)
Ответ отправлен: 03.03.2008, 20:26
Оценка за ответ: 5
Комментарий оценки:
спасибо.. но все же хотелось ссылок на книги..

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

Firebird: руководство разработчика баз данных

Длинная ссылка.
-----
∙ Отредактировал: Зенченко Константин Николаевич (Профессионал)
∙ Дата редактирования: 03.03.2008, 22:29
Ответ отправил: Данилевич Игорь Владимирович (статус: 1-ый класс)
Ответ отправлен: 03.03.2008, 22:08
Оценка за ответ: 5
Комментарий оценки:
спасибо.. то что надо


Вопрос № 125.883
Здравствуйте!
Delphi 7.
Служба принимает входящие письма от клиентов по протоколу SMTP порт 25. Используется компонента IdSMTPServer с вкладки Indy Servers. Происходит авторизация по имени и паролю. А как узнать ip-адрес клиента?
Отправлен: 04.03.2008, 07:58
Вопрос задал: Munster (статус: 9-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Sosedov A.I.
Здравствуйте, Munster!

Обрабатывайте событие OnConnect. В его процедуру передается параметр AThread. У подключенного клиента будет IP адрес : AThread.Connection.Socket.Binding.PeerIP.

Если Вы почему-то опоздали к подключению, то можете работать со списком всех текущих подключений IdSMTPServer1.Threads.LockList.
Ответ отправил: Sosedov A.I. (статус: 2-ой класс)
Ответ отправлен: 04.03.2008, 16:07
Оценка за ответ: 5
Комментарий оценки:
Спасибо!!! Оказывается все так просто )


Вопрос № 125.899
Здравствуйте! Используется некая служба в Windows XP Pr назовем ее ОбработчикДанных, которая иногда подвешивается и соответственно вешает другую прогу. Вопрос: можно ли программно выключить на некоторое время и включить обратно данную службу.
Отправлен: 04.03.2008, 12:08
Вопрос задал: Sergey_Shur (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: MaratM
Здравствуйте, Sergey_Shur!
используйте через обычные ShellExecute комманды net start <имя службы> или net stop <имя службы>
Ответ отправил: MaratM (статус: 1-ый класс)
Ответ отправлен: 04.03.2008, 12:35

Отвечает: Gladiator
Здравствуйте, Sergey_Shur!
Из своей программы можно, даже не используя утилиту net, рекомендованную MaratM.
Пример смотрите в приложении.

Вызов функций осуществляется следующим образом:


ServiceStart('SERVER', 'MyService')

ServiceStop('SERVER', 'MyService')

Приложение:

Ответ отправил: Gladiator (статус: Студент)
Ответ отправлен: 05.03.2008, 08:15


Вопрос № 125.910
Здравствуйте! У Меня такая проблема:
Необходимо вводить в TRichEdit разноцветный текст(причем текст вводится методом RichEdit1.Lines.Add(St);)
Отправлен: 04.03.2008, 13:48
Вопрос задал: Вологин Всеволод Вячеславович (статус: 2-ой класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Drbear
Здравствуйте, Вологин Всеволод Вячеславович!

У TRichEdit есть свойство SelAttributes которое применяется к выделенному тексту и имеет все свойства Font.
пример:
RichEdit1.SelAttributes.Color := clGreen;
Ответ отправил: Drbear (статус: 8-ой класс)
Ответ отправлен: 04.03.2008, 16:30

Отвечает: Selya
Здравствуйте, Вологин Всеволод Вячеславович!
В RichEdite делаете выделение слова, которое хотите "покрасить".
Что то типа как в приложении...

Приложение:

Ответ отправил: Selya (статус: 9-ый класс)
Ответ отправлен: 04.03.2008, 23:13

Отвечает: Genia007
Здравствуйте, Вологин Всеволод Вячеславович!
Пример ввода строки с выбранным цветом, аналогично можно вводить слова разного цвета и даже разноцветные буквы в одном слове.
procedure TForm2.Button5Click(Sender: TObject);
begin
if not ColorDialog1.Execute then exit;
RichEdit1.SelAttributes.Color:= ColorDialog1.Color;
RichEdit1.Lines.Add(Edit3.Text);
end;
Ответ отправил: Genia007 (статус: 7-ой класс)
Ответ отправлен: 05.03.2008, 12:43


Вопрос № 125.911
И ещё один вопрос:
Мне нужно получить IP-адрес моего компьютера, как это сделать?
Отправлен: 04.03.2008, 13:51
Вопрос задал: Вологин Всеволод Вячеславович (статус: 2-ой класс)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Александр Жуйков
!!!
Здравствуйте, Вологин Всеволод Вячеславович!
Самый простой способ: набрать в командной строке "ping имя_компьютера", имя компьютера можно посмотреть: Пуск->Настройка->Система->Имя компьютера.

Ответ не по теме рассылки.
Если уж и писать, то можно было бы дать пример для Delphi, который выполнит эту работу и покажет результат.

-----
∙ Отредактировал: Николай Владимирович / Н.В. (Профессионал)
∙ Дата редактирования: 04.03.2008, 22:59
Ответ отправил: Александр Жуйков (статус: 1-ый класс)
Ответ отправлен: 04.03.2008, 14:47

Отвечает: Sosedov A.I.
Здравствуйте, Вологин Всеволод Вячеславович!

1. В uses надо добавить IdStack - библиотеку от Indy.
2. Опишите объектную переменную типа TIdStack.
3. Создайте экземпляр методом TidStack.CreateStack.
4. Используйте свойство LocalAddresses типа TStrings для получения списка IP адресов всех Ваших интерфейсов.

Приложение:

Ответ отправил: Sosedov A.I. (статус: 2-ой класс)
Ответ отправлен: 04.03.2008, 14:52

Отвечает: Marked One
Здравствуйте, Вологин Всеволод Вячеславович!
В приложении код. Он получает IP-адресс компьютера в локальной сети(это не IP-адрес в Интернете). Для работы этого приложения нужно подключить модуль WinSock2 в раздел uses. А сами модули можно скачать отсюда: http://rusfaq.ru/upload/232.

Приложение:

Ответ отправил: Marked One (статус: 6-ой класс)
Ответ отправлен: 04.03.2008, 20:20

Отвечает: Selya
!!!
Здравствуйте, Вологин Всеволод Вячеславович!
Пуск->Выполнить->Command->ipconfig

Ответ не по теме рассылки.
Если уж и писать, то можно было бы дать пример для Delphi, который выполнит эту команду и покажет результат.

-----
∙ Отредактировал: Николай Владимирович / Н.В. (Профессионал)
∙ Дата редактирования: 04.03.2008, 22:59
Ответ отправил: Selya (статус: 9-ый класс)
Ответ отправлен: 04.03.2008, 22:38

Отвечает: Genia007
Здравствуйте, Вологин Всеволод Вячеславович!
Получить IP-адрес своего компьютера можно следующим образом.
uses
WinSock;

function GetLocalIP: String;
const WSVer = $101;
var
wsaData: TWSAData;
P: PHostEnt;
Buf: array [0..127] of Char;
begin
Result := '';
if WSAStartup(WSVer, wsaData) = 0 then begin
if GetHostName(@Buf, 128) = 0 then begin
P := GetHostByName(@Buf);
if P <> nil then Result := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
end;
WSACleanup;
end;
end;
Ответ отправил: Genia007 (статус: 7-ой класс)
Ответ отправлен: 05.03.2008, 12:42


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

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

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

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

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

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


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


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

В избранное