FlightRadar+SAS
- vdemidov
- Гуру
- Сообщения: 1687
- Зарегистрирован: 12 дек 2008, 13:10
- Откуда: Киев
- Благодарил (а): 191 раз
- Поблагодарили: 157 раз
Re: FlightRadar+SAS
В более менее похоже, только нужно учитывать время жизни картинки, указатель на которую передаете в этот объект.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Re: FlightRadar+SAS
только нужно учитывать время жизни картинки, указатель на которую передаете в этот объект
вот тут мне непонятно о чем речь
вот еще кусочек
не пойму как сделать function AddItem(SASObject:TSASObject):Integer; ведь в интерфейсе класс TSASObject неопределен...
а function AddItem(SASObject:ISASObject):Integer; выдает что по разному определена AddItem
как сделать определение?
вот тут мне непонятно о чем речь
вот еще кусочек
Код: Выделить всё
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
IC7K писал(а):не пойму как сделать function AddItem(SASObject:TSASObject):Integer; ведь в интерфейсе класс TSASObject неопределен...а function AddItem(SASObject:ISASObject):Integer; выдает что по разному определена AddItem
Ну, учитывая то, что IObjectSet должен быть тредсейфовым, и то, какие методы в нем есть, он может быть только статическим, то есть неизменным после создания. Следовательно методы AddItem и DeleteItem этому классу не нужны в принципе.
И еще нужно хранить указатели на интерфейсы, а не на объекты, тоесть не
Код: Выделить всё
SASObjectSet: array of TSASObject;Код: Выделить всё
SASObjectSet: array of ISASObject;Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Re: FlightRadar+SAS
И в деструкторе не забыть обнилить все элементы массива перед удалением.
IObjectSet должен быть тредсейфовым, и то, какие методы в нем есть, он может быть только статическим
как тогда добавлять указатели на SASObject в Set?
Код: Выделить всё
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?
сильный поедает вкусного
- vdemidov
- Гуру
- Сообщения: 1687
- Зарегистрирован: 12 дек 2008, 13:10
- Откуда: Киев
- Благодарил (а): 191 раз
- Поблагодарили: 157 раз
Re: FlightRadar+SAS
IC7K писал(а):как тогда добавлять указатели на SASObject в Set?
Например передавать в конструктор уже готовый массив.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Re: FlightRadar+SAS
а если объекты то появляются то исчезают, каждый раз надо удалять массив а потом заново передавать полностью?
чето я окончательно запутался
чето я окончательно запутался
сильный поедает вкусного
- vdemidov
- Гуру
- Сообщения: 1687
- Зарегистрирован: 12 дек 2008, 13:10
- Откуда: Киев
- Благодарил (а): 191 раз
- Поблагодарили: 157 раз
Re: FlightRadar+SAS
Увы, но даже, если какой-то из объектов сдвигается, то при следующем запросе нужно формировать новый массив.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Re: FlightRadar+SAS
что ж вы раньше то не сказали
это в корне меняет все
т.е. при изменении параметров какого либо объекта, нужно удалять старый и грузить новый массив?
это в корне меняет все
т.е. при изменении параметров какого либо объекта, нужно удалять старый и грузить новый массив?
сильный поедает вкусного
- vdemidov
- Гуру
- Сообщения: 1687
- Зарегистрирован: 12 дек 2008, 13:10
- Откуда: Киев
- Благодарил (а): 191 раз
- Поблагодарили: 157 раз
Re: FlightRadar+SAS
Удалять вообще ничего не нужно. Это ж интерфейсы, они сами считать ссылки будут.
Тоесть держите где-то у себя массив интерфейсов на объекты. Если какой-то меняется, заменяете в массиве ссылку на вновь созданный.
По запросу ObjectSet-а создаете новый объект, а он копирует себе массив интерфейсов.
И не забывайте, что у вам всего понадобиться отдельный тред в плагине, который будет получать данные по сети. Так что не забываем про критические секции.
Тоесть держите где-то у себя массив интерфейсов на объекты. Если какой-то меняется, заменяете в массиве ссылку на вновь созданный.
По запросу ObjectSet-а создаете новый объект, а он копирует себе массив интерфейсов.
И не забывайте, что у вам всего понадобиться отдельный тред в плагине, который будет получать данные по сети. Так что не забываем про критические секции.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Re: FlightRadar+SAS
извиняюсь, дела отвлекли
чтото тут я завис, можно пример кода?
Если какой-то меняется, заменяете в массиве ссылку на вновь созданный.
чтото тут я завис, можно пример кода?
Если какой-то меняется, заменяете в массиве ссылку на вновь созданный.
сильный поедает вкусного