Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сеть в консоле [D5, Win2k]


mktl ©   (2003-10-16 17:33:00) 

Народ!
Подскажите, пожалуйста, как в консольном приложении работать с сетью???


mktl   (2003-10-22 17:48:00) [1]

Спасибо. :)
Попробую в TRichEdite Менять цвета отдельных символов.


Digitman   (2003-10-22 17:38:00) [2]

в TMemo позиц-е курсора есть
если нужно работать с цветом, то - TRichEdit


mktl   (2003-10-22 17:31:00) [3]

согласен, что алгоритм пересмотреть нужно...
А MEMO не подходит, так как там есть позиционирование курсора и установка цвета на различные символы...


Digitman   (2003-10-22 17:26:00) [4]


> необходимо написать эмулятор терминала


обычный TMemo в обычном GUI-приложении справляется с задачей визуализации "терминальной консоли" ничуть не хуже , чем консольное окно в конс.приложении


> Через GUI что-то тормозит прорисовка символов


значит, алгоритм твой некорректен


mktl   (2003-10-22 17:21:00) [5]

Выбор обосновывается тем, что необходимо написать эмулятор терминала с нестандартной системой команд. Через GUI что-то тормозит прорисовка символов (а ожет я тормозил когда писал), пробовал через TDXForm-там не смог использовать некоторые нестандартные шрифты... Решил попробовать в консольном режиме...


Digitman   (2003-10-22 17:07:00) [6]


> mktl


объясни, чем вообще обоснован выбор тобой именно консольного, а не GUI- приложения


Polevi   (2003-10-22 17:00:00) [7]

Win32 programmer"s reference / Console function


Digitman   (2003-10-22 17:00:00) [8]


> где ещё можно найти подобную информацию??


msdn.microsoft.com


mktl   (2003-10-22 16:55:00) [9]

Сперва у меня была главной проблемой коннект из консольного окна к серверу. Эту проблему я решил с вашей помощью, а теперь я столкнулся с тем, что мне необходимо считывать с клавиатуры по одному символу, а так же управлять цветом символов на экране и т. п.
Я согласен с Digitman-ом, что это уже не относится к сети... Но как продолжение темы я здесь и писал...
А где ещё можно найти подобную информацию??


Digitman   (2003-10-22 14:24:00) [10]


> А что делать, есл мне нужно считывать по одному символу,
> или коду?? Возможно ли позиционирование курсора в окне консоле,
> изменение цвета, считывание данных с экрана и т.п.??


А какое отношение имеет все это к теме изначально заданного вопроса ? Работа с конс.приложением и его ресурсами - это одна отдельная тема, а работа с сетью и сет.ресурсами - совершенно другая, никак не касающаяся системных механизмов работы с консолью...

пересекаются эти две темы лишь в одном : если работа с Winsock-объектами организована с использованием неблок.асинхр.режима с использованием механизма оконныхнотификаций о событиях сетев.тренспорта (этот режим и механизм по умолчанию устанавливается при создании VCL-объектов TServerSocket/TClientSocket), то при организации такой работы в консольном приложении требуется явная организация цикла выборки/диспетчеризации оконных сообщений в том кодовом потоке, который создает Winsock-объект[ы]


mktl   (2003-10-22 13:49:00) [11]

А что делать, есл мне нужно считывать по одному символу, или коду?? Возможно ли позиционирование курсора в окне консоле, изменение цвета, считывание данных с экрана и т.п.??


Digitman   (2003-10-22 12:08:00) [12]


> mktl


при старте приложения создай доп.код.поток

в нем создавай гнездо, настраивай его как тебе нужно, вызывай метод коннекта и далее - цикл обработки сообщений

после создания доп.код.потока работай с конс.вводом/выводом как обычно - Readln/writeln и т.д. и т.п.

при завершении конс.приложения сначала корректно терминируй доп.код.поток (если он еще работает на этот момент) и дождись его завершения


mktl   (2003-10-22 11:25:00) [13]

Спасибо, помогло.
А как обработать события клавиатуры???


Digitman   (2003-10-21 10:03:00) [14]

в ран-тайм программно назначь событиям OnConnect() и OnError() процедуры обработки, являющиеся соответствующими допустимыми методами любого существующего объекта

TMyObject = class
...
procedure OnConnect(Sender: TObject; Socket: TCustomWinSocket);
...
end;

...

var MyObject: TObject; Msg: TMsg;

...

MyClientSocket.OnConnect := MyObject.OnConnect;
MyClientSocket.Open;

while GetMessage(Msg, 0, 0, 0) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;


mktl   (2003-10-21 09:27:00) [15]

Извините, может я сморожу глупость, а как обрабатывать события подключения и т.п. в консольном приложении?


Digitman   (2003-10-17 13:29:00) [16]


> как в консольном приложении


точно так же как и в любом другом


KDS   (2003-10-16 19:11:00) [17]

Создавать компоненты не в дизайн тайм, а в рантайм
типа
......
var ClientSocket1:TClientSocket;
........

try
ClientSocket1:=TClientSocket.Create(nil);
ClientSocket1.Host:=
Host.Address:=
....
finally
ClientSocket1.Free;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо