Перейти к содержимому

Фотография

создание собственных типов


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 Rumata

Rumata

    Новый участник

  • Members
  • Pip
  • 66 сообщений
  • Город:Астана

Отправлено 10 апреля 2008 - 06:39

Привет!

Подскажите плиз, есть ли возможность создать свой тип в тест комплите 5.14(delphiscript)

мне например нужен массив типа запись
  • 0

#2 modbear

modbear

    Специалист

  • Members
  • PipPipPipPipPip
  • 548 сообщений

Отправлено 10 апреля 2008 - 08:39

Если я не ошибаюсь, в DelphiScript записи (record) не поддерживаются. В Вашем случае можно использовать массив массивов:

procedure Test;
const
  MyField1 = 0; 
  MyField2 = 1;
var
  arr : array [0..1];
  i;
begin
  arr[0] := [5,  'str1'];
  arr[1] := [10, 'str2'];

  for i := 0 to VarArrayHighBound(arr, 1) do
	Log.Message(
	  'MyField1 = ' + VarToStr( arr[i][MyField1] ) + #13#10 +
	  'MyField2 = ' + VarToStr( arr[i][MyField2] )
	  );
end;

  • 0

#3 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 10 апреля 2008 - 09:10

Привет!

Подскажите плиз, есть ли возможность создать свой тип в тест комплите 5.14(delphiscript)

мне например нужен массив типа запись

С delphiscript не работаю, использую JScript, но судя по тому, что все встроенные языки в ТестКомплите построены по одному принципу с поправкой на синтаксис, то могу привести пример на JScript:

function MyType( )
{
	 this.var1 = 0;
	 this.var2 = "";
	 this.var3 = new Object();
}

И потом этот тип можно создать так:
var MyObj = new MyType();
А дальше уже использовать его свойства var1, var2, var3.
  • 0

#4 modbear

modbear

    Специалист

  • Members
  • PipPipPipPipPip
  • 548 сообщений

Отправлено 10 апреля 2008 - 10:13

Еще можно ODT использовать - объявить класс, который будет соответствовать Вашей записи, и в ODT.Data создать массив экземпляров класса (см. скриншот в аттаче.) Тогда адресовать поля объектов-записей в скрипте можно будет не индексам, а по именам:

Вот пример скрипта:
procedure Test;
var arr, i;
begin
  arr := ODT.Data.MyGroup.MyArray;
  for i := 0 to arr.Count-1 do
	Log.Message('Name: ' + arr[i].Name + #13#10 + 'Age: '  + arr[i].Age);
end;

Объявлять ODT классы и создавать экземпляры классов можно как визуально, так и в скриптах, см. "Visual Creation of Custom Objects" и "Creating Custom Objects Programmatically" в справке.

Прикрепленные файлы


  • 0

#5 Rumata

Rumata

    Новый участник

  • Members
  • Pip
  • 66 сообщений
  • Город:Астана

Отправлено 10 апреля 2008 - 10:16

спасибо за советы
я нашел способ сделать по другому.
использую параллельно два массива, в первом массиве имя элемента во втором его значение
  • 0

#6 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 10 апреля 2008 - 17:45

Здравствуйте.

Если нужен действительно объект, то, насколько я знаю, в DelphiScript это можно реализовать только с помощью ODT, как заметил modbear.

А если вам нужна хэш табличка, то удобнее двух массивов будет использование объекта Dictionary. Подробнее об этой возможности можно почитать в разделе справки 'Using Dictionary Object To Address Array Elements With String Indexes'.
  • 0
С уважением,
Дмитрий


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных