Страница 1 из 1

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

Добавлено: Вт мар 07, 2006 1:50 pm
Bidgo
Подскажите,
1. Как можно узнать значение переменной в определенный момент выполнения, например при пошаговом выполнении.
2. Как узнать, что вернет функция , например GetStringBlockCount или GetFilesList.

Добавлено: Чт мар 09, 2006 10:08 am
Alex
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;
...

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

Добавлено: Пт дек 19, 2008 11:42 pm
avmaksimov
Возможно ли в скрипте узнать значение переменной? Т.е. какая функция за это отвечает? Очень надо!)

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

Добавлено: Вс дек 21, 2008 1:27 pm
Alex
За это отвечает функция

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

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.

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

Добавлено: Вс дек 21, 2008 5:26 pm
avmaksimov
Премного благодарен! :wink:

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

Добавлено: Вс дек 21, 2008 5:48 pm
avmaksimov
Кстати, я догадался, что так называется функция... Не мог понять, какой второй параметр нужен)))... И не понял, почему для функции GetVarsList не нужен TaskHash?

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

Добавлено: Вс дек 21, 2008 5:52 pm
Alex
В случае GetVarsList переменные извлекаются из редактируемой в текущей момент задачи, поэтому там TaskHash не нужен.