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

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


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

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

Выпуск № 786
от 20.04.2007, 19:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 463, Экспертов: 98
В номере:Вопросов: 4, Ответов: 11


Вопрос № 82586: Здравствуйте уважаемые!Помогите пожалуйста мне в следующем!На форме комбобокс в него в ручную заносятся некие название нужно 1.Если в списке комбобокса его нет оно должно добавиться; 2.При следующем запуске программы оно должно уже быть в спи...
Вопрос № 82590: Здраствуйте експерты. У меня такой вопрос: при подключении к интернету компьютеру каждый раз присваиваеться новый IP адрес, можно ли с помощью Delphi зафиксировать его? (или без Delphi). Всем спасибо за ответы....
Вопрос № 82653: Здраствуйте уважаемые эксперты. У меня возникла проблемма, нужно автоматизаровать раздачу IP адресов на компьютеры корпоративной сети. Как средствами Дельфи можно задать IP адресс, Первичный и вторичный ДНС, поменять имя компьютера и загнать его в до...
Вопрос № 82685: Здравствуйте уважаемые эксперты!А не могли бы вы выложить коды клавишь всей клавиатуры?Заранее спасибо....

Вопрос № 82.586
Здравствуйте уважаемые!Помогите пожалуйста мне в следующем!На форме комбобокс в него в ручную заносятся некие название нужно
1.Если в списке комбобокса его нет оно должно добавиться;
2.При следующем запуске программы оно должно уже быть в списке.
Отправлен: 14.04.2007, 21:20
Вопрос задал: GAZOT (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Крылов Александр Владимирович
Здравствуйте, GAZOT!

procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
var
i:integer;
begin
// #13 - код клавиши Enter
if key=#13 then //закончили ввод элемента хотим добавить в общий список
for I := 0 to ComboBox1.Items.Count-1 do
if ComboBox1.Text=ComboBox1.Items.Strings[i] then exit; //такой элемент уже есть в списке, выходим из процедуры без добавления в список
ComboBox1.Items.Add(ComboBox1.Text);
end;
Для того, чтобы значения введенные ранее не исчезали при последующих запусках программы, их необходимо хранить в отдельном файле или базе данных
Ответ отправил: Крылов Александр Владимирович (статус: 3-ий класс)
Ответ отправлен: 14.04.2007, 21:47

Отвечает: Bingo
Здравствуйте, GAZOT!
Для сохранения содержимого Combobox1 удобно использовать TIniFile. Будем считывать содержимое при запуске приложения, а записывать - при закрытии. Ниже пример:

-----
var
ini:tinifile;
n,i:longint;

procedure TForm2.FormCreate(Sender: TObject);
begin
combobox1.Items.Clear;
ini:=tinifile.Create('C:item.txt');
n:=ini.ReadInteger('Combobox','Count',0);
for i := 1 to n do combobox1.Items.Add(ini.ReadString('Combobox',inttostr(i),''));
end;
procedure TForm2.FormDestroy(Sender: TObject);
begin
ini.WriteInteger('Combobox','Count',combobox1.Items.Count);
for i := 1 to combobox1.Items.Count do ini.WriteString('Combobox',inttostr(i),combobox1.Items.Strings[i-1]);
end;
-----
Удачи!
---------
C темным пивом в светлое будущее!
Ответ отправил: Bingo (статус: 3-ий класс)
Ответ отправлен: 14.04.2007, 22:52

Отвечает: W@NDeReR
Здравствуйте, GAZOT!

Ответ на первый ваш вопрос

Событие происходит по нажатию на кнопку:

procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
r: boolean;
begin
r:=False;
for i:=0 to ComboBox1.Items.Count-1 do
begin
if comboBox1.Items.Strings[i]=Edit1.Text then
r:=true;
end;
if r=true then exit;
if r=False then
ComboBox1.Items.Add(Edit1.Text);
end;

Ответ на второй ваш вопрос

Необходимо добавить в раздел uses модуль iniFiles;

Теперь по уничтожении формы ( onDestroy)(сохрание содержимого ComboBox1) написать следующий код:

procedure TForm1.FormDestroy(Sender: TObject);
var
Save: TIniFile;
t: integer;
begin
Save := TIniFile.Create(ExtractFilePath(ParamStr(0)) +'ComboBox.ini');
for t := 0 to ComboBox1.Items.Count - 1 do
Save.WriteString('ComboBox1', 'Stroka' + IntToStr(t+1), ComboBox1.Items.Strings[t]);
Save.Free;
end;

А затем по созданию формы (onCreate) (Загрузка содержимого ComboBox1) написать следующий код:

procedure TForm1.FormCreate(Sender: TObject);
var
Load: TIniFile;
names: TStringList;
i: integer;
begin
Load := TIniFile.Create(ExtractFilePath(ParamStr(0)) +'ComboBox.ini');
names := TStringList.Create;
Load.ReadSection('ComboBox1', names);
for i := 0 to Names.Count - 1 do
ComboBox1.Items.Add(Load.ReadString('ComboBox1', names.Strings[i], ''));
names.Destroy;
Load.Destroy;
end;

---------
Опыт — дитя мысли, а мысль — дитя действия. Нельзя учиться по книгам.
Ответ отправил: W@NDeReR (статус: 3-ий класс)
Ответ отправлен: 15.04.2007, 10:25

Отвечает: chikanok
Здравствуйте, GAZOT!
Вот вам короткие и рабочие ответы.

Приложение:

---------
Главное желание,а там разберёмся!

Ответ отправил: chikanok (статус: 3-ий класс)
Ответ отправлен: 15.04.2007, 12:18
Оценка за ответ: 5


Вопрос № 82.590
Здраствуйте експерты.
У меня такой вопрос: при подключении к интернету компьютеру каждый раз присваиваеться новый IP адрес, можно ли с помощью Delphi зафиксировать его? (или без Delphi).
Всем спасибо за ответы.
Отправлен: 14.04.2007, 21:49
Вопрос задал: Иван Ивановввв (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Menand
Здравствуйте, Иван Ивановввв!

Непонятно, каким способом вы к Интернету подключаетесь.. от этого многое зависит. В любом случае это зависит исключительно от провайдера, сделать это с Delphi нельзя, как впрочем и с помощью любого другого языка программирования, ибо IP выдаётся сервером провайдера.
Ответ отправил: Menand (статус: 7-ой класс)
Ответ отправлен: 14.04.2007, 22:31
Оценка за ответ: 5

Отвечает: Bingo
Здравствуйте, Иван Ивановввв!
То, что сменить адрес нельзя - больше подходит для того случая, когда доступ к интернету осуществляется через локальную сеть (там даются фиксированные адреса). Если же Вы простым образом через Dial-Up выходите в интернет, то работать со СВОИМ IP адресом МОЖНО, при условии, что он в данный момент не занят кем-то другим. Для Delphi я так толком ничего и не нашел, но могу рассказать, как осущестивить подобные настройки через XP. Для этого:
1. Открываем папочку "Сетевые подключения", например, через Пуск=>панель управления.
2. Выбираем соединение по умолчанию и жмем "Свойства".
3. Выбираем вкладку "Cеть".
4. Находим в списке "Протокол Интернета TCP/IP" и два раза щелкаем по нему.
5. Далее выбираем "Использовать следующий IP адрес" и указываем свой. НО! указать можно адрес в пределах, которые допустимы данному провайдеру инета.
Полагаю, что эти настройки должны где-то храниться операционной системой в реестре. Попробуте задать вопрос в рассылку "Тонкости работы с реестром", если Вым действительно чем то помогут (подскажут ключик), то как это организовать через Delphi я расскажу.
Удачи!
---------
C темным пивом в светлое будущее!
Ответ отправил: Bingo (статус: 3-ий класс)
Ответ отправлен: 14.04.2007, 23:15
Оценка за ответ: 5
Комментарий оценки:
Спасибо большое, настройки я нашел, сейчас попробую поискать в реестре.

Отвечает: василий1
Здравствуйте, Иван Ивановввв!

используйте ini файлы либо реестр
Ответ отправил: василий1 (статус: 3-ий класс)
Ответ отправлен: 15.04.2007, 15:58


Вопрос № 82.653
Здраствуйте уважаемые эксперты. У меня возникла проблемма, нужно автоматизаровать раздачу IP адресов на компьютеры корпоративной сети. Как средствами Дельфи можно задать IP адресс, Первичный и вторичный ДНС, поменять имя компьютера и загнать его в домен. Спасибо за любую информацию, про IPи имя компьютера инфу я нашел но может вы предложете более красивое решение.

Приложение:

Отправлен: 15.04.2007, 15:14
Вопрос задал: Jakoni (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 11)

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

Вы выбрали верный подход к решению задачи через запуск соответствующей команды, но есть и еще один способ (причем этот способ позволяет настроить адреса если у Вас установлено более одной карты).

Данные о настройках IP можно найти в реестре в такой ветке:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParametersAdapters
где ключе вида {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} - идентификатор адаптера, если у вас две сетевые то у Вас должно быть да различный ключа.
Далее в HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices TcpipParametersInterfaces{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} Вы найдете настройки конкретного адаптера.
В таких ключах:
IPAddress - сам IP адрес
SubnetMask - маска подсети
NameServer - DNS сервер
DefaultGateway - адрес шлюза.

Достучаться до реестру при помощи кода можно таким образом:

.........
s:='SoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer';
Reg:=TRegistry.Create;
reg.openkey(s,false);
if reg.ValueExists(key)
then
begin
......
end;
Reg.CloseKey;
Reg.Free;
......


Только нужно дописать: uses Registry;

Если будут вопросы обращайтесь.
По поводу имени компьютера - Вы нашли наиболее оптимальный вариант - куда уже красивей.. :)

Good Luck!!!

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


Вопрос № 82.685
Здравствуйте уважаемые эксперты!А не могли бы вы выложить коды клавишь всей клавиатуры?Заранее спасибо.
Отправлен: 15.04.2007, 18:59
Вопрос задал: GAZOT (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

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

Вам будет проше скачать программу, которая показывает эти коды по ссылке.

А вот ссылка и на саму таблицу кодов.

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

Отвечает: W@NDeReR
Здравствуйте, GAZOT!
Вот смотрите в приложении

Приложение:

---------
Опыт — дитя мысли, а мысль — дитя действия. Нельзя учиться по книгам.

Ответ отправил: W@NDeReR (статус: 3-ий класс)
Ответ отправлен: 15.04.2007, 19:26
Оценка за ответ: 5

Отвечает: AlexanderObrjadin
Здравствуйте, GAZOT!

Обработайте KeyDown() или KeyPress(),
результат сохраните и все

Ответ отправил: AlexanderObrjadin (статус: 1-ый класс)
Ответ отправлен: 15.04.2007, 21:56


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

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

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

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

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

В избранное