Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Операционные системы > Софт
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Результаты опроса: Стоит ли использовать ActiveX, написанный на Delphi, в своих приложениях
Нет 1 14.29%
Да 3 42.86%
В зависимости от кривизны рук разработчика 4 57.14%
Лучше писать ActiveX на другом языке 2 28.57%
Опрос с выбором нескольких вариантов ответа. Голосовавшие: 7. Вы ещё не голосовали в этом опросе

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2010, 23:25   #11
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

Цитата:
Все равно возвращется 0, либо то, что я указал до вызова этого метода(((
А как 0 возвращается? Как результат выполнения функции или как значение Count?
maxionans вне форума Ответить с цитированием
Старый 21.02.2010, 23:33   #12
Konstantin_V
Новичок
Джуниор
 
Регистрация: 21.02.2010
Сообщений: 17
По умолчанию

Это не может быть связано, что в примере массив объявляется как long?
Konstantin_V вне форума Ответить с цитированием
Старый 21.02.2010, 23:33   #13
Konstantin_V
Новичок
Джуниор
 
Регистрация: 21.02.2010
Сообщений: 17
По умолчанию

Цитата:
Сообщение от maxionans Посмотреть сообщение
А как 0 возвращается? Как результат выполнения функции или как значение Count?
как результат
и если я инициализирую массив значениями до вызова функции, то в результате я получаю их же...

Последний раз редактировалось Konstantin_V; 21.02.2010 в 23:36.
Konstantin_V вне форума Ответить с цитированием
Старый 21.02.2010, 23:36   #14
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

Ну так результат функции объявлен как HRESULT и 0 в данном случае это S_OK, т.е. функция была выполнена успешно. Похоже, проблемы и не было вовсе
maxionans вне форума Ответить с цитированием
Старый 21.02.2010, 23:39   #15
Konstantin_V
Новичок
Джуниор
 
Регистрация: 21.02.2010
Сообщений: 17
По умолчанию

и если я инициализирую массив значениями до вызова функции, то в результате я получаю их же...
Konstantin_V вне форума Ответить с цитированием
Старый 21.02.2010, 23:41   #16
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

Хм, а после первого вызова Count <> 0?
maxionans вне форума Ответить с цитированием
Старый 21.02.2010, 23:43   #17
Konstantin_V
Новичок
Джуниор
 
Регистрация: 21.02.2010
Сообщений: 17
По умолчанию

и после второго <> 0
Konstantin_V вне форума Ответить с цитированием
Старый 21.02.2010, 23:53   #18
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

ну тогда показывайте код, у меня догадки вслепую кончились
maxionans вне форума Ответить с цитированием
Старый 21.02.2010, 23:55   #19
Konstantin_V
Новичок
Джуниор
 
Регистрация: 21.02.2010
Сообщений: 17
По умолчанию

Могу только свой код показать)))
procedure TfrmParent.ApplyFilter(ADataSet: TpFIBDataSet);
type
TArray = array[0..(MaxInt div SizeOf(Integer)) - 1] of Integer;
PArray = ^TArray;
var
ConditionGlobalFilter: TCondition;
ConditionEnable: Boolean;
Filter: TFilters;
FilterActive: Integer;
ValuesCount: Integer;
PValues: PArray;
i: Integer;
begin
ADataSet.CancelConditions;
try
try
ConditionGlobalFilter := ADataSet.Conditions.FindCondition(G lobalFilterName);
except
ConditionGlobalFilter := nil;
end;
if ConditionGlobalFilter <> nil then
begin
ConditionEnable := False;
GlobalFilter.Connect;
try
for Filter := Low(TFilters) to High(TFilters) do
begin
if Filter in fActiveFilter then
begin
GlobalFilter.Is_Active(Ord(Filter), FilterActive);
if FilterActive <> 0 then
begin
ConditionEnable := True;
ValuesCount := 0;
PValues := nil;
GlobalFilter.Get_Values(Ord(Filter) , Integer(PValues), &ValuesCount);
if ValuesCount > 0 then
PValues := AllocMem(ValuesCount * SizeOf(Longint))
else
PValues := nil;
try
if Assigned(PValues) then
GlobalFilter.Get_Values(Ord(Filter) , Integer(PValues), &ValuesCount);
for i := 0 to ValuesCount - 1 do
begin
ShowMessage(IntToStr(PValues^[i]));
//*/
end;
finally
FreeMem(PValues);
end;
end;
end;
end;
finally
GlobalFilter.Disconnect;
ConditionGlobalFilter.Enabled := ConditionEnable;
end;
end;
finally
ADataSet.ApplyConditions;
end;
end;
Konstantin_V вне форума Ответить с цитированием
Старый 21.02.2010, 23:59   #20
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

Integer(PValues) <- так в данном случае делать нельзя. Попробуйте заменить на PValues^[ 0 ].
maxionans вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание\использование своих DLL библиотек Vol666 Общие вопросы Delphi 5 26.08.2009 11:55
использование в delphi com объектов Anekdot Помощь студентам 0 18.06.2009 19:54
Использование JavaScript в Delphi... Valdis Общие вопросы Delphi 2 27.09.2007 08:45
Использование JPEG в Delphi 7 Aslan Мультимедиа в Delphi 11 02.08.2007 13:25
Использование функции Excel из Delphi Геля Общие вопросы Delphi 3 07.06.2007 07:33