Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

использованиe For

тут можно задать вопрос по скриптингу
Post Reply
MeLFiS
Novice
Novice
Posts: 147
Joined: 02.02.2008 12:21

использованиe For

Post by MeLFiS »

Code: Select all

rb= какоето айди рунбуки
rmax = 16
for r:= 1 to rmax do
begin
 Recall(rb,r);
end;
Кусок скрипта для рекола по всем рунам в 1 рунбуке как изменить его чтобы он реколился по всем рунам в 3 рунбках ? ?

П.С перекинете плиз в подфорум Help ато промазал кропаль((
WladL
Apprentice
Apprentice
Posts: 240
Joined: 27.07.2009 17:21
Location: DRW
Contact:

Post by WladL »

rbArr: Array of Cardinal;//ID буков

rbArr := [$xxxxxx,$yyyyyy,$zzzzzz]
rmax = 16
for a:=0 to Integer(high(rbArr)) do
for r:= 1 to rmax do
Recall(rbArr[a],r);
"Как хочешь ты трудись;
Но приобресть не льстись
Ни благодарности, ни славы,
Коль нет в твоих трудах ни пользы, ни забавы. (с) С.Крылов."
CFA
Developer
Developer
Posts: 492
Joined: 20.04.2006 6:03
Contact:

Post by CFA »

по моему в pascalscript не работает low/high применительно к массивам. я везде использовал getArrayLength(rbArr)-1
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

что-то там давно было с high применительно к массивам в паскальскрипте - или работало неправильно, или скрипт вылетал с ошибкой, не помню. помню только что проблема была в этом.
так что не стоит использовать :)
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
MeLFiS
Novice
Novice
Posts: 147
Joined: 02.02.2008 12:21

Post by MeLFiS »

Что же тогда использывать место

Code: Select all

for a:=0 to Integer(high(rbArr)) do 
???

Code: Select all

for a:=0 to getArrayLength(rbArr)-1 do 


это ?
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

да
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
WladL
Apprentice
Apprentice
Posts: 240
Joined: 27.07.2009 17:21
Location: DRW
Contact:

Post by WladL »

Проблема была в том , что в текущей версии паскальскрипта функция high вовзращает значение не Integer(как-то не удосужился проверить что именно она вовзращает) и если использовать его влоб как

Code: Select all

for a:=0 to high(rbArr) do 
получим ошибку, а вот если сделать прямое приведение к типу Integer,

Code: Select all

for a:=0 to Integer(high(rbArr)) do
то все очень даже и работает.

ЗЫ. Повторюсь это ТОЛЬКО в текущей версии паскальскрипта.
например в релизе стелса 1.0 , все работало и без приведения типов.
"Как хочешь ты трудись;
Но приобресть не льстись
Ни благодарности, ни славы,
Коль нет в твоих трудах ни пользы, ни забавы. (с) С.Крылов."
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

Code: Select all

{$IFNDEF PS_NOINT64}
  AddFunction('function Low: Int64;').Decl.AddParam.OrgName:='x';
  AddFunction('function High: Int64;').Decl.AddParam.OrgName:='x';
  {$ELSE}
  AddFunction('function Low: Integer;').Decl.AddParam.OrgName:='x';
  AddFunction('function High: Integer;').Decl.AddParam.OrgName:='x';
  {$ENDIF}


{$IFNDEF FPC}
{$IFNDEF DELPHI4UP}
{$IFNDEF LINUX}
  {$DEFINE PS_NOINT64}
{$ENDIF}
{$ENDIF}
{$ENDIF}
я устал закапываться в дебри этих дэфайнов :)
кому не лень - вперед в гугл.

из того, что я понял - надо при компиляции релизов правильно выполнять все условия, чтобы возвращало Integer, а не Int64. Хотя выполнить {$IFNDEF DELPHI4UP} сложно :)

А еще надежнее действительно жестко приводить через Integer(High(xxx))





P.S. В принципе паскальскрипт все увереннее внедряет новые форматы и стандарты, но так как мы вряд ли когда-то перейдем на Д2010 - то наверное можно принудительно задать Integer в этом и других таких местах
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Post Reply