IPB
ЛогинПароль:

> 

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> TList, FP
сообщение
Сообщение #1


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Добрый день
Существует ли список в FP, как встроенный тип?
говорят что да но найти о нем в руководстве не могу ни слова sad.gif


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






С пониманием природы первого указателя у тебя проблема...
Цитата
получаем 2 аргумента первый указатель на процедуру, второй -- не ясно что...
С чего бы это? Смотри, что написано:

Цитата(rtl.pdf)
2.42.21 TFPList.ForEachCall
Synopsis: Call a procedure or method for each pointer in the list.
Declaration: procedure ForEachCall(proc2call: TListCallback;arg: pointer)
procedure ForEachCall(proc2call: TListStaticCallback;arg: pointer)
Visibility: public
Description: ForEachCall iterates over all pointers in the list and calls proc2call, passing it the pointer and the additional arg data pointer. Proc2Call can be a method or a static procedure.

То есть, первый аргумент - это сам указатель, хранящийся в списке (над элементом, на который он указывает, надо произвести какие-то действия), а второй - дополнительный указатель.

Второй ЗДЕСЬ не используется.

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(volvo @ 17.07.2007 15:50) *
С чего бы это?
туманно все как-то...

посмотрев исходники кажеться понял зачем nil -- просто так..

my_list.foreachcall(@incr, nil);
//вызов процедуры

procedure incr(p: pointer; arg: pointer); // И здесь тоже ...
//реализация процедуры
begin
with PT(p)^ do begin
inc(X); inc(Y);
end;
end;


procedure TFPList.ForEachCall(proc2call:TListCallback;arg:pointer);
//реализация метода(исходники)
var
i : integer;
p : pointer;
begin
For I:=0 To Count-1 Do
begin
p:=FList^[i];
if assigned(p) then
proc2call(p,arg);
end;
end;

type TListCallback = procedure(
//реализация типа (документация)
data: pointer; //Data pointer from the list.
arg: pointer // Parameter passed to the ForEachCall call. /не нужный параметр?
) of object;

итак мы вызываем метод(в качестве первого параметра используем указатель(почему?) на процедуруа второй оставляем пустым), процедура возвразщает 2 указателя, которые преобразуются в некий TListCallback. Тоесть мы для вызова ForEachCall используем два лишних указателя .Так?

Сообщение отредактировано: compiler -


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


TListCallback - это процедура которую будет вызывать ForEachCall для КАЖДОГО элемента списка и передавать ей этот элемент первым параметром.
Втрой указаталь - arg нужен для того, чтобы передавать в TListCallback некие дополнительные параметры, например, если мы хотим отфильтровать список, в качестве arg будет выстпуать новый список, в котором будут аккумулироваться разультаты фильтрации.


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
compiler   TList   15.07.2007 0:22
volvo   Не совсем "встроенный". Описан в модуле …   15.07.2007 0:28
compiler   спасибо... а что такое notification mechanism? […   15.07.2007 0:32
volvo   Документация утверждает ,что у TList-а есть механи…   15.07.2007 0:52
compiler   мда... ихний список совсем не список... мне совсем…   15.07.2007 22:08
volvo   А может лучше ты расскажешь, что хочешь получить? …   15.07.2007 22:37
compiler   А может лучше ты расскажешь, что хочешь получить? …   15.07.2007 22:48
volvo   Все, про TList можешь забыть - реализуй список сам…   15.07.2007 23:58
compiler   Все, про TList можешь забыть - реализуй список са…   16.07.2007 0:09
hardcase   просто как работать с классическим списком я чит…   17.07.2007 5:06
compiler   А простым примером по использовыванию никто не под…   17.07.2007 17:12
volvo   Так, например: uses classes; type PT = ^T; T…   17.07.2007 18:08
compiler   volvo, а в каком режиме ты компилировал? мой лог e…   17.07.2007 18:25
volvo   У меня по умолчанию выставлен {$mode delphi}   17.07.2007 18:56
compiler   У меня по умолчанию выставлен {$mode delphi}а…   17.07.2007 19:05
volvo   Для диалекта - надо добавить кое-что в заголовки п…   17.07.2007 19:25
compiler   Для диалекта - надо добавить кое-что в заголовки п…   17.07.2007 19:39
volvo   С пониманием природы первого указателя у тебя проб…   17.07.2007 19:50
compiler   С чего бы это? туманно все как-то... посмотрев ис…   17.07.2007 20:45
hardcase   TListCallback - это процедура которую будет вызыва…   17.07.2007 21:07
compiler   хорошо, но все же почему мы вызываем(@incr, nil), …   17.07.2007 21:15
compiler   вопрос по добавлению нового элемент есть метод Add…   18.07.2007 22:45
volvo   Во-первых, в моем примере используется не TListCal…   17.07.2007 21:12
volvo   На входе - тот самый указатель (на данные), которы…   18.07.2007 23:10
compiler   хорошо, вроде разобрались... спасибо.   18.07.2007 23:26
compiler   есть задача а не получается :) существует некий по…   20.07.2007 18:49
volvo   Присоедини программу полностью, чтоб ее можно было…   20.07.2007 18:54
compiler   ***   20.07.2007 19:10
volvo   Ну, допустим, для того, чтобы сохранить значение н…   20.07.2007 19:26
compiler   Ну, допустим, для того, чтобы сохранить значение н…   20.07.2007 19:31
volvo   Я же написал: , а значит, я имел в виду описание т…   20.07.2007 20:25
compiler   Я же написал , а значит, я имел в виду описание ти…   20.07.2007 20:34
volvo   Да нельзя делать это с переменной! Нужно приво…   20.07.2007 20:39
compiler   спасибо теперь эта часть( :) ) работает... Хотя э…   20.07.2007 21:55
volvo   Вот что мне непонятно - это твое нежелание использ…   20.07.2007 22:08
compiler   одни вопросы :) Вот что мне непонятно - это твое …   20.07.2007 22:27
volvo   Мало ли, как тебе удобнее... Ты мало того, что дел…   20.07.2007 23:45
compiler   Не забывай, что ты работаешь с Class Methods, так…   20.07.2007 23:56
hardcase   кто такой VMT? Virtual methods table - таблица ме…   25.07.2007 19:30


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 24.04.2024 19:07
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name