Page 1 of 1

Язык Pascal

Posted: 24.03.2005 7:13
by Miralex
Для тех, кто не может найти документацию по языку Pascal - переходим по следующим ссылкам и читаем:

Электронный учебник по языку Pascal

Справочник по функциям Delphi

И еще один справочник по функциям Delphi


Электронные книги по языкам программирования Pascal и Delphi


P.S. Если вы нашли документацию лучше - добавляйте свои ссылки.

Posted: 06.11.2006 15:29
by Dirk
Ребят, будте аккуратны, некоторые архивы заражены вредоносными скриптами.
Вот тут, http://borlpasc.narod.ru/turbo_pacs.htm есть много полезного по Паскалю

Posted: 22.11.2006 12:15
by Edred
Некоторые особенности Паскаля в стелсе и стелса в игре

Паскаль скрипт – довольно строгий язык. В частности, вам стоит обратить внимание, что вы не сможете запустить скрипт, в котором используются функции с опущенными параметрами (все параметры надо явно задавать), также нельзя передавать параметром не тот формат данных, который требуется. Например, вы не сможете (в отличие от инжекта) использовать целые числа вместо булевских выражений (true и false), вы не сможете к строке добавить число – вам надо это число преобразовать в строку и потом прибавлять.
Кстати, сразу о параметрах. Зачастую в параметрах требуется указать цвет, а для вас цвет объекта может быть несущественнен. Укажите тогда $FFFF в качестве цвета, это означает любой цвет. Работает со всеми командами, где требуется задать цвет.

В Стелсовском Паскале нет присваивания значений массиву списком. То есть конструкция:
MyArray[1..5] := (1,2,3,4,5);
Работать не будет. Значения в массив можно заносить только поэлементно.

Стелс, в отличие от обычного клиента, не контролирует количество итемов в контейнере. На обычном клиенте практически невозможно положить в контейнер больше 255 итемов, при этом в ряде комбинаций «версия сервера-версия клиента» открытие контейнера, в котором больше 255 итемов просто приводит к крешу клиента. Например, такое наблюдается на Sphere 0.55i + Client 2.0.3. А 56-ая Сфера с этим же клиентом такие контейнеры открывает нормально, но положить в них уже ничего нельзя. Так вот, Стелсу это по фиг. Он положит итемы в такой контейнер. И легко. У меня при отладкескриптов иногда до 1000 объектов оказывается в контейнере. Будьте внимательны, особенно, если на вашем шарде за макросные программы банят.

В обычном клиенте (и, соответственно, в скриптах инжекта) если вы откроете какой-то контейнер, то клиент (и инжект) запомнит содержимое этого контейнера и вы сможете его использовать вне зависимости от того, лежит ли этот контейнер в исходном месте или вы переместили его в другое место. В Стелсе не так. Если вы переместите этот контейнер в новое место – вам надо заново открыть его, чтобы использовать его содержимое.

Потом еще буду дополнять тему...

Posted: 22.11.2006 12:39
by CFA
насчет массивов. в pascalScript работают так называемы динамические массивы, и присваивание им списка -

Code: Select all

var a : array of integer;
begin
    a := [0, 1, 2, 3, 4]; //получиться массив на 5 элементов
end.
проблемы возникают если это массив не из ordinal типов/string, а из записей, но это обходиться путем создания функции-конструктора для такой записи -

Code: Select all

type myPoint = record
    x, y : integer;
end;

function makePoint(x, y : integer) : myPoint;
begin
    result.x := x;
    result.y := y;
end;

var a : array of myPoint;
begin
    a := [makePoint(0,0), makePoint(100,100)];
end.

Posted: 09.09.2008 16:41
by Beren
а инициализировать переменную в блоке Var можно?
а если нельзы, то не подскажете если строгое правило инициализации переменных по умолчанию.
допустим :

Code: Select all

var
 IsInit:boolean;
будет ли IsInit равным false?

Posted: 09.09.2008 17:41
by CFA
Beren wrote:а инициализировать переменную в блоке Var можно?
нет
Beren wrote: а если нельзы, то не подскажете если строгое правило инициализации переменных по умолчанию.
допустим :

Code: Select all

var
 IsInit:boolean;
будет ли IsInit равным false?
вообще в классическом паскале значение переменной до инициализации неопределено, но делфи и паскаль скрипт инициализируют переменные нулями. строки будут пустые, булевые - false'ом, а всякие integer, byte & тд нулями. Таким образом IsInit будет false