Вопрос № 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. Всё и заработает, если, конечно, это единственная проблема.
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Отвечает: 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. определить сколько раз входит в последовательность каждый символ
Полностью код Вашей задачи никто писать просто так не будет. А подсказать как его написать пожалуйста :)
**************************
Необходимо работать с строками 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 дружественных чисел!
Отвечает: Решетник Д
Здравствуйте, Павел Игнатьевич!
Допустим, что поиск осуществляется по нажатию на клавишу.
тогда заводим глобальную переменную. инициализируем ее в 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)
Пробовал сделать не получается файл не приклеивается ,а перезаписывает.
Отвечает: Решетник Д
Здравствуйте, Исаков Евгений Владимирович!
Могу Вам предложить только вариант с ресурсами.
Создаете файл *.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