FlightRadar+SAS

Форум для обсуждения деталей разработки программы SAS.Планета

Модераторы: vdemidov, Tolik

Аватара пользователя
vdemidov
Гуру
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз
Поблагодарили: 157 раз

Re: FlightRadar+SAS

Сообщение vdemidov »

В более менее похоже, только нужно учитывать время жизни картинки, указатель на которую передаете в этот объект.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
IC7K
Новичок
Сообщения: 19
Зарегистрирован: 25 фев 2011, 14:35
Благодарил (а): 2 раза

Re: FlightRadar+SAS

Сообщение IC7K »

только нужно учитывать время жизни картинки, указатель на которую передаете в этот объект

вот тут мне непонятно о чем речь :?

вот еще кусочек

Код: Выделить всё

TObjectSet = Class(TInterfacedObject, IObjectSet)
  private
    SASObjectSet: array of TSASObject; //динамический массив из объектов
    function  AddItem(LonLat: TDoublePoint; BitmapSize: TPoint; FixedInBitmap: TPoint; PictureBits: PColor32; HintText: WideString; InfoHTML: WideString; Number: Integer):integer; //добавляет новый объект в набор
    function  DeleteItem(AIndex: integer):boolean; //удаляет объект #AIndex из набора объектов
    function  GetCount: integer;  //выдает кол-во объектов
    function  GetItem(AIndex: integer): ISASObject; //выдает объект #AIndex
  public
    property Count: Integer read GetCount;
  published
    constructor Create(Count:Integer);
  end;


не пойму как сделать function AddItem(SASObject:TSASObject):Integer; ведь в интерфейсе класс TSASObject неопределен...
а function AddItem(SASObject:ISASObject):Integer; выдает что по разному определена AddItem

как сделать определение?
сильный поедает вкусного
Аватара пользователя
vdemidov
Гуру
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз
Поблагодарили: 157 раз

Re: FlightRadar+SAS

Сообщение vdemidov »

IC7K писал(а):не пойму как сделать function AddItem(SASObject:TSASObject):Integer; ведь в интерфейсе класс TSASObject неопределен...а function AddItem(SASObject:ISASObject):Integer; выдает что по разному определена AddItem

Ну, учитывая то, что IObjectSet должен быть тредсейфовым, и то, какие методы в нем есть, он может быть только статическим, то есть неизменным после создания. Следовательно методы AddItem и DeleteItem этому классу не нужны в принципе.
И еще нужно хранить указатели на интерфейсы, а не на объекты, тоесть не

Код: Выделить всё

SASObjectSet: array of TSASObject;
а

Код: Выделить всё

SASObjectSet: array of ISASObject;
. И в деструкторе не забыть обнилить все элементы массива перед удалением.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
IC7K
Новичок
Сообщения: 19
Зарегистрирован: 25 фев 2011, 14:35
Благодарил (а): 2 раза

Re: FlightRadar+SAS

Сообщение IC7K »

И в деструкторе не забыть обнилить все элементы массива перед удалением.

Код: Выделить всё

destructor TSASObjectSet.Destroy;
var i:Cardinal;
begin
  i:=Length(fSASObjectSet);
  while i<>0 do
    begin
    fSASObjectSet[i]:=nil; //уничтожаем [i] объект
    Dec(i);
    end;
  fSASObjectSet[i]:=nil; //уничтожаем [0] объект
end;


IObjectSet должен быть тредсейфовым, и то, какие методы в нем есть, он может быть только статическим

как тогда добавлять указатели на SASObject в Set? :shock:
сильный поедает вкусного
Аватара пользователя
vdemidov
Гуру
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз
Поблагодарили: 157 раз

Re: FlightRadar+SAS

Сообщение vdemidov »

IC7K писал(а):как тогда добавлять указатели на SASObject в Set?

Например передавать в конструктор уже готовый массив.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
IC7K
Новичок
Сообщения: 19
Зарегистрирован: 25 фев 2011, 14:35
Благодарил (а): 2 раза

Re: FlightRadar+SAS

Сообщение IC7K »

а если объекты то появляются то исчезают, каждый раз надо удалять массив а потом заново передавать полностью?

чето я окончательно запутался
сильный поедает вкусного
Аватара пользователя
vdemidov
Гуру
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз
Поблагодарили: 157 раз

Re: FlightRadar+SAS

Сообщение vdemidov »

Увы, но даже, если какой-то из объектов сдвигается, то при следующем запросе нужно формировать новый массив.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
IC7K
Новичок
Сообщения: 19
Зарегистрирован: 25 фев 2011, 14:35
Благодарил (а): 2 раза

Re: FlightRadar+SAS

Сообщение IC7K »

что ж вы раньше то не сказали :lol:
это в корне меняет все

т.е. при изменении параметров какого либо объекта, нужно удалять старый и грузить новый массив?
сильный поедает вкусного
Аватара пользователя
vdemidov
Гуру
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз
Поблагодарили: 157 раз

Re: FlightRadar+SAS

Сообщение vdemidov »

Удалять вообще ничего не нужно. Это ж интерфейсы, они сами считать ссылки будут.
Тоесть держите где-то у себя массив интерфейсов на объекты. Если какой-то меняется, заменяете в массиве ссылку на вновь созданный.
По запросу ObjectSet-а создаете новый объект, а он копирует себе массив интерфейсов.
И не забывайте, что у вам всего понадобиться отдельный тред в плагине, который будет получать данные по сети. Так что не забываем про критические секции.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
IC7K
Новичок
Сообщения: 19
Зарегистрирован: 25 фев 2011, 14:35
Благодарил (а): 2 раза

Re: FlightRadar+SAS

Сообщение IC7K »

извиняюсь, дела отвлекли

чтото тут я завис, можно пример кода?

Если какой-то меняется, заменяете в массиве ссылку на вновь созданный.
сильный поедает вкусного
Ответить

Вернуться в «Раздел для разработчиков программы SAS.Планета»