forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Переводы (http://forum.boolean.name/forumdisplay.php?f=37)
-   -   Перевод хелпа - Type (http://forum.boolean.name/showthread.php?t=10)

impersonalis 04.09.2005 05:33

Type имя

Параметры
имя = любое допустимое имя переменной
Описание
Если Вы знаете язык Си – TYPE это базовая структура Blitz. Если же Вы не знаете Си, читайте далее.
TYPE – это ваш лучший помощник. Он используется, чтобы создать «коллекцию» объектов, которые имеют общие параметры и могут быстро и легко изменяться.
Представьте себе игру «Космические захватчики». На экране одновременно находится много инопланетян. Каждый из пришельцев имеет несколько, необходимых для него, переменных: абсцисса и ордината, плюс переменная, контролирующая отрисовку (графическое состояние). Далее, Вы могли бы сделать сотни переменных, подобных zahvatchik1x, zahvatchik1y, zahvatchik2x, zahvatchik2y, и т.д. для управления всеми пришельцами, но это не будет изящным решением. Вы могли бы использовать массив, чтобы оперировать ими; zahvatchik(x,y, graphic) и цикл его перебора через FOR ... NEXT – но это слишком трудоёмко! TYPE был создан специально для решения подобных проблем.
TYPE описывает элемент коллекции. Каждый объект в этой коллекции наследует самостоятельную копию переменных, объявленных в TYPE командой FIELD. Каждая переменная каждого элемента типа может быть прочитана индивидуально и может быть легко и быстро итерирована. Используйте команду FIELD, чтобы объявить какие хотите переменные между командами TYPE и END TYPE.
Если Вам это проще – представляйте себе TYPE как БД. Каждый элемент – запись в БД и каждая переменная элемента – поле в записи. Используя команды, подобные BEFORE, AFTER, и FOR ... EACH, Вы можете переместить указатель «БД», чтобы обратится к конкретному элементу типа и восстановить/установить значения его «полей».
Вы не гуру в БД? Нужен другой пример? Ладно. Допустим, Вы готовите аудиторию для речи или какого-либо события, и Вы передвигаете сотни стульев для слушателей. Стулья должны быть в каком-то месте на полу, и некоторые из них должны быть подняты немного выше, чем другие ( посетители-сановники, мэр и другие). Начиная становиться компьютерным гением, вы начинаете придумывать, как можно расположить стулья с наименьшими усилиями. Вы понимаете, что пол клетчатый, как огромная сетка. Это упрощает задачу! Вам нужна только точка на полу, которую Вы разместите на миллиметровке и поместите в ячейку значение, насколько высоко должен быть стул - что базируется на словах босса, о том, где должны сидеть важные люди. Таким образом, для каждого стула, Вы будете иметь ряд и колонку на миллиметровке ( координаты абсциссы и ординаты) и уровень, чтобы установить стул на определённой высоте. Хорошо, мы подготовились. Теперь, даже имея всё на бумаге, мы всё ещё должны делать работу по расстановке всех стульев. После того как вы закончили, допустим, ваш босс подойдёт к Вам и скажет, что «они не отцентрованы справа … сдвинь их все на одну клетку ». О нет! У Вас уже всё расставлено, и даже притом, что это простая вещь – переместить стул на одну клетку вправо (в конце концов, их порядок и высота не будут меняться) – Вы всё ещё должны двигать каждый стул. Уверен, было бы хорошо, если бы Вы могли только взмахнуть рукой и сказать: «Для каждого стула в комнате добавить 1 клетку к его местоположению по х.». Увы, в реальном мире – приступайте к работе – у Вас есть много стульев, которые нужно сдвинуть.
В Blitz Вы, возможно, сделали TYPE с именем STUL и задали бы поля (FIELDs) X,Y, И VISOTA. Вы тогда бы создали нужное Вам число стульев, используя команду NEW(каждый раз, когда Вы вызываете NEW – создаётся новый стул, с его собственными переменными X,Y и VISOTA) и назначали значения x,y координат и высоты соответственно своему решением. В нашем примере выше, когда босс поручил Вам передвигать стулья более чем в одной комнате, Вы, вероятно, стонали про себя. Это – большое кол-во работы! В Blitz мы могли бы использовать 4 строчки кода, чтобы приспосабливать все наши элементы типа STUL к новой позиции ( используя команды FOR ... EACH).
Всё ёще непонятно? Это нормально – TYPE сложен для понимания. Смотрите пример, и мы попробуем показать Вам, как работают типы на практике. Я рекомендую просмотр кода других людей, что так же поможет Вам в освоении типов. Как только вы это сделаете, Вы будете знать, почему Си-программисты без ума от структур, и почему почти все программы Blitz используют их.
Хитрая уловка для целей отладки или для сохранения данных от элементов типов в файл, заключается в использовании команды Str$(). Print Str$() будет выводить значения каждого поля элемента типа, по очереди, отделяя их запятыми и заключая в квадратные скобки, например [15,42, »Fluffy»,500].
Продвинутые программисты знают о хранении типов в «двойном связанном списке».
См. также: Field, New, Null, First, Last, Before, After, Insert, Before.
Пример
Код:

; Объявление типа СТУЛ
Type STUL
Field X
Field Y
Field VISOTA
End Type

; Создаём 100 стульев, используя FOR ... NEXT и имя для коллекции типов KOMNATA
For tempx = 1 To 10
For tempy = 1 To 10
KOMNATA. STUL = New STUL
KOMNATA\x = tempx
KOMNATA\y = tempy
KOMNATA\VISOTA = Rnd(0,10); устанавливаем произвольную высоту от 0 до 10
Next
Next

;двигаем все на один (подобно описанному в примере)
For KOMNATA.STUL = Each STUL
KOMNATA\x = KOMNATA\x + 1
Next


impersonalis 04.09.2005 05:34

Field переменная

Параметры
переменная = любое допустимое имя
Описание
Если вы не читали выше о команде TYPE, Вам стоило бы это сделать, перед тем как продолжить чтение.
Когда вы объявляете тип, Вы должны привязать некоторые переменные для хранения в нём. Используя команду Field между Type и End Type, вы можете задать переменную, которая может быть использована в последствии в каждом элементе типа, созданном командой New.
См также: Type, End Type.
Пример
Код:

; Объявление типа СТУЛ
Type STUL
Field X
Field Y
Field VISOTA
End Type

; Создаём 100 стульев, используя FOR ... NEXT и имя для коллекции типов KOMNATA
For tempx = 1 To 10
For tempy = 1 To 10
KOMNATA. STUL = New STUL
KOMNATA\x = tempx
KOMNATA\y = tempy
KOMNATA\VISOTA = Rnd(0,10); устанавливаем произвольную высоту от 0 до 10
Next
Next

;двигаем все на один (подобно примеру, описанному для команды TYPE)
For KOMNATA.STUL = Each STUL
KOMNATA\x = KOMNATA\x + 1
Next


impersonalis 04.09.2005 05:37

End Type

Параметры
отсутствуют
Описание
Если вы не читали выше о команде TYPE, Вам стоило бы это сделать, перед тем как продолжить чтение.
После описания всех переменных в вашем типе, используйте данную команду, чтобы завершить объявление типа.
Пример
Код:

; Объявление типа СТУЛ
Type STUL
Field X
Field Y
Field VISOTA
End Type


impersonalis 04.09.2005 05:38

New переменная_типа

Параметры
переменная_типа = фактическое имя типа, не конкретного элемента этого типа.
Описание
Если Вы ещё не знакомы с командой TYPE, пожалуйста, прочитайте о ней перед знакомством с командой New.
Создаёт новый элемент типа. Каждый вызов этой команды автоматически добавляет новый элемент указанного типа. Для дополнительной информации просмотрите пример и другие команды, относящиеся к типам.
См также: Type, Before, After, First, Last, Each, Insert, Delete.
Пример
Код:

; Объявление типа СТУЛ
Type STUL
Field X
Field Y
Field VISOTA
End Type

; Создаём 100 стульев, используя FOR ... NEXT и имя для коллекции типов KOMNATA
For tempx = 1 To 10
For tempy = 1 To 10
KOMNATA. STUL = New STUL
KOMNATA\x = tempx
KOMNATA\y = tempy
KOMNATA\VISOTA = Rnd(0,10); устанавливаем произвольную высоту от 0 до 10
Next
Next


impersonalis 04.09.2005 05:38

Each переменная_типа

Параметры
переменная_типа = предварительно объявленный тип.
Описание
Если вы не читали выше о команде TYPE, Вам стоило бы это сделать, перед тем как продолжить чтение.
FOR ... EACH цикл позволяет Вам перебрать все элементы данного типа. Это оптимально для обновления большой группы элементов (типа группы инопланетных захватчиков). Посмотрите команду TYPE.
См также: Type, New, Before, After, First, Last, Insert, Delete.
Пример
Код:

;двигаем все на один (подобно примеру, описанному для команды TYPE)
For KOMNATA.STUL = Each STUL
KOMNATA\x = KOMNATA\x + 1
Next


impersonalis 04.09.2005 05:42

First переменная_типа

Параметры
переменная_типа = фактическое имя типа, не конкретного элемента этого типа.
Описание
Если вы не читали выше о команде TYPE, Вам стоило бы это сделать, перед тем как продолжить чтение.
Используйте данную команду чтобы установить обращение к первому элементу типа. См пример.
См также: Type, New, Before, After, Last, Each, Insert, Delete.
Пример
Код:

;Объявление типа crafts

Type crafts
Field x
Field y
Field dead
Field graphic
End Type

;создание 100 объектов, с уникальными именами элементов типа
For t = 1 To 100
alien.crafts = New crafts
alien\x = Rnd(0,640)
alien\y = Rnd(0,480)
alien\dead = 0
alien\graphic = 1
Next

;Двигаем первый элемент типа
alien.crafts = First crafts

Print alien\x
Print alien\y
Print alien\dead
Print alien\graphic

; двигаем следующий элемент
alien = After alien

Print alien\x
Print alien\y
Print alien\dead
Print alien\graphic

; двигаем последний
alien.crafts = Last crafts

Print alien\x
Print alien\y
Print alien\dead
Print alien\graphic

;двигаем предпоследний
alien = Before alien

Print alien\x
Print alien\y
Print alien\dead
Print alien\graphic


impersonalis 04.09.2005 05:43

Last переменная_типа

Параметры
переменная_типа = фактическое имя типа, не конкретного элемента этого типа.
Описание
Если вы не читали выше о команде TYPE, Вам стоило бы это сделать, перед тем как продолжить чтение.
Используйте данную команду чтобы установить обращение к последнему элементу типа. См пример.
См также: Type, New, Before, After, Each, Insert, Delete.
Пример
Код:

;Объявление типа crafts

Type crafts
Field x
Field y
Field dead
Field graphic
End Type

;создание 100 объектов, с уникальными именами элементов типа
For t = 1 To 100
alien.crafts = New crafts
alien\x = Rnd(0,640)
alien\y = Rnd(0,480)
alien\dead = 0
alien\graphic = 1
Next

;Двигаем первый элемент типа
alien.crafts = First crafts

Print alien\x
Print alien\y
Print alien\dead
Print alien\graphic

; двигаем следующий элемент
alien = After alien

Print alien\x
Print alien\y
Print alien\dead
Print alien\graphic

; двигаем последний
alien.crafts = Last crafts

Print alien\x
Print alien\y
Print alien\dead
Print alien\graphic

;двигаем предпоследний
alien = Before alien

Print alien\x
Print alien\y
Print alien\dead
Print alien\graphic


impersonalis 04.09.2005 05:45

Before переменная_элемента_типа

Параметры
переменная_элемента_типа = не имя типа, а переменная элемента типа.
Описание
Если вы не читали выше о команде TYPE, Вам стоило бы это сделать, перед тем как продолжить чтение.
Используёте эту команду, чтобы получить доступ к предыдущему элементу типа. См. пример.
См. также: Type, New, After,First, Last, Each, Insert, Delete.
Пример
Код:

;Объявление типа crafts

Type crafts
Field x
Field y
Field dead
Field graphic
End Type

;создание 100 объектов, с уникальными именами элементов типа
For t = 1 To 100
alien.crafts = New crafts
alien\x = Rnd(0,640)
alien\y = Rnd(0,480)
alien\dead = 0
alien\graphic = 1
Next

;Двигаем первый элемент типа
alien.crafts = First crafts

Print alien\x
Print alien\y
Print alien\dead
Print alien\graphic

; двигаем следующий элемент
alien = After alien

Print alien\x
Print alien\y
Print alien\dead
Print alien\graphic

; двигаем последний
alien.crafts = Last crafts

Print alien\x
Print alien\y
Print alien\dead
Print alien\graphic

;двигаем предпоследний
alien = Before alien

Print alien\x
Print alien\y
Print alien\dead
Print alien\graphic


impersonalis 04.09.2005 05:48

After переменная_элемента_типа

Параметры
переменная_элемента_типа = не имя типа, а переменная элемента типа.
Описание
Если вы не читали выше о команде TYPE, Вам стоило бы это сделать, перед тем как продолжить чтение.
Используёте эту команду, чтобы получить доступ к следующему элементу типа. См. пример.
См. также: Type, New, Before, First, Last, Each, Insert, Delete.
Пример
Код:

;Объявление типа crafts

Type crafts
Field x
Field y
Field dead
Field graphic
End Type

;создание 100 объектов, с уникальными именами элементов типа
For t = 1 To 100
alien.crafts = New crafts
alien\x = Rnd(0,640)
alien\y = Rnd(0,480)
alien\dead = 0
alien\graphic = 1
Next

;Двигаем первый элемент типа
alien.crafts = First crafts

Print alien\x
Print alien\y
Print alien\dead
Print alien\graphic

; двигаем следующий элемент
alien = After alien

Print alien\x
Print alien\y
Print alien\dead
Print alien\graphic

; двигаем последний
alien.crafts = Last crafts

Print alien\x
Print alien\y
Print alien\dead
Print alien\graphic

;двигаем предпоследний
alien = Before alien

Print alien\x
Print alien\y
Print alien\dead
Print alien\graphic


impersonalis 04.09.2005 05:48

Insert

Параметры
отсутствуют
Описание
Я не знаю точно, где на практике Вы будете использовать эту команду, но в основном для выбора: где Вы вставите текущий элемент типа в коллекции. Когда вы создаёте новый элемент типа командой NEW, он автоматически добавляется в конец коллекции. Используйте INSERT наряду с BEFORE и AFTER (и командами выбора FIRST и LAST), чтобы поместить элемент именно там, где хотите. Возможно, Вам никогда не понадобиться эта команда. Но здесь предполагается, что нужна. Ознакомьтесь с примером.
См. также: Type, New, Before, After, First, Last, Each, Delete.
Пример
Код:

;пример по INSERT

;Объявление типа с созданием поля для контроля последовательности создания.
Type CHAIR
Field created
End Type

;Создание 10 стульев и присваивание их полям порядковых номеров
For t = 1 To 10
room.chair= New Chair
room\created = t
Next

;Создание нового стула (11ого)
room.chair= New Chair

; Устанавливаем порядковый номер - 11ый
room\created=11

;Теперь, давайте вставим этот стул ПЕРЕД первым в коллекции
Insert room Before First Chair

;Давайте проитерируем все стулья и посмотрим их порядковые номера
For room.chair = Each chair
Print room\created
Next


impersonalis 04.09.2005 05:49

Delete переменная_элемента_типа

Параметры
переменная_элемента_типа = не имя типа, а переменная элемента типа.
Описание
Если вы не читали выше о команде TYPE, Вам стоило бы это сделать, перед тем как продолжить чтение.
Используйте команду Delete, чтобы удалить элемент типа из коллекции. Используйте команды FIRST, LAST, BEFORE, и NEXT (ну это уже перебор! Естественно не NEXT, а AFTER – прим. impersonalis`а) для получения доступа к элементу типа, который вы хотите удалить, а затем команду Delete. Если Вы хотите удалить все элементы конкретного типа, Вы можете использовать конструкцию DELETE EACH.
Эту команду часто используют в FOR ... EACH цикле, например, когда происходит столкновение с элементом типа и Вы хотите удалить этот элемент ( корабль инопланетных захватчиков, как пример элемента типа) из коллекции.
См также: Type, New, Before, After, First, Last, Each, Insert.
Пример
Код:

;Двигаем всех на 1 (подобно примеру, описанному в команде TYPE)
;Если стул не находится больше на экране, удаляем этот элемент типа
;из коллекции

For room.chair = Each chair
room\x = room\x + 1
If room\x > 640 Then
Delete room
Next


impersonalis 04.09.2005 05:50

Null

Параметры
отсутствуют
Описание
Определяет пустой элемент. Полезен для создания переменной типа, ни на что не указывающей, или для проверки: существует ли элемент типа. Также полезен для того, чтобы проверять – есть ли ещё элементы в коллекции, при использовании команды AFTER.
Может быть использован и для присваивания, и для проверки на эквивалентность.
См также: Type, New, Delete, After, Before, First, Last.
Пример
Код:

; пример Null

Type Alien
Field x,y
End Type

a.Alien = New Alien
If a <> Null Then Print "существует!"
Delete a
If a = Null Then Print "уничтожили!"


impersonalis 29.09.2005 23:50

Object-Handle
Команды недокументированные - переводить нечего,
но описание сделал см:

Object-Handle

:glag:

Mr_F_ 30.10.2008 09:26

Ответ: Перевод хелпа - Type
 
>http://community.boolean.name/index.php?showtopic=29

пишет Die Domain "community.boolean.name" ist nicht verfьgbar.

ABTOMAT 30.10.2008 14:16

Ответ: Перевод хелпа - Type
 
Вот новая ссылка на тот топик


Часовой пояс GMT +4, время: 12:25.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot