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

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


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

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

Выпуск № 521
от 03.07.2006, 17:05

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


Вопрос № 47501: Здравствуйте! Можно ли как нибудь остановить событие. В частности - закрытие формы. Чтобы нажал например пользователь альт эф 4 и вопрос выскакивает - действительно закрыть? да - закрывается, нет не закрывается....
Вопрос № 47511: Уважаемые эксперты! Очень нужна помощь. Я мало чего знаю и понимаю в делфи. Мне нужно написать сетевой чат. Нашёл в нете пару программных кодов, подходящих мне. Но немогу ничего сделать, потому как не пойму где взять TChatForm. помогите пожалуйстса....
Вопрос № 47515: Доброе время суток! Как мне из memo1 в memo2 выполнить следующие действия? 1.заменить первую букву каждого слова на заглавную 2. удалить все повторяющиеся буквы, стоящие рядом 3. удалить цифры, если они встречаются 4. определит...
Вопрос № 47517: Если я ввожу поочерёдно в Edit1.text числа то как мне определить являются ли эти чила дружественными?, ели да то вывести это число в memo1 если нет то вывести его в memo2.... и до тех пор пока не будут найдены 15 дружественных чисел! ..
Вопрос № 47518: Гм... я наверно туплю, но как получить индекс выбраного элемента в TreeView?...
Вопрос № 47553: Здравствуйте Уважаемые Эксперты ! Помогите сделать программу ,которая приклеивала к файлу(.ехе) другой файл(.exe) Пробовал сделать не получается файл не приклеивается ,а перезаписывает....

Вопрос № 47.501
Здравствуйте!
Можно ли как нибудь остановить событие. В частности - закрытие формы. Чтобы нажал например пользователь альт эф 4 и вопрос выскакивает - действительно закрыть? да - закрывается, нет не закрывается.
Отправлен: 27.06.2006, 20:12
Вопрос задал: ququ1 (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: DeVampir
Здравствуйте, ququ1!
Можно генерировать исключене EAbort, просто напишите Abort; и выполнение любой процедуры остановится
Для остановки закрытия формы используйте событие формы OnCloseQuery. Событие имеет параметр CanClose: Boolean, если ему присвоить False, то форма не закроется
---------
Нам будет трудно - это терпимо! (с) М. Горшенев
Ответ отправил: DeVampir (статус: 2-ой класс)
Ответ отправлен: 27.06.2006, 20:27

Отвечает: Татьяна
Здравствуйте, ququ1!
В дельфи это можно сделать немного проще, в событии оnClose формы пишете примерно то, что описано в приложении

Приложение:

---------
Возможно все. И ничего возможно тоже.

Ответ отправила: Татьяна (статус: Студент)
Ответ отправлен: 27.06.2006, 20:56

Отвечает: Евгения
Здравствуйте, ququ1!
При закрытии:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if messagedlg('Вы уверены?',mtConfirmation,[mbYes,mbNo],0)=mrYes
then CanClose:=true
else CanClose:=false;
end;

Счастливо!

---------
Я не волшебник, я только учусь... А разве кто-то обещал, что будет легко?
Ответ отправила: Евгения (статус: 7-ой класс)
Ответ отправлен: 27.06.2006, 20:58


Вопрос № 47.511
Уважаемые эксперты! Очень нужна помощь. Я мало чего знаю и понимаю в делфи. Мне нужно написать сетевой чат. Нашёл в нете пару программных кодов, подходящих мне. Но немогу ничего сделать, потому как не пойму где взять TChatForm. помогите пожалуйстса.
Отправлен: 27.06.2006, 22:08
Вопрос задал: Kormilo (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Ерёмин Андрей
Здравствуйте, Kormilo!
На самом деле, TCharForm - это и не компонент никакой. Это просто название формы. В Object Inspector для основного окна измените свойство Name на ChatForm. Всё и заработает, если, конечно, это единственная проблема.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 27.06.2006, 22:26

Отвечает: Shady
Здравствуйте, Kormilo!
TChatForm - так просто назвали форму :)

Я не знаю какая у вас версия Delphi, но предположим, что компоненты Indy у вас есть. Создаем новое приложение, кидаем на форму компоненты IdUDPClient1, IdUDPServer1 из вкладки Indy.

В свойствах IdUDPClient1 устанавливаем:
Active = True
BroadcastEnabled = True
Host = '127.0.0.1'
Port = 8095

В свойствах IdUDPServer1 устанавливаем:
BroadcastEnabled = True
DefaultPort = 8095

Так мы отправляем сообщение:
procedure TForm1.Button1Click(Sender: TObject);
begin
idudpclient1.Send('что-нибудь');
end;

Так получаем:
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes;
ABinding: TIdSocketHandle);
var s: string;
begin
s:=bytestostring(adata);
showmessage (s);
end;

Если что-то будет непонятно пишите на внутреннюю почту - объясню. Или, если желате могу отправить готовый пример.
Ответ отправил: Shady (статус: 4-ый класс)
Ответ отправлен: 27.06.2006, 22:38
Оценка за ответ: 5

Отвечает: LanK
Здравствуйте, Kormilo!

********************************************************
При установке Delphi5
c:Program FilesBorlandDelphi5DemosInternetChatchat.dpr

Чат построен именно на TServerSocket; TClientSocket;

Весь проект 3Kb. Пишите в личную почту свой E-Mail могу прислать.

********************************************************
При установке Delphi7
c:Program FilesBorlandDelphi7DemosInternetNetChatNetChat.dpr

Чат построен именно на TTcpClient; TTcpServer;
---------
Пусть все будет хорошо! Давайте жить дружно! :) И будет жить еще лучше!
Ответ отправил: LanK (статус: Студент)
Ответ отправлен: 28.06.2006, 12:39
Оценка за ответ: 5
Комментарий оценки:
Всем огромное спасибо, кто чем помог. Чат я сделал, всё работает. )


Вопрос № 47.515
Доброе время суток!
Как мне из memo1 в memo2 выполнить следующие действия?
1.заменить первую букву каждого слова на заглавную
2. удалить все повторяющиеся буквы, стоящие рядом
3. удалить цифры, если они встречаются
4. определить сколько раз входит в последовательность каждый символ
Отправлен: 27.06.2006, 23:12
Вопрос задал: Павел Игнатьевич (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: LanK
Здравствуйте, Павел Игнатьевич!

Полностью код Вашей задачи никто писать просто так не будет. А подсказать как его написать пожалуйста :)
**************************
Необходимо работать с строками Lines и в циклах собственно разбирать каждую строчку в отдельности.

типа:

if Memo1.Lines.Strings[0][1] = 'M' then Memo2.Text := 'ok M';
if Memo1.Lines.Strings[0][2] = 'e' then Memo2.Lines.Append('ok e');
if Memo1.Lines.Strings[0][3] = 'm' then Memo2.Lines.Append('ok m');
if Memo1.Lines.Strings[0][4] = 'e' then Memo2.Lines.Append('ok o');
if Memo1.Lines.Strings[0][5] = '1' then Memo2.Lines.Append('ok 1 это цифра !');

P.S. Думаю в купе с Вашим предыдущим вопросом Вы сумеете решить свою проблему.
---------
Пусть все будет хорошо! Давайте жить дружно! :) И будет жить еще лучше!
Ответ отправил: LanK (статус: Студент)
Ответ отправлен: 28.06.2006, 12:33
Оценка за ответ: 5
Комментарий оценки:
Спасибо что мне ответил у меня получаеться.


Вопрос № 47.517
Если я ввожу поочерёдно в Edit1.text числа то как мне определить являются ли эти чила дружественными?, ели да то вывести это число в memo1 если нет то вывести его в memo2.... и до тех пор пока не будут найдены 15 дружественных чисел!
Отправлен: 27.06.2006, 23:20
Вопрос задал: Павел Игнатьевич (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Решетник Д
Здравствуйте, Павел Игнатьевич!
Допустим, что поиск осуществляется по нажатию на клавишу.
тогда заводим глобальную переменную. инициализируем ее в 0.
при нажатии на клавишу смотрим. два варианта:
1. если число равно нулю, тогда не проверять его и не переходить в точку вычисления. и наче, если число отлично от 0, сравнивать число, которое хранится в переменное и то, которое в данный момент находится в поле ввода.
заносим в глобальную переменную текущее значение поля ввода. ждем нажатия клавиши.
Минус: нельзя сравнивать 0.
Выход: можно, например/, какой-то флажок установить, который будет обозначать первое введенное число.
2. Все то же самое, только без проверки на начальное значение (0).
Минус: может неправильно работать в том случае, если первое число, введенное пользователем, дружественное начальному (0).....
---------
Жизнь коротка, чтобы писать на ассемблере
Ответ отправил: Решетник Д (статус: 10-ый класс)
Ответ отправлен: 28.06.2006, 00:48
Оценка за ответ: 5


Вопрос № 47.518
Гм... я наверно туплю, но как получить индекс выбраного элемента в TreeView?
Отправлен: 27.06.2006, 23:50
Вопрос задал: Sysanin (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Sysanin!

TreeView.Selected.AbsoluteIndex - абсолютный индекс
TreeView.Selected.Index - индекс в текущей ветке

Удачи!
---------
Ответы на все вопросы - на сайте www.ya.ru
Ответ отправил: Устинов Сергей Евгеньевич (статус: Студент)
Ответ отправлен: 28.06.2006, 00:19
Оценка за ответ: 5


Вопрос № 47.553
Здравствуйте Уважаемые Эксперты !
Помогите сделать программу ,которая приклеивала к файлу(.ехе) другой файл(.exe)
Пробовал сделать не получается файл не приклеивается ,а перезаписывает.

Приложение:

Отправлен: 28.06.2006, 09:42
Вопрос задал: Исаков Евгений Владимирович (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Решетник Д
Здравствуйте, Исаков Евгений Владимирович!
Могу Вам предложить только вариант с ресурсами.
Создаете файл *.rc
в него записываете такую структуру
<название раздела ресурсов> <название подраздела> <путь к файлу>
и компилируете ресурс с помощью программы brcc32.exe (с поставки Делфи)
полученый файл с расширением .res положите в папку с программой и прилинкуйте его директивой {$R <filename>}
А вот так файл можно выделить из ЕХЕ:
procedure TForm1.Button1Click(Sender: TObject);
var st: TResourceStream;
begin
st := TResourceStream.Create(hinstance, <название подраздела>, <название раздела ресурсов>);
st.SaveToFile(<имя внешнего файла, в который сохранить ЕХЕ>);
st.Free;
end;
---------
Жизнь коротка, чтобы писать на ассемблере
Ответ отправил: Решетник Д (статус: 10-ый класс)
Ответ отправлен: 28.06.2006, 10:10
Оценка за ответ: 3
Комментарий оценки:
мне нужно вариант с .exe

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

Цеплять к файлу легко - просто дописываете нужное Вам в конец.
Создайте проект. На форме OpenDialog1 и Button1
После нажатия на Button1 в первом окне выбираете exe файл к которому нужно что-то добавить (я эскспериментировал на копии файла calc.exe, думаю у всех имеется :) ), а потом файл, который нужно дописать. Результат будет в файле new_install.exe.
(смотри пример)

Все это обсуждалось нами тут

Удачи!

Приложение:

---------
Ответы на все вопросы - на сайте www.ya.ru

Ответ отправил: Устинов Сергей Евгеньевич (статус: Студент)
Ответ отправлен: 28.06.2006, 11:56
Оценка за ответ: 5
Комментарий оценки:
спасибо.

Отвечает: DeVampir
Здравствуйте, Исаков Евгений Владимирович!
Ваша программа записывает в файл f2 данные, начиная от начала. Если вы хотите дописать, попробуйте поставить указатель чтения-записи в конец файла. Для этого в классе TFileStream есть функция Seek (function Seek(Offset: Longint; Origin: Word): Longint; overload; virtual;), где свойство Origin вам нужно установить в soFromEnd (c конца файла).
Удачи!
---------
Нам будет трудно - это терпимо! (с) М. Горшенев
Ответ отправил: DeVampir (статус: 2-ой класс)
Ответ отправлен: 28.06.2006, 18:02
Оценка за ответ: 4


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

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

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

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

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

В избранное