Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определение степени заполненности массива, Количество заполненных ячеек массива 
:(
    Опции темы
WaterProof
  Дата 22.3.2007, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


OverLapped



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 13.10.2006
Где: Москва

Репутация: нет
Всего: нет



Имеется массив определенной длины FavCount. 
Код

TFavItems = array[1..FavCount] of TMenuItem;

По мере работы программы в массив добавляются МенюИтемы:
Код

procedure TMainForm.N16Click(Sender: TObject);
var I:integer;
    item:TMenuItem;
    Ini:TIniFile;
    f:textfile;
begin
i:=1;
curitemCount := 0;
favlist.Enabled := true;
item := TMenuItem.Create(mainmenu);
item.Caption := treeview.Selected.Text;
item.Tag := treeview.Selected.AbsoluteIndex;
item.OnClick := ItemClick;
favlist.Add(item);
(******************* Скан массива ***)
while favitems[i] <> nil do
 begin
 inc(CurItemCount);
 end;
 favitems[curItemCount+1] := item; 
end;

Нужно узнать, сколько ячеек массива FavCount заполнено итемами....(то есть они не все будут заполнены, а только часть). Пустые ячейки по идее должны быть равны nil(или я не прав?).
Я пробую сканировать массив, но он неправильно определяет(программа просто зависает при проверке):
Код

while favitems[i] <> nil do
 begin
 inc(CurItemCount);
 end;
 favitems[curItemCount+1] := item;

PM MAIL ICQ   Вверх
Yanis
Дата 22.3.2007, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(WaterProof @  22.3.2007,  14:11 Найти цитируемый пост)
Я пробую сканировать массив, но он неправильно определяет(программа просто зависает при проверке):

Пройдись циклом for и не мучайся.

Добавлено @ 13:16 
Код
for i := 1 to FavCount do
  if IsBadCodePtr(favitems[i]) then
    Inc(BadItemCount);

  Length(favitems) - BadItemCount; // < - кол-во инициированных итемов



--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
WaterProof
Дата 22.3.2007, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


OverLapped



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 13.10.2006
Где: Москва

Репутация: нет
Всего: нет



Хм... Вроде работает, и вроде не работает...
Код

for i:=1 to (length(favitems) - BadItemCount) do
favlist.Add(favitems[i]); // favlist - тоже TMenuItem


Строю меню динамическое из массива(считанного из файла), а меню и не появляется.... Хотя при проверке, массив 1)сохраняется 2) количество инициализированных итемов тоже подсчитывается.... В чем юмор??
PM MAIL ICQ   Вверх
Yanis
Дата 22.3.2007, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(WaterProof @  22.3.2007,  14:52 Найти цитируемый пост)
В чем юмор?? 

в F7 и F8.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
WaterProof
Дата 22.3.2007, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


OverLapped



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 13.10.2006
Где: Москва

Репутация: нет
Всего: нет



Намек понял.
PM MAIL ICQ   Вверх
MetalFan
Дата 22.3.2007, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



перед использованием массива сделать ему ZeroMemory.
ибо если это глобальная переменная, то там может содержаться мусор и проверка assigned или <>nil не прокатит


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Rennigth
Дата 22.3.2007, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



WaterProof,  кстати посоветовал бы все-таки динамический массив использовать и не статику.


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
WaterProof
Дата 22.3.2007, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


OverLapped



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 13.10.2006
Где: Москва

Репутация: нет
Всего: нет



Я сделал проще: отказался от массива вообще. Сделал через TstringList. И все оказалось ЗНАЧИТЕЛЬНО проще..... smile 
Rennigth, динамический массив там не к чему... Слишком малое количество данных, и слишком много кода(ну ладно, не слишком=))

MetalFan, вот кажется мне мусор и помешал сделать массивами...

Тем не менее, всем спасибо за участие в проблеме! smile 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0759 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.