Скажите пожалуйста как мне с помощью команд TCP сервера вписать текст в обьект типа “таблица”
P.S. Если можно то пример для программы TCPScript.
Скажите пожалуйста как мне с помощью команд TCP сервера вписать текст в обьект типа “таблица”
P.S. Если можно то пример для программы TCPScript.
Описание команд есть здесь
https://forum.vinmap.net/t/topic/54/18]
Пример:
[url]http://www.tcpscript.chat.ru/Download/TablEdit.rar
Я тут разбирался в коде скрипта, который нашел в файле TablEdit.rar и у меня возник вопрос:
А можно ли уточнить аргументы функции getbitstr() и ее назначение?
Прочитайте справку для TCPScript, в разделе Дополнительно\Дополнительные функции
Очень заинтересовала данная задумка. Поэтому возник вопрос.
Вообще есть какой то отличительный аттрибут(ы) слоя типа таблица от других слоев карты, кроме названия слоя и ID, для нахождения наличия объекта или пометки этого слоя (таблица) через TCP?
Доброе времени суток!
Подскажите пожалуйста, как перебрать (пометить) поодиночно объекты одного слоя уже из выделенных командой ‘Map.FindFirstByParameters ’ . Вроде как есть ‘Map.NextSelected’ – возвращает индекс следующего выделенного объекта. Юзал как-то криво получается.
Просто возникла такая ситуация: в карте есть (Х) количество объектов одного слоя, их нужно поочередно пометить для выполнения определенных действий над каждым объектом отдельно.
Если можно, то киньте примерчик. Спасибо!!!
Sergey, когда-то делала это так:
var i, j: integer;
OBJCOUNT_str: string;
OBJCOUNT: integer;
ObjArr: string;
ObjList: String;
Label1: Integer;
Label2: Integer;
begin
OBJCOUNT_str:=VarToStr(RUNCOM('map.selcount'));
OBJCOUNT:=StrToInt(OBJCOUNT_str);
ObjList:=RUNCOM('Map.Selected.List');
RUNCOM('executeMenu spbdeselectAll');
RUNCOM(IntToStr(Length(ObjList)-1));
i:=1;
While (i<=length(ObjList)) do begin
Label1:=i;
inc(i);
while (ObjList[i]='0') or (ObjList[i]='1') or
(ObjList[i]='2') or (ObjList[i]='3') or
(ObjList[i]='4') or (ObjList[i]='5') or
(ObjList[i]='6') or (ObjList[i]='7') or
(ObjList[i]='8') or (ObjList[i]='9') do begin
inc(i);
end;
Label2:=i;
Inc(i, 2);
RUNCOM('Map.SelectObject '+Copy(ObjList, Label1, Label2-Label1));
// операции над выделенным объектом
RUNCOM('executeMenu spbdeselectAll');
end;
end.
Может быть код и корявый, но по крайней мере работает…
Вместо перебора 0..9 лучше искать разделитель… Это два символа, вот правда каких - не знаю…
Это символы перевода строки и возврата каретки #10#13.
Проще всего парсить их при помощи CтрингЛиста, примерно так:
ObjList:=RUNCOM(‘Map.Selected.List’);
SL:=TStringList.Create;
SL.Text:=ObjList;
For I:=0 to SL.Count-1 do if SL[I]<>‘’ then
begin
RUNCOM('Map.SelectObject '+SL[I]);
// операции над выделенным объектом
end;
SL.Free;
Добрый день!!!
Пока не юзал код, но всем ОГРОМНОЕ СПАСИБО!!!