![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сеть в консоле [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;