- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Скрипт C. Вызов Picture Window на родительском окне с другого PW
Модератор: Глоб.модераторы
-
- здесь недавно
- Сообщения: 54
- Зарегистрирован: 06 фев 2021, 02:47
- Имя: Юрий
- Страна: Россия
- город/регион: Челябинская облость
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
Скрипт C. Вызов Picture Window на родительском окне с другого PW
Добрый день, прошу помощи, запутался немного.
Ситуация такая, требуется с одного PW открыть кнопкой второе PW на родительском окне с присвоением определенных свойств окну
Вот что у меня в скрипте на кнопке:
char *pictureName = "@SFP_trend.Pdl";
char *windowName = "WindowSensor";
char *windowTitle = "CaptionText";
char *titleContent = "";
char *objectName = "lblHeader1";
char *propertiesText = "Text";
char ArchiveTagName [100];
char value [100];
// Получение родительского изображения
char *lpszPicture = GetParentPicture(lpszPictureName);
//Получаем заголовок окна изображения
char *titleContent = GetPropChar(lpszPicture, windowName, windowTitle);
// Устанавливаем текст для заголовка
SetPropChar(lpszPictureName, objectName, propertiesText, windowTitle);
sprintf(ArchiveTagName, "Archive_Trend_RH\\%sDataForDCSPowerStation_RH_Tank1_Level_r", value);
SetPictureName(lpszPictureName, windowName, pictureName);
SetPropChar (lpszPictureName, windowName, windowTitle, titleContent);
SetVisible (lpszPicture, windowName, TRUE);
SetPropChar(pictureName,"Trend","TrendTagName",ArchiveTagName);
SetPropDouble(pictureName,"Trend","ValueAxisEndValue",1);
SetPropChar(pictureName,"Trend","TrendRename",titleContent);
Ситуация такая, требуется с одного PW открыть кнопкой второе PW на родительском окне с присвоением определенных свойств окну
Вот что у меня в скрипте на кнопке:
char *pictureName = "@SFP_trend.Pdl";
char *windowName = "WindowSensor";
char *windowTitle = "CaptionText";
char *titleContent = "";
char *objectName = "lblHeader1";
char *propertiesText = "Text";
char ArchiveTagName [100];
char value [100];
// Получение родительского изображения
char *lpszPicture = GetParentPicture(lpszPictureName);
//Получаем заголовок окна изображения
char *titleContent = GetPropChar(lpszPicture, windowName, windowTitle);
// Устанавливаем текст для заголовка
SetPropChar(lpszPictureName, objectName, propertiesText, windowTitle);
sprintf(ArchiveTagName, "Archive_Trend_RH\\%sDataForDCSPowerStation_RH_Tank1_Level_r", value);
SetPictureName(lpszPictureName, windowName, pictureName);
SetPropChar (lpszPictureName, windowName, windowTitle, titleContent);
SetVisible (lpszPicture, windowName, TRUE);
SetPropChar(pictureName,"Trend","TrendTagName",ArchiveTagName);
SetPropDouble(pictureName,"Trend","ValueAxisEndValue",1);
SetPropChar(pictureName,"Trend","TrendRename",titleContent);
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- освоился
- Сообщения: 221
- Зарегистрирован: 19 сен 2019, 10:09
- Имя: Макс
- Страна: Россия
- город/регион: Славянск-на-Кубани
- Благодарил (а): 5 раз
- Поблагодарили: 38 раз
Скрипт C. Вызов Picture Window на родительском окне с другого PW
Обязательно на Си писать?
WinCC 7.4 SP1 Upd15, Step5.6
-
- здесь недавно
- Сообщения: 54
- Зарегистрирован: 06 фев 2021, 02:47
- Имя: Юрий
- Страна: Россия
- город/регион: Челябинская облость
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
Скрипт C. Вызов Picture Window на родительском окне с другого PW
Добрый день, там всё на Си написано, хотелось бы не менять структуру, если менять только это, то придется менять всё (ну что в пределах этого скрипта).
У вас есть какое-то иное предложение? VBS?
-
- освоился
- Сообщения: 221
- Зарегистрирован: 19 сен 2019, 10:09
- Имя: Макс
- Страна: Россия
- город/регион: Славянск-на-Кубани
- Благодарил (а): 5 раз
- Поблагодарили: 38 раз
Скрипт C. Вызов Picture Window на родительском окне с другого PW
Откуда берется текст "НС1 Давление факт PT-1 Гросс, МПа"?
Отправлено спустя 11 минут 2 секунды:
WinCC 7.4 SP1 Upd15, Step5.6
-
- здесь недавно
- Сообщения: 54
- Зарегистрирован: 06 фев 2021, 02:47
- Имя: Юрий
- Страна: Россия
- город/регион: Челябинская облость
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
Скрипт C. Вызов Picture Window на родительском окне с другого PW
makesstr писал(а): ↑05 авг 2024, 14:21 Откуда берется текст "НС1 Давление факт PT-1 Гросс, МПа"?
Это старое окно, открывается и прописывалось индивидуально на каждый датчик
вот код:
char *tagPrefix = "NS1";
char *pictureName = "@SFP_trend.Pdl";
char *windowName = "WindowSensor";
char *windowTitle = "CaptionText";
char *titleContent = "НC1 Давление факт PT-1 Гросс, МПа";
char ArchiveTagName [100];
char value [100];
sprintf(ArchiveTagName, "Archive_Trend_RH\\%sData_AI_Data[1]_Out_value", value);
SetTagPrefix(lpszPictureName, windowName, tagPrefix);
SetPictureName(lpszPictureName, windowName, pictureName);
SetPropChar (lpszPictureName, windowName, windowTitle, titleContent);
SetVisible (lpszPictureName, windowName, TRUE);
SetPropChar(pictureName,"Trend","TrendTagName",ArchiveTagName);
SetPropDouble(pictureName,"Trend","ValueAxisBeginValue",0);
SetPropDouble(pictureName,"Trend","ValueAxisEndValue",1);
SetPropChar(pictureName,"Trend","TrendRename",titleContent);
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- здесь недавно
- Сообщения: 28
- Зарегистрирован: 15 фев 2018, 07:17
- Имя: Александр
- Страна: Россия
- город/регион: Новокузнецк
- Поблагодарили: 9 раз
Скрипт C. Вызов Picture Window на родительском окне с другого PW
День добрый.
Попробуем разобраться.
char *pictureName = "@SFP_trend.Pdl";
char *windowName = "WindowSensor";
char *windowTitle = "CaptionText";
char *titleContent = "";
char *objectName = "lblHeader1";
char *propertiesText = "Text";
char ArchiveTagName [100];
char value [100];
//Доп переменная
char MainName[MAX_PATH];
// Получение родительского изображения
char *lpszPicture = GetParentPicture(lpszPictureName);
//формируем путь
sprintf(MainName, "%s.%s:%s", lpszPicture, windowName, pictureName);
//Получаем заголовок окна изображения
char *titleContent = GetPropChar(lpszPicture, windowName, windowTitle);
Заголовок получаем из окна механизма для последующей склейки? Или заголовок определяется в переменной char *titleContent = "";?
// Устанавливаем текст для заголовка
Зачем дополнительный заголовок в окне, если уже есть название окна с таким же текстом?
И строку скрипта переносим вниз
sprintf(ArchiveTagName, "Archive_Trend_RH\\%sDataForDCSPowerStation_RH_Tank1_Level_r", value);
//обращаемся к PW на родительском окне, а не на текущем - значит lpszPicture
SetPictureName(lpszPicture, windowName, pictureName);
SetPropChar (lpszPicture, windowName, windowTitle, titleContent);
SetVisible (lpszPicture, windowName, TRUE);
// Устанавливаем текст для заголовка
SetPropChar(MainName, objectName, propertiesText, windowTitle);
SetPropChar(MainName,"Trend","TrendTagName",ArchiveTagName);
SetPropDouble(MainName,"Trend","ValueAxisEndValue",1);
SetPropChar(MainName,"Trend","TrendRename",titleContent);
Попробуем разобраться.
char *pictureName = "@SFP_trend.Pdl";
char *windowName = "WindowSensor";
char *windowTitle = "CaptionText";
char *titleContent = "";
char *objectName = "lblHeader1";
char *propertiesText = "Text";
char ArchiveTagName [100];
char value [100];
//Доп переменная
char MainName[MAX_PATH];
// Получение родительского изображения
char *lpszPicture = GetParentPicture(lpszPictureName);
//формируем путь
sprintf(MainName, "%s.%s:%s", lpszPicture, windowName, pictureName);
//Получаем заголовок окна изображения
char *titleContent = GetPropChar(lpszPicture, windowName, windowTitle);
Заголовок получаем из окна механизма для последующей склейки? Или заголовок определяется в переменной char *titleContent = "";?
// Устанавливаем текст для заголовка
Зачем дополнительный заголовок в окне, если уже есть название окна с таким же текстом?
И строку скрипта переносим вниз
sprintf(ArchiveTagName, "Archive_Trend_RH\\%sDataForDCSPowerStation_RH_Tank1_Level_r", value);
//обращаемся к PW на родительском окне, а не на текущем - значит lpszPicture
SetPictureName(lpszPicture, windowName, pictureName);
SetPropChar (lpszPicture, windowName, windowTitle, titleContent);
SetVisible (lpszPicture, windowName, TRUE);
// Устанавливаем текст для заголовка
SetPropChar(MainName, objectName, propertiesText, windowTitle);
SetPropChar(MainName,"Trend","TrendTagName",ArchiveTagName);
SetPropDouble(MainName,"Trend","ValueAxisEndValue",1);
SetPropChar(MainName,"Trend","TrendRename",titleContent);
-
- здесь недавно
- Сообщения: 54
- Зарегистрирован: 06 фев 2021, 02:47
- Имя: Юрий
- Страна: Россия
- город/регион: Челябинская облость
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
Скрипт C. Вызов Picture Window на родительском окне с другого PW
iceman, Спасибо огромное, заработало.
Не могли бы вы помочь еще, пожалуйста, как возможно сделать так, чтобы в зависимости от какого либо свойства ( к примеру имя) элемента, динамически менять конструкцию
это были эксперименты , получить в заголовок.
Не могли бы вы помочь еще, пожалуйста, как возможно сделать так, чтобы в зависимости от какого либо свойства ( к примеру имя) элемента, динамически менять конструкцию
, для выбора нужного тега из архива.
-
- здесь недавно
- Сообщения: 28
- Зарегистрирован: 15 фев 2018, 07:17
- Имя: Александр
- Страна: Россия
- город/регион: Новокузнецк
- Поблагодарили: 9 раз
Скрипт C. Вызов Picture Window на родительском окне с другого PW
День добрый.
Конструкция sprintf(ArchiveTagName, "Archive_Trend_RH\\%sDataForDCSPowerStation_RH_Tank1_Level_r", value); уже динамическая.
Переменная value подставляется в строку (вместо %s). Кстати, непонятно где она задается.
Возможно, чтобы не менять идеологию работы данного скрипта, имя тега задавать через переменную. Заголовки задаются и имя тега тоже можно. А собрать строку не составить проблем.
Либо в окно с графиком передавать префикс и часть скрипта переносить в @SFP_trend.Pdl на событие OpenPicture.
-
- здесь недавно
- Сообщения: 54
- Зарегистрирован: 06 фев 2021, 02:47
- Имя: Юрий
- Страна: Россия
- город/регион: Челябинская облость
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
Скрипт C. Вызов Picture Window на родительском окне с другого PW
iceman,
char *pictureName = "@SFP_trend.Pdl";
char *windowName = "WindowSensor";
char *windowTitle = "CaptionText";
char *titleContent = "SRT3000RMXLI";
char *objectName = "lblHeader1";
char *propertiesText = "Text";
char ArchiveTagName [100];
char value [100]; Вот тут я его обозначил
//Доп переменная
char MainName[MAX_PATH];
// Получение родительского изображения
char *lpszPicture = GetParentPicture(lpszPictureName);
//формируем путь
sprintf(MainName, "%s.%s:%s", lpszPicture, windowName, pictureName);
sprintf(ArchiveTagName, "Archive_Trend_RH\\%sDataForDCSPowerStation_RH_Tank1_Level_r", value); тут по сути (выделенное) я прописываю архив, и имя архивного тега (но в ручную), по сути мне нужно получать свойство или имя тут , и переписывать его.
//обращаемся к PW на родительском окне, а не на текущем - значит lpszPicture
SetPictureName(lpszPicture, windowName, pictureName);
SetPropChar (lpszPicture, windowName, windowTitle, titleContent);
SetVisible (lpszPicture, windowName, TRUE);
// Устанавливаем текст для заголовка
SetPropChar(MainName, objectName, propertiesText, windowTitle);
SetPropChar(MainName,"Trend","TrendTagName",ArchiveTagName);
SetPropDouble(MainName,"Trend","ValueAxisEndValue",1);
SetPropChar(MainName,"Trend","TrendRename",titleContent);
Вот скрипт который вызывает первое окно:
char *tagPrefix = "PT_OUT";
char *pictureName = "AI_Window.Pdl";
char *windowName = "WindowAI_Edit";
char *windowTitle = "CaptionText";
char *titleContent = "НС1 Давление выход";
SetTagPrefix(lpszPictureName, windowName, tagPrefix);
SetPictureName(lpszPictureName, windowName, pictureName);
SetVisible (lpszPictureName, windowName, TRUE);
SetPropChar (lpszPictureName, windowName, windowTitle, titleContent);
SetWidth(lpszPictureName,"WindowAI_Edit",250);
SetHeight(lpszPictureName,"WindowAI_Edit",181);
SetBackColor("AI_Window.Pdl","B_Chek",RGB(0,255,0));
}
Вот эта часть , просто добавлена мной, я сам прописал это, по сути, мне при нажатии на ту или иную кнопку, нужно менять значение "DataForDCSPowerStation_RH_Tank1_Level_r", как его поменять я пока не понимаю
char *pictureName = "@SFP_trend.Pdl";
char *windowName = "WindowSensor";
char *windowTitle = "CaptionText";
char *titleContent = "SRT3000RMXLI";
char *objectName = "lblHeader1";
char *propertiesText = "Text";
char ArchiveTagName [100];
char value [100]; Вот тут я его обозначил
//Доп переменная
char MainName[MAX_PATH];
// Получение родительского изображения
char *lpszPicture = GetParentPicture(lpszPictureName);
//формируем путь
sprintf(MainName, "%s.%s:%s", lpszPicture, windowName, pictureName);
sprintf(ArchiveTagName, "Archive_Trend_RH\\%sDataForDCSPowerStation_RH_Tank1_Level_r", value); тут по сути (выделенное) я прописываю архив, и имя архивного тега (но в ручную), по сути мне нужно получать свойство или имя тут , и переписывать его.
//обращаемся к PW на родительском окне, а не на текущем - значит lpszPicture
SetPictureName(lpszPicture, windowName, pictureName);
SetPropChar (lpszPicture, windowName, windowTitle, titleContent);
SetVisible (lpszPicture, windowName, TRUE);
// Устанавливаем текст для заголовка
SetPropChar(MainName, objectName, propertiesText, windowTitle);
SetPropChar(MainName,"Trend","TrendTagName",ArchiveTagName);
SetPropDouble(MainName,"Trend","ValueAxisEndValue",1);
SetPropChar(MainName,"Trend","TrendRename",titleContent);
Вот скрипт который вызывает первое окно:
char *tagPrefix = "PT_OUT";
char *pictureName = "AI_Window.Pdl";
char *windowName = "WindowAI_Edit";
char *windowTitle = "CaptionText";
char *titleContent = "НС1 Давление выход";
SetTagPrefix(lpszPictureName, windowName, tagPrefix);
SetPictureName(lpszPictureName, windowName, pictureName);
SetVisible (lpszPictureName, windowName, TRUE);
SetPropChar (lpszPictureName, windowName, windowTitle, titleContent);
SetWidth(lpszPictureName,"WindowAI_Edit",250);
SetHeight(lpszPictureName,"WindowAI_Edit",181);
SetBackColor("AI_Window.Pdl","B_Chek",RGB(0,255,0));
}
-
- здесь недавно
- Сообщения: 28
- Зарегистрирован: 15 фев 2018, 07:17
- Имя: Александр
- Страна: Россия
- город/регион: Новокузнецк
- Поблагодарили: 9 раз
Скрипт C. Вызов Picture Window на родительском окне с другого PW
char value [100];
получаем префикс окна параметра ("НС-1 давление выход"), который получается из - char *tagPrefix = "PT_OUT";
strcpy(value, GetTagPrefix(GetParentPicture(lpszPictureName), GetParentPictureWindow(lpszPictureName));
если тег структурный, то склеиваем с суффиксом
strcat(value, ".суффикс");
далее подставляем в строку для графика в нужно место
sprintf(ArchiveTagName, "Archive_Trend_RH\\%sDataForDCSPowerStation_RH_Tank1_Level_r", value);
это все добавляем в скрипт на кнопку вызова графика
получаем префикс окна параметра ("НС-1 давление выход"), который получается из - char *tagPrefix = "PT_OUT";
strcpy(value, GetTagPrefix(GetParentPicture(lpszPictureName), GetParentPictureWindow(lpszPictureName));
если тег структурный, то склеиваем с суффиксом
strcat(value, ".суффикс");
далее подставляем в строку для графика в нужно место
sprintf(ArchiveTagName, "Archive_Trend_RH\\%sDataForDCSPowerStation_RH_Tank1_Level_r", value);
это все добавляем в скрипт на кнопку вызова графика
-
- здесь недавно
- Сообщения: 54
- Зарегистрирован: 06 фев 2021, 02:47
- Имя: Юрий
- Страна: Россия
- город/регион: Челябинская облость
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
Скрипт C. Вызов Picture Window на родительском окне с другого PW
iceman, Александр, не дает скомпилировать , выдает что не хватает ";" после скобки, я не могу вообще получить тегпрефикс
char *pictureName = "@SFP_trend.Pdl";
char *windowName = "WindowSensor";
char *windowTitle = "CaptionText";
char *objectName = "lblHeader1";
char *propertiesText = "Text";
char ArchiveTagName [100];
char value [100];
//Доп переменная
char MainName[MAX_PATH];
// Получение родительского изображения
char *lpszPicture = GetParentPicture(lpszPictureName);
char *titleContent = GetPropChar(lpszPicture,lpszObjectName,"comment");
//формируем путь
sprintf(MainName, "%s.%s:%s", lpszPicture, windowName, pictureName);
//Получаем заголовок окна изображения
//char *titleContent = GetPropChar(lpszPicture, windowName, windowTitle);
//Заголовок получаем из окна механизма для последующей склейки? Или заголовок определяется в переменной char *titleContent = "";?
// Устанавливаем текст для заголовка
//Зачем дополнительный заголовок в окне, если уже есть название окна с таким же текстом?И строку скрипта переносим вниз
//обращаемся к PW на родительском окне, а не на текущем - значит lpszPicture
SetPictureName(lpszPicture, windowName, pictureName);
SetPropChar (lpszPicture, windowName, windowTitle, titleContent);
SetVisible (lpszPicture, windowName, TRUE);
strcpy(value, GetTagPrefix(GetParentPicture(lpszPictureName), GetParentPictureWindow(lpszPictureName));
strcat(value, ".QVAL");
sprintf(ArchiveTagName, "Archive_Trend_RH\\%s", value);
// Устанавливаем текст для заголовка
SetPropChar(pictureName, objectName, propertiesText, windowTitle);
SetPropChar(pictureName,"Trend","TrendTagName",ArchiveTagName);
SetPropDouble(pictureName,"Trend","ValueAxisEndValue",100);
SetPropChar(pictureName,"Trend","TrendRename",value);
char *pictureName = "@SFP_trend.Pdl";
char *windowName = "WindowSensor";
char *windowTitle = "CaptionText";
char *objectName = "lblHeader1";
char *propertiesText = "Text";
char ArchiveTagName [100];
char value [100];
//Доп переменная
char MainName[MAX_PATH];
// Получение родительского изображения
char *lpszPicture = GetParentPicture(lpszPictureName);
char *titleContent = GetPropChar(lpszPicture,lpszObjectName,"comment");
//формируем путь
sprintf(MainName, "%s.%s:%s", lpszPicture, windowName, pictureName);
//Получаем заголовок окна изображения
//char *titleContent = GetPropChar(lpszPicture, windowName, windowTitle);
//Заголовок получаем из окна механизма для последующей склейки? Или заголовок определяется в переменной char *titleContent = "";?
// Устанавливаем текст для заголовка
//Зачем дополнительный заголовок в окне, если уже есть название окна с таким же текстом?И строку скрипта переносим вниз
//обращаемся к PW на родительском окне, а не на текущем - значит lpszPicture
SetPictureName(lpszPicture, windowName, pictureName);
SetPropChar (lpszPicture, windowName, windowTitle, titleContent);
SetVisible (lpszPicture, windowName, TRUE);
strcpy(value, GetTagPrefix(GetParentPicture(lpszPictureName), GetParentPictureWindow(lpszPictureName));
strcat(value, ".QVAL");
sprintf(ArchiveTagName, "Archive_Trend_RH\\%s", value);
// Устанавливаем текст для заголовка
SetPropChar(pictureName, objectName, propertiesText, windowTitle);
SetPropChar(pictureName,"Trend","TrendTagName",ArchiveTagName);
SetPropDouble(pictureName,"Trend","ValueAxisEndValue",100);
SetPropChar(pictureName,"Trend","TrendRename",value);
-
- здесь недавно
- Сообщения: 54
- Зарегистрирован: 06 фев 2021, 02:47
- Имя: Юрий
- Страна: Россия
- город/регион: Челябинская облость
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
Скрипт C. Вызов Picture Window на родительском окне с другого PW
вот скрин
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- здесь недавно
- Сообщения: 54
- Зарегистрирован: 06 фев 2021, 02:47
- Имя: Юрий
- Страна: Россия
- город/регион: Челябинская облость
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
Скрипт C. Вызов Picture Window на родительском окне с другого PW
Александр, спасибо, все получилось, конструкцию немного поменял.
Код: Выделить всё
char *pictureName = "@SFP_trend.Pdl";
char *windowName = "WindowSensor";
char *windowTitle = "CaptionText";
char *objectName = "lblHeader1";
char *propertiesText = "Text";
char ArchiveTagName [100];
char value [100];
//Доп переменная
char MainName[MAX_PATH];
// Получение родительского изображения
char *lpszPicture = GetParentPicture(lpszPictureName);
char *titleContent = GetPropChar(lpszPicture,lpszObjectName,"comment");
//формируем путь
sprintf(MainName, "%s.%s:%s", lpszPicture, windowName, pictureName);
//обращаемся к PW на родительском окне, а не на текущем - значит lpszPicture
SetPictureName(lpszPicture, windowName, pictureName);
SetPropChar (lpszPicture, windowName, windowTitle, titleContent);
SetVisible (lpszPicture, windowName, TRUE);
strcpy(value, GetTagPrefix(lpszPicture, GetParentPictureWindow(lpszPictureName)));
strcat(value, ".QVAL");
sprintf(ArchiveTagName, "Archive_Trend_RH\\%s", value);
// Устанавливаем текст для заголовка
SetPropChar(pictureName, objectName, propertiesText, windowTitle);
SetPropChar(pictureName,"Trend","TrendTagName",ArchiveTagName);
SetPropDouble(pictureName,"Trend","ValueAxisEndValue",100);
SetPropChar(pictureName,"Trend","TrendRename",value);