|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
как передать символы в мемо через idTelnet
Добрый день, подскажите как передать параметры в поле мемо через idTelnet?
Вот часть кода: Код:
procedure TForm1.IdTelnet1DataAvailable(Sender: TIdTelnet; const Buffer: TArray<System.Byte>); const CR=#13; LF=#10; var Start, Stop: integer; str:string; begin str := TEncoding.ANSI.GetString(Buffer); memo1.Lines.Add(''); start:=1; stop:=Pos(CR, str); if stop = 0 then stop:=length(str)+1; while start<=length(str) do begin memo1.Lines.Strings[memo1.Lines.Count - 1]:= memo1.Lines.Strings[memo1.Lines.count - 1] + copy(str, start, stop - start); if str[stop] = CR then begin memo1.Lines.Add(''); end; start:=stop+1; if start > length(str) then break; if str[start] = LF then start:=start+1; stop:=start; while (str[stop] <> CR) and (stop <=length(str)) do stop:=stop+1; end; end; procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char); var cmd:string; begin if IdTelnet1.connected then begin IdTelnet1.SendCh(Key); end; lmikle: пользуемся тегами оформления. первое предупреждение. В данном случае у меня передаются символы по одному и каждый сновой строки *** Attention! Please, don't restart this router! *** *A:router# s sh ho ow w Вопрос. как сделать, что бы передавались корректно символы? т.е таким образом *** Attention! Please, don't restart this router! *** *A:router# show Последний раз редактировалось lmikle, 18.06.2015 в 21:41. |
#2
|
||||
|
||||
Видимо ифа с условием добавления к данной строке не хватает
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#3
|
|||
|
|||
Цитата:
Можешь,пожалуйста, помочь? Я понимаю, что не хватает условия, но пока что то не могу понять. Я совсем юн в программировании. |
#4
|
|||
|
|||
кто нибудь может помочь мне с данным условием?
|
#5
|
||||
|
||||
Да здесь похоже банально #13#10 пролазят сквозь "бритву Оккама" :-), проверьте на повторы переносов отладчиком в момент добавки к строке
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#6
|
||||
|
||||
Может просто использовать Memo1.Text?
jmp $ ; Happy End! The Cake Is A Lie. |
#7
|
||||
|
||||
Цитата:
Код:
Memo1.Text:= StringReplace(Memo1.Text, #13#10+#13#10, '', [rfReplaceAll]); Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#8
|
|||
|
|||
Цитата:
не помогло мне данное решение, проблема в том что при нажатии клавиши сервер сразу же присылает ее в качестве ответа например, при вводе show у меня выводится s sh ho ow w решил данную проблему костылем Код:
if (Length(str) = 1) and (Str = currentKey) then begin currentKey:= #0; exit; end; И так, помогите мне с : 1.как мне перехватить в мемо позицию вывода комманды от сервера, чтобы я вводил только в этой строке свои комманды 2.как мне сделать табуляцию комманд в мемо с помощью клавиши таб Последний раз редактировалось vetal07, 21.06.2015 в 22:37. |
#9
|
|||
|
|||
смог я сделать передачу табуляции свойством WordWrap=True в memo.
снова пришлось после чего костыли писать, что бы он более и менее корректно символы выводил Код:
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char); var cmd:string; begin if IdTelnet1.connected then begin currentKey:= Key; IdTelnet1.SendCh(Key); end; if key=#9 then key:=#0; end; Код:
show service id 100 [1D [1D |
#10
|
||||
|
||||
Команды лучше набирать в поле ввода (edit), а мемо юзать чисто как монитор
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#11
|
|||
|
|||
Цитата:
|
#12
|
|||
|
|||
подскажите, а как мне осуществить данную возможность:
-при выводе термина ответа на ввод команды *A:router# я мог именно вводите из под мемо именно в этой строке? а не во всем мемо как сейчас. Как отловить позицию ? |
#13
|
|||
|
|||
удалите этот пост, пжлс
Последний раз редактировалось vetal07, 23.06.2015 в 12:01. |
#14
|
|||
|
|||
удалите этот пост, пжлс
Последний раз редактировалось vetal07, 23.06.2015 в 12:01. |
#15
|
||||
|
||||
Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |