Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Почему не работает SetLength?  [new]
UtoECat
Member

Откуда:
Сообщений: 8
Почему не работает SetLength?
Короче говоря... У меня есть процедура обработчик, которая по нажатии на панель делает это :
procedure TForm7.md(Sender: TObject; Button: TMouseButton; Shift: TShiftState;
X, Y: Integer);
var obj : TSEOBJECT;
begin obj.tr.SY := 100; obj.tr.SX := 100; //разъяснение типов
obj.Color.R := 255; obj.tr.X := X; //я не считаю
obj.tr.Y := Y; // важным
obj.Color.A := 255; // догадывайтесь сами :D
SlimeEngine.ADD(obj,gamescene);
end;

Она выполняет процедуру в другом пространстве имён (SlimeEngine), куда посылает новый объект и массив, в который его надо запихнуть. Эта процедура выглядит так :
procedure Add ( obj : TSEOBJECT; scene : TSEARRAY); //add object
var
l : integer;
begin
l := Length(scene);
SetLength(scene, l + 1);
scene[l] := obj;
end;

Так вот... Оказалось, что в процедуре ADD не работает процедура SetLength ( да и присваивание scene[l] := obj тоже) ... Я сам не пойму почему... Если я укажу на массив GAMESCENE напрямую, то всё заробит, а иначе не хочет... Вот так робит к примеру :
begin
l := Length(scene);
SetLength(gamescene, l + 1);
GameScene[l] := obj;
end;

Прошу помощи :) Я в ступоре блин... Придется тогда наверное через классы это как-то мутить... Но я этого пока не хочу...
З.Ы : Студия Embarcadero RAD Studio 10.3

Сообщение было отредактировано: 15 сен 20, 20:24
15 сен 20, 20:22    [22197779]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает SetLength?  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 4552
UtoECat,

procedure Add ( obj : TSEOBJECT; var scene : TSEARRAY);
15 сен 20, 20:31    [22197785]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает SetLength?  [new]
UtoECat
Member

Откуда:
Сообщений: 8
Kazantsev Alexey, [dcc32 Error] slimeengine.pas(100): E2037 Declaration of 'ADD' differs from previous declaration

Нет. Дело не в этом
15 сен 20, 20:33    [22197788]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает SetLength?  [new]
UtoECat
Member

Откуда:
Сообщений: 8
UtoECat, Под словом не работает я подразумеваю не рантайм, а просто факт того, что в результате выполнения процедуры ничего не происходит... Даже не меняется размер. Если только я не укажу массив GAMESCENE напрямую опять же
15 сен 20, 20:37    [22197791]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает SetLength?  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 4552
UtoECat
Дело не в этом

Дело в этом. Исправляй декларацию в обоих местах.
15 сен 20, 20:38    [22197793]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает SetLength?  [new]
UtoECat
Member

Откуда:
Сообщений: 8
Kazantsev Alexey,

В каком смысле?
15 сен 20, 20:40    [22197796]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает SetLength?  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 4552
UtoECat
В каком смысле?

Декларации в секциях interface и implementation должны быть одинаковыми. В таком смысле.
15 сен 20, 20:43    [22197800]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает SetLength?  [new]
UtoECat
Member

Откуда:
Сообщений: 8
Kazantsev Alexey,
ааа.... понял... Спасибо... чёт сам не додумался
15 сен 20, 20:43    [22197802]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает SetLength?  [new]
zedxxx
Member

Откуда:
Сообщений: 28
UtoECat
Нет. Дело не в этом

А вникнуть в сообщение об ошибке не пробовали?
15 сен 20, 20:44    [22197803]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает SetLength?  [new]
UtoECat
Member

Откуда:
Сообщений: 8
zedxxx, так в этом и дело... уже 4 часа около монитора... 100 сайтов уже облазил... голова не пашет совсем :D.
15 сен 20, 20:46    [22197804]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает SetLength?  [new]
zedxxx
Member

Откуда:
Сообщений: 28
UtoECat, Хе, 4 часа за монитором это же всего-ничего, можно сказать только сел поработать.
15 сен 20, 20:48    [22197806]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает SetLength?  [new]
UtoECat
Member

Откуда:
Сообщений: 8
zedxxx,
так я ещё на работе напахался с 8 утра до 5 вечера :DD
15 сен 20, 20:50    [22197809]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает SetLength?  [new]
defecator
Member

Откуда:
Сообщений: 39265
UtoECat
zedxxx,
так я ещё на работе напахался с 8 утра до 5 вечера :DD


в макдональдсе аншлаг, не успевал мыть полы ?

Сообщение было отредактировано: 15 сен 20, 20:56
15 сен 20, 21:00    [22197821]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает SetLength?  [new]
cptngrb
Member

Откуда:
Сообщений: 590
defecator, злой ты и не толерантный
16 сен 20, 08:21    [22198067]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает SetLength?  [new]
UtoECat
Member

Откуда:
Сообщений: 8
defecator

в макдональдсе аншлаг, не успевал мыть полы ?

Это намёк на то, что я студент? :D
Вы не думайте.... Программирование - моё хобби, не связанное с основной профессией.

Сообщение было отредактировано: 16 сен 20, 12:38
16 сен 20, 12:42    [22198335]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить