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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2010, 13:07   #1
NeVerSS
Пользователь
 
Аватар для NeVerSS
 
Регистрация: 30.03.2010
Сообщений: 23
Вопрос Определить пустой ли элемент в массиве

Всем здрасть...
Проблема следующего рода:
Есть массив компонентов.Перебираю все его элементы и для каждого проверяю, если он не пуст то обращаюсь к его свойствам, иначе смотрую
следующий.Не понимаю с чем нужно сравнивать элемент массива такого типа, чтоб определить пуст ли он.
Пробывал так mas[i]<>nil но это не дало результата(((
Император всё видит... Император всё знает...
NeVerSS вне форума Ответить с цитированием
Старый 03.05.2010, 13:10   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

В каком смысле не дало результата?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.05.2010, 13:12   #3
NeVerSS
Пользователь
 
Аватар для NeVerSS
 
Регистрация: 30.03.2010
Сообщений: 23
По умолчанию

ему поравну =nil или <>nil.

В общем пишет inaccesseble value при обращении к свойству или вызову метода этого "существующего" элемента массива

Цитата:
Сообщение от NeVerSS Посмотреть сообщение
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Panel1: TPanel;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
mas:array [0..5] of TPanel;
mas_que:array [0..5] of boolean;
i:integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var TempPanel:TPanel;

begin
TempPanel:=TPanel.Create(Form1);
TempPanel.Top:=30;
TempPanel.Width:=20;
TempPanel.Left:=30;
Form1.InsertControl(TempPanel);
TempPanel:=TPanel.Create(Form1);
TempPanel.Top:=60;
TempPanel.Width:=20;
TempPanel.Left:=30;
Form1.InsertControl(TempPanel);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
i:=0;
repeat
If mas[i]=nil
then
begin
mas[i].Destroy;
end;
inc(i);
until i=5;
end;

end.
Вот примерно так.Может я где накосячил...

если написать mas[i]<>nil то он никогда это условие не выполняет...
Император всё видит... Император всё знает...

Последний раз редактировалось Stilet; 17.05.2010 в 13:44.
NeVerSS вне форума Ответить с цитированием
Старый 03.05.2010, 20:09   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

If mas[i]=nil
then
begin
mas[i].Destroy;//мы уничтожили объект но не ссылку на него
mas[i]:=nil;// а теперь убрали и ссылку
end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 17.05.2010, 13:01   #5
NeVerSS
Пользователь
 
Аватар для NeVerSS
 
Регистрация: 30.03.2010
Сообщений: 23
По умолчанию

понял, спасибо. Я уже решил по другому
Император всё видит... Император всё знает...
NeVerSS вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как найти в двумерном массиве МАХ элемент каждой строки? Jasper92 Общие вопросы C/C++ 9 16.12.2009 12:58
сколько раз элемент C[i,i] двухмерного массива C(N,N) встречается в этом массиве kirillbobo Паскаль, Turbo Pascal, PascalABC.NET 3 19.06.2009 20:44
Как поменять местами в массиве max и min элемент. Stager Общие вопросы C/C++ 2 13.01.2009 02:03
min элемент в массиве DeFace Общие вопросы C/C++ 2 06.01.2009 21:36
Функция которая в массиве ищет максимальный по модулю элемент Absent Помощь студентам 5 19.11.2007 21:23