Значения переменных

Обсуждения программы xStartDesigner
Ответить
Аватара пользователя
Bidgo
Пилотируем с автопилотом
Сообщения: 21
Зарегистрирован: Ср мар 01, 2006 6:10 pm
Откуда: Ukraine, Poltava
Благодарил (а): 0
Поблагодарили: 0
Контактная информация:

Значения переменных

Сообщение Bidgo » Вт мар 07, 2006 1:50 pm

Подскажите,
1. Как можно узнать значение переменной в определенный момент выполнения, например при пошаговом выполнении.
2. Как узнать, что вернет функция , например GetStringBlockCount или GetFilesList.

Аватара пользователя
Alex
Ас
Сообщения: 2833
Зарегистрирован: Вт апр 05, 2005 3:28 pm
Откуда: Kaliningrad City
Благодарил (а): 2 раза
Поблагодарили: 91 раз
Контактная информация:

Сообщение Alex » Чт мар 09, 2006 10:08 am

1. xStartDesigner имеет отграниченные возможности по отладке/просмотру значений при отладке. Что возможно сейчас:

а) во вкладке Run script поставить Breakpoint на нужной строке. Делается это аналогично Delphi - кликом по серой полосе слева от текста, после клика строка выделяется красным цветом.
б) Если есть хоть один Breakpoint, то после нажатия F9, заполнения полей ввода и нажатия ОК программа остановит выполнение в выделенной строке.
в) Внизу окна во вкладке Run script есть два списка отображения. Левый показывает ошибки, сообщения или текст, передаваемый процедурой WriteLog. Правый отображает все локальные переменные скрипта. При двойном клике на нужно переменной отображается ее значение.
Ограничение: не отображаются значение переменных типа TObject (и всех наследников) и Record.

2. Отлаживать плагины можно с помощью функции WriteLog. В нее передается имя действия и текст.

Функция GetStringBlockCount возвращает количество блоков в тексте, разделенных указанным тектом-разделителем.
Пример:

Код: Выделить всё

var i: integer;
begin
...
  i:=GetStringBlockCount('a;b;c',';');
  WriteLog('MyAction', IntToStr(i));
...
Функция GetFilesList заполняет объект типа TStringList именами файлов. Формат:

Код: Выделить всё

GetFilesList(FolderName, FileMask, ExcludeFilesMask: string; FilesList: TStringList; IncludeSubfolders: boolean);
Пример использования:

Код: Выделить всё

var fl: TStringList;
    i: integer;
begin
...
  fl:=TStringList.Create;
  try
    GetFilesList('c:\Distr', '*.*', '*.exe', fl, True);  
    for i:=0 to fl.Count-1 do
      WriteLog('MyAction', fl.Strings[i]);
  finally
    fl.Free;
  end;
...

avmaksimov
Ас
Сообщения: 907
Зарегистрирован: Чт май 08, 2008 2:48 pm
Откуда: г. Москва, Россия
Благодарил (а): 6 раз
Поблагодарили: 16 раз
Контактная информация:

Re: Значения переменных

Сообщение avmaksimov » Пт дек 19, 2008 11:42 pm

Возможно ли в скрипте узнать значение переменной? Т.е. какая функция за это отвечает? Очень надо!)
С уважением, Андрей.

Аватара пользователя
Alex
Ас
Сообщения: 2833
Зарегистрирован: Вт апр 05, 2005 3:28 pm
Откуда: Kaliningrad City
Благодарил (а): 2 раза
Поблагодарили: 91 раз
Контактная информация:

Re: Значения переменных

Сообщение Alex » Вс дек 21, 2008 1:27 pm

За это отвечает функция

Код: Выделить всё

function GetVarValue(AVarName: string; ATaskHash: string): string;
Если известен точный тип, то можно использовать:

Код: Выделить всё

function GetVarValueInt(AVarName: string; ATaskHash: string): int64;
function GetVarValueDbl(AVarName: string; ATaskHash: string): double;
function GetVarValueBool(AVarName: string; ATaskHash: string): boolean;
function GetVarValueDate(AVarName: string; ATaskHash: string): TDateTime;
В качестве второго параметра функций можно использовать константу TASK_HASH.
За это сообщение автора Alex поблагодарил:
Mak1001 (Вс дек 21, 2008 1:27 pm)
Рейтинг: 33.33%

avmaksimov
Ас
Сообщения: 907
Зарегистрирован: Чт май 08, 2008 2:48 pm
Откуда: г. Москва, Россия
Благодарил (а): 6 раз
Поблагодарили: 16 раз
Контактная информация:

Re: Значения переменных

Сообщение avmaksimov » Вс дек 21, 2008 5:26 pm

Премного благодарен! :wink:
С уважением, Андрей.

avmaksimov
Ас
Сообщения: 907
Зарегистрирован: Чт май 08, 2008 2:48 pm
Откуда: г. Москва, Россия
Благодарил (а): 6 раз
Поблагодарили: 16 раз
Контактная информация:

Re: Значения переменных

Сообщение avmaksimov » Вс дек 21, 2008 5:48 pm

Кстати, я догадался, что так называется функция... Не мог понять, какой второй параметр нужен)))... И не понял, почему для функции GetVarsList не нужен TaskHash?
С уважением, Андрей.

Аватара пользователя
Alex
Ас
Сообщения: 2833
Зарегистрирован: Вт апр 05, 2005 3:28 pm
Откуда: Kaliningrad City
Благодарил (а): 2 раза
Поблагодарили: 91 раз
Контактная информация:

Re: Значения переменных

Сообщение Alex » Вс дек 21, 2008 5:52 pm

В случае GetVarsList переменные извлекаются из редактируемой в текущей момент задачи, поэтому там TaskHash не нужен.

Ответить