FlightRadar+SAS

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

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

Re: FlightRadar+SAS

Сообщение vdemidov » 03 мар 2011, 22:49

В более менее похоже, только нужно учитывать время жизни картинки, указатель на которую передаете в этот объект.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1685
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 135 раз.

Re: FlightRadar+SAS

Сообщение IC7K » 04 мар 2011, 06:04

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

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

вот еще кусочек
Код: Выделить всё
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

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

Re: FlightRadar+SAS

Сообщение vdemidov » 04 мар 2011, 11:15

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

Ну, учитывая то, что IObjectSet должен быть тредсейфовым, и то, какие методы в нем есть, он может быть только статическим, то есть неизменным после создания. Следовательно методы AddItem и DeleteItem этому классу не нужны в принципе.
И еще нужно хранить указатели на интерфейсы, а не на объекты, тоесть не
Код: Выделить всё
SASObjectSet: array of TSASObject;
а
Код: Выделить всё
SASObjectSet: array of ISASObject;
. И в деструкторе не забыть обнилить все элементы массива перед удалением.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1685
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 135 раз.

Re: FlightRadar+SAS

Сообщение IC7K » 04 мар 2011, 12:03

И в деструкторе не забыть обнилить все элементы массива перед удалением.
Код: Выделить всё
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:
сильный поедает вкусного
IC7K
Новичок
 
Сообщения: 19
Зарегистрирован: 25 фев 2011, 14:35
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.

Re: FlightRadar+SAS

Сообщение vdemidov » 04 мар 2011, 12:08

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

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

Re: FlightRadar+SAS

Сообщение IC7K » 04 мар 2011, 12:57

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

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

Re: FlightRadar+SAS

Сообщение vdemidov » 04 мар 2011, 13:48

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

Re: FlightRadar+SAS

Сообщение IC7K » 04 мар 2011, 13:57

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

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

Re: FlightRadar+SAS

Сообщение vdemidov » 04 мар 2011, 14:26

Удалять вообще ничего не нужно. Это ж интерфейсы, они сами считать ссылки будут.
Тоесть держите где-то у себя массив интерфейсов на объекты. Если какой-то меняется, заменяете в массиве ссылку на вновь созданный.
По запросу ObjectSet-а создаете новый объект, а он копирует себе массив интерфейсов.
И не забывайте, что у вам всего понадобиться отдельный тред в плагине, который будет получать данные по сети. Так что не забываем про критические секции.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1685
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 135 раз.

Re: FlightRadar+SAS

Сообщение IC7K » 14 мар 2011, 04:44

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

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

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

Пред.След.

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1