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

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


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C++ Builder / Delphi

Выпуск № 178
от 17.06.2003, 18:10

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 741
Отправлено ответов: 1333
Активность: 179.8 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Zensor
Статус: Начальный
Общий рейтинг: 153.84
[Подробней >>]
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 116.93
URL: Пристанище неодинокого программиста
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 151.81
URL: Программирование
[Подробней >>]
 
=FeanaR=
Статус: Начальный
Общий рейтинг: 121.42
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 108.17
[Подробней >>]
ART_43
Статус: Начальный
Общий рейтинг: 118.51
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 732. Здравствуйте, уважаемые эксперты. В общем виде вопрос такой, как не используя визуальные компонент... (ответов: 3)
Вопрос № 734. Уважаемые эксперты, вот два вопроса: 1. Как сделать в Delphi чтобы окно консоли (или формы) не было... (ответов: 3)
Вопрос № 735. хайте, эксперты! Как через Delphi давать команды модему.... (ответов: 2)
Вопрос № 737. Привет эксперты! Никто случайно не писал или не видел где-нибудь программу классный журнал(как в шко... (ответов: 2)
Вопрос № 738. Здравствуйте, уважаемые эксперты! У меня возникла проблема: я создаю обычное консольное приложение н... (ответов: 5)

Вопросов: 5, ответов: 15


 Вопрос № 732

Здравствуйте, уважаемые эксперты.
В общем виде вопрос такой, как не используя визуальные компоненты повесить обработчик события на определенную процедуру.
На примере (см. приложение). Нужно у объекта CLI на событие OnRead повесить обработку процедуры ReadData.
Буду очень благодарен за любой ответ.
Если есть примеры, то можите высылать на мыло.


Приложение:


Вопрос отправлен: 12.06.2003, 19:18
Отправитель: Fess (lomovskih@yandex.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Zensor

Здравствуйте, Fess!
TClientSocket - это визуальный компонент.
Используйте сокет-ЭЙПИАЙ (WinSock).
Найдите в каталоге дельфи фаял WinSock.PAS и
взгляните на присутствующие в нём прецедуры и функции.

Ответ отправлен: 12.06.2003, 20:39
Отправитель: Zensor


Отвечает Артём Шегеда

Добрый день, Fess!

Bob Johnson дал исчерпывающий ответ - подтверждаю его правильность! В качестве дополнения привожу пример программы. Только использовать компоненты TClientSocket и TServerSocket в таком виде бессмысленно: размер прогаммы составит всё те же 300К...


Приложение:

Ответ отправлен: 13.06.2003, 15:48
Отправитель: Артём Шегеда


Отвечает Bob Johnson

Доброе время суток, Fess!
Смотрим тип события:
type TSocketNotifyEvent = procedure (Sender: TObject; Socket: TCustomWinSocket) of object;

Значит прежде всего тебе необходимо не просто процедуру, а метод класса, например, класса TForm1.
procedure TForm1.ReadData(Sender: TObject; Socket: TCustomWinSocket);
а затем выполнить CLI.OnRead = ReadData;
Нет класса? Без него не получится. Дело в том, что реально любой метод класса - это функция, которая принимает на 1 параметр больше, чем описано. Этот "невидимый" и первый по очереди параметр является ничем иным, как указателем на текущий экземпляр класса (self в дельфи и this в С++). Поэтому, любое событие, которое описывается как procedure ... of object является не просто 4-х байтным указателем на процедуру, а 2-мя 4-х байтными указателями (т.е. 8-ми байтным!), из которых один указывает непосредственно на процедуру, а другой - на экземпляр класса, у которого будет вызвана эта процедура (метод).
В общем, если у тебя нет класса, придется его создать. И описать в нем один единственный метод (или не один, но это - твое дело). Этот метод должен принимать, естественно, те параметры, что нужно.
Ну и потом ты сможешь уже выполнить присвоение.

* EMan1.2: ---===*** The Eternal Power ***===---


Ответ отправлен: 13.06.2003, 03:46
Отправитель: Bob Johnson


 Вопрос № 734

Уважаемые эксперты, вот два вопроса:
1. Как сделать в Delphi чтобы окно консоли (или формы)
не было видно?
2. Как в реестре не системного винта (например, друг пришел фильмов перекинуть) сделать нужные мне изменения?



Вопрос отправлен: 13.06.2003, 00:00
Отправитель: HaM

[Следующий вопрос >>] [Список вопросов]

Отвечает =FeanaR=

Здравствуйте, HaM!
Главную форму программы можно скрыть так:
Application.MainForm.Visible:=false;
Насчёт консоли... Попробуйте получить его handle с помощью
findwindow (модуль ShellApi) и пошлите ему сообщение WM_Hide.

Ответ отправлен: 15.06.2003, 22:15
Отправитель: =FeanaR=


Отвечает Bob Johnson

Здравствуйте, HaM!
1. У формы есть метод Hide. У окна консоли - ShowWindow (GetConsoleWindow, SW_HIDE);
2. Видимо никак.

* EMan1.2: ---===*** The Eternal Power ***===---


Ответ отправлен: 13.06.2003, 03:46
Отправитель: Bob Johnson


Отвечает Zensor

Здравствуйте, HaM!
1. В свойствах формы поставь visible:=false;
В инете полно инфы по этому поводу, и как из таскбара и из панели задач скрыться. А консоль зачем? чтобы размер уменьшить, можно на чистом эйпиае писать. Попробуй в сети поискать компоненты KOL. Непожалеешь.


Ответ отправлен: 13.06.2003, 08:00
Отправитель: Zensor


 Вопрос № 735

хайте, эксперты!
Как через Delphi давать команды модему.



Вопрос отправлен: 13.06.2003, 08:16
Отправитель: Zensor (ZFTR@Rambler.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Bob Johnson

Доброе время суток, Zensor!
  HANDLE h := CreateFile ("COM2", GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
var dummy : integer;
WriteFile (h, 'ATDP777777'#13#10, 12, @dummy, 0);
CloseHandle (h);

Может не откомпилироваться, но общая идея должна быть понятна.

* EMan1.2: ---===*** The Eternal Power ***===---


Ответ отправлен: 14.06.2003, 00:54
Отправитель: Bob Johnson


Отвечает =FeanaR=

Здравствуйте, Zensor!
Попробуй вот этот модуль. Я его взял из Kulib'ы,
и успешно использовал.

Приложение:

Ответ отправлен: 15.06.2003, 22:15
Отправитель: =FeanaR=


 Вопрос № 737

Привет эксперты!
Никто случайно не писал или не видел где-нибудь программу классный журнал(как в школе для оценок). Если есть вышлите плиз(исходник) или помогите советом как это все организовать.



Вопрос отправлен: 14.06.2003, 13:18
Отправитель: Andrey

[Следующий вопрос >>] [Список вопросов]

Отвечает Bob Johnson

Доброе время суток, Andrey!
А в чем проблема написать такой самому - если с использованием БД, так вообще просто...

* EMan1.3: ---===*** The Eternal Power ***===---


Ответ отправлен: 14.06.2003, 23:22
Отправитель: Bob Johnson


Отвечает Zensor

Здравствуйте, Andrey!
в среду попробуй заползти на мой сайт. Там такая программа с исходниками на Borland Pascal'е будет. Может раньше закачаю, как настроение будет.

Приложение:

Ответ отправлен: 15.06.2003, 08:31
Отправитель: Zensor


 Вопрос № 738

Здравствуйте, уважаемые эксперты!
У меня возникла проблема: я создаю обычное консольное приложение на delphi, мне надо создать функцию, стирающую набранный текст в консольном окне этого приложения. Может быть такая есть в стандартных модулях delphi? Эта функция аналогична функции cls в коммандных файлах.
Заранее благодарю, maDByte



Вопрос отправлен: 14.06.2003, 18:05
Отправитель: maDByte

[Следующий вопрос >>] [Список вопросов]

Отвечает =FeanaR=

Приветствую Вас, maDByte!
Попробуй код в приложении. Решение довольно просто, но я у
себя проверял и всё работает.

Приложение:

Ответ отправлен: 15.06.2003, 22:15
Отправитель: =FeanaR=


Отвечает Zensor

Приветствую Вас, maDByte!
procedure zcls;
var
i:byte;
begin
for i:=1 to 40 do writeln;
end;
;)
можно и так. но ненужно.
а чё вы все в консольный режим на дельфях ударились?
турбо паскаля мало?

Ответ отправлен: 14.06.2003, 20:11
Отправитель: Zensor


Отвечает vitya

Доброе время суток, maDByte!
Например ты можешь взять и с помощью функции WriteConsoleOutput (это апишная функция) просто залить все пространство пробелами.

Ответ отправлен: 15.06.2003, 10:28
Отправитель: vitya


Отвечает Артём Шегеда

Добрый день, maDByte!

Я у себя на сайте выложил исходный код модуля CRT для Delphi. Можешь брать.

Ответ отправлен: 16.06.2003, 13:14
Отправитель: Артём Шегеда


Отвечает ART_43

Доброе время суток, maDByte!
procedure ClrScr;
var
c:_COORD;
i:cardinal;
h:cardinal;
ii:_CONSOLE_SCREEN_BUFFER_INFO;
begin
c.X:=0;
c.Y:=0;
i:=0;
h:=GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(h,ii);
FillConsoleOutputCharacter(h,' ',ii.dwSize.X*ii.dwSize.Y,c,i);
end;


Ответ отправлен: 16.06.2003, 10:35
Отправитель: ART_43



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


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


Получить ответов:


 Выбор рассылки

Программисту
Assembler (38)
C / C++ (27)
Perl (5)
Builder / Delphi (17)
Pascal (28)
Basic / VBA (9)
Java / JavaScript (11)
PHP (5)
MySQL / MSSQL (6)
Пользователю
Windows 95/98/Me (31)
Windows NT/2000/XP (26)
"Железо" (19)
Поиск информации (13)
Администратору
Windows NT/2000/XP (13)
Linux / Unix (6)
Юристу
Гражданское право (7)
Семейное право (3)
Трудовое право (4)
КоАП (3)

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




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное