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

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


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

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

Выпуск № 633
от 28.10.2006, 01:35

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


Вопрос № 59790: Здравствуйте! У меня 3 вопроса: 1) Как можно объявить метод своего класса на событие изменение переменной этого класса? 2) Нельзя ли взять форму и сам рисунок кнопок из заданных рисунков? 3) Можно ли на фон в форме поставить *.jpg или...
Вопрос № 59826: Здравствуйте! Помогите, пожалуйста, написать такую программу: Нужно узнать системную папку(C:Windows там, или что будет), потом, "пройти" в system32driversetc , открыть файл hosts и добавить туда такие строки 111.111.11.11 ...

Вопрос № 59.790
Здравствуйте!
У меня 3 вопроса:
1) Как можно объявить метод своего класса на событие изменение переменной этого класса?
2) Нельзя ли взять форму и сам рисунок кнопок из заданных рисунков?
3) Можно ли на фон в форме поставить *.jpg или *.gif и как?
Отправлен: 22.10.2006, 16:45
Вопрос задал: Томша Павел (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Monah
Здравствуйте, Томша Павел!

1) Скорее всего так -
Type
TMyEvent = procedure(Sender:TObject; var value:Integer) of Object;;

property onVarChange:TMyEvent;
property variable: integer read Fvariable write SetVariable;

procedure TMyClass.Setvariable(Value: integer);
begin
if Assigned (FonVarChange) Then FonVarChange(Self, value); Если событие активно вызываем до изменения.
FVariable:=value;
end;

2) Можно, но это достаточно долго описывать, поэтому отошлю к книге "Делфи глазами Хаккера" М.Фленова. Глава 3.8

Ответ отправил: Monah (статус: 5-ый класс)
Ответ отправлен: 22.10.2006, 17:56


Вопрос № 59.826
Здравствуйте!
Помогите, пожалуйста, написать такую программу:
Нужно узнать системную папку(C:Windows там, или что будет), потом, "пройти" в system32driversetc , открыть файл hosts и добавить туда такие строки
111.111.11.11 vkv.net.
111.111.11.11 forum.vkv
Но перед этим, нужно выполнить проверку на наличие этих строк.
Спасибо!

Приложение:

Отправлен: 22.10.2006, 22:55
Вопрос задал: Vic (статус: 10-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Vic!
Код в приложении. Вообще, совсем по-хорошему, можно было бы сформировать отдельный TStringList, поместить в него строки, которые надо добавить, передавать его в процедуру и в процедуре использовать метод AddStrings объекта TStringList.
Ну и еще эта процедура даже не пытается проверить, записывала ли она уже что-то в этот файл. Чтобы сделать все "по уму", можно воспользоваться чем-дь подобным этому:

AddOnlyExclusive(list: TStringList; line: string);
begin
if list.IndexOf(line) = -1 then list.Add(line);
end;

Приложение:

---------
Не узнаешь - не попробуешь.

Ответ отправил: Сухомлин Кирилл Владимирович (статус: Практикант)
Ответ отправлен: 23.10.2006, 00:22

Отвечает: sir henry
Здравствуйте, Vic!
Можно сделать так:
1. Открыть этот файл как обычный текстовый с помощью Reset().
2. Считывать строки и проверять каждую на наличие '111.111.11.11 vkv.net' и '111.111.11.11 forum.vkv'.
3. Если таких строк не обнаружилось, то закрыть и открыть для добавления с помощью Append().

Приложение:

Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 23.10.2006, 08:21
Оценка за ответ: 4
Комментарий оценки:
Гм, скопировал, протестил - загрузка проца на 99-100%. Убрал проверку - всё нормально...
А может у меня руки просто кривые?

Отвечает: Sattar
Здравствуйте, 11!
var
a : array[0..144] of char;
F:TextFile;
s:string;
Net,Forum:boolean;
procedure TForm1.Button1Click(Sender: TObject);
begin
GetSystemDirectory(a, sizeof(a));
AssignFile(f,StrPas(a)+'driversetchosts');
Reset(f);
while not Eof(F) do
begin
readln(F,S);
if pos('vkv.net',s)=0 then Net:=true else Net:=False;
if pos('forum.vkv',s)=0 then Forum:=true else Forum:=False;
end;
Append(F);
if Net then Writeln(F,'111.111.11.11 vkv.net');
if Forum then Writeln(F,'111.111.11.11 forum.vkv');
CloseFile(F);
end;
Ответ отправил: Sattar (статус: 2-ой класс)
Ответ отправлен: 23.10.2006, 18:26


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

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

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

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

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

В избранное