Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2012, 23:30   #1
Nikityans
Пользователь
 
Регистрация: 04.05.2012
Сообщений: 11
По умолчанию Передача координат мыши через IDTCP

Добрый день). передаю координаты мыши удалённому серверу... через изображение...
Код:
procedure TForm1.imgScreenMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
Label3.Caption:=inttostr(x)+', '+inttostr(Y) ;
with (IdTCPClient1) do
begin
WriteLn('pos'+Label3.Caption);
end;
end;
в данном случае передаёться слово POS и координаты через запятую X, Y.

а вот сервер

Код:
strText := AThread.Connection.ReadLn; // текст принимаемый от клиента
if (strText = не знаю что) then...
как мне принять координаты X, Y от клиента одной строчкой и извлечь оттуда полезные данные X и Y???
После этого мышь примет положение X, Y.
Заранее благодарен))).

Последний раз редактировалось Stilet; 07.07.2012 в 07:46.
Nikityans вне форума Ответить с цитированием
Старый 07.07.2012, 08:48   #2
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Дык на сервер приходит строка, нужно её только обработать.
Яб советовал сформировать строку как-нибудь так:

Код:
Label3.Caption := inttostr(x) + '*' + inttostr(Y) ;
WriteLn(Label3.Caption);
На сервер приходит: 137*726

Ну а распарсить такую простоту можно и без специальных функций тупо в цикле for. Или же сразу функцией Pos найти положение *.
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 07.07.2012, 11:21   #3
Nikityans
Пользователь
 
Регистрация: 04.05.2012
Сообщений: 11
По умолчанию

Вот мне и непонятно как из этих данных выташить и использовать координаты
Nikityans вне форума Ответить с цитированием
Старый 07.07.2012, 11:34   #4
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Если не использовать спец функции, то можно так:

Код:
temp, S : String;
i, x, y : Integer;

...

For i := 1 To length(S) Do
Begin
If S[i] = '*' Then Begin x := temp; temp := ''; Continue; End;
temp := temp + S[i];
End;
y := temp;

....
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 07.07.2012, 12:03   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Valio, за чем так сложно?
Код:
function GEtXY(aStr:string):TPoint;
const
 cStart='pos';
 cDElim='*';
 s:string;
 d:ShortInt;
 p:TPoint;
begin
 p.X:=0;
 p.Y:=0;
 s:=Trim(LowerCase(aStr));
 delete(s,Pos(cStart,s),Length(cStart));
 d:=Pos(cDelim,s);
 P.x:=IntToStr(Copy(s,1,d)); 
 Delete(s,1,d+Length(cDelim));
 P.y:=IntToStr(s);

 Result:=p;
end;
Писалось тут. Возможны лулзы.
Человек_Борща вне форума Ответить с цитированием
Старый 07.07.2012, 12:48   #6
Nikityans
Пользователь
 
Регистрация: 04.05.2012
Сообщений: 11
По умолчанию

я дам пример чужого кода:

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
strText: string;
width, height, i: Integer;
dc: HDC;
x:integer;
y:integer;
a,b,conid,cx,cy: integer;
s,scrrefr: string;
foo: TPoint;

begin
GetCursorPos(foo);
strText := AThread.Connection.ReadLn;
if (strText = 'POS'+s)
then
begin
cx:=0;
cy:=0;
Delete(s,1,7);

cx:=StrToInt(Copy(s,1,pos('*',s)-1));
cy:=StrToInt(Copy(s,pos('*',s)+1,le ngth(s)));

SetCursorPos(cx,cy);
end;

end;


мне надо различать что пришли именно данные курсора, а не какая нибудь команда... и оттуда выташить данные.. и поставить курсор сразу в положение по этим данным. Потому что я не могу разобраться...
Nikityans вне форума Ответить с цитированием
Старый 07.07.2012, 12:54   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а что вам строку не разбить на компоненты?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.07.2012, 13:00   #8
Nikityans
Пользователь
 
Регистрация: 04.05.2012
Сообщений: 11
По умолчанию

var
s,f: string;

strText := AThread.Connection.ReadLn;

if (strText = s+'*'+f)
then
begin
cx:=0;
cy:=0;


cx:=StrToInt(s);
cy:=StrToInt(f);

SetCursorPos(cx,cy);
end;

сделал так, но при передаче координат ошибка
Nikityans вне форума Ответить с цитированием
Старый 07.07.2012, 14:20   #9
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...а в вашей версии Indy у этого компонента есть возможность передачи буфера по типу write(buf, sizeof(buf))?

А то ведь завести пакет данных со строго определенными размерами на передающей и приемной стороне и разбор-формирование будет автоматом:
Код:
type tbuf = record
cmd: string[128];
x,
y: word;
end;

var buf: tbuf;
...
read(buf, sizeof(buf));
//buf.x - позиция по X
//buf.y - по Y
//buf.cmd - команда
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 07.07.2012, 15:35   #10
Nikityans
Пользователь
 
Регистрация: 04.05.2012
Сообщений: 11
По умолчанию

нет такого...
Nikityans вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение координат через google maps blax PHP 4 03.10.2011 11:22
команда определения координат положения курсора мыши Aспирин Общие вопросы Delphi 11 28.03.2011 18:00
Поиск координат мыши на рельефе OpenGL AngelOfDeathSX Мультимедиа в Delphi 1 12.03.2011 12:40
TСhart, клик мыши и координаты XY, Определение координат оси при клике мыши Aravild Компоненты Delphi 1 31.01.2009 16:28
Определение X и Y координат PaintBox при перемещении курсора мыши Vladimir K. Общие вопросы Delphi 3 04.01.2007 10:45