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

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

 
 Ответить  Открыть новую тему 
> Создание обьектов, В чем ошибка
CMOS
сообщение 7.07.2005 21:04
Сообщение #1


Пионер
**

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

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


Как создать массив обьектов?

Например:

var a: Array[1..36] of TImage;

Мне нужно чтобы каждый обьект появлялся в свое время и в нужном месте
Пробовал:

a[n].Create(...)

А что в скобках писать?
Если:

a[1]:=TButton.CreateParented(Form1.Handle)

Не получается.
Объект не появляется даже если задать все размеры, координаты, указать картинку.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
virt
сообщение 7.07.2005 22:03
Сообщение #2


Знаток
****

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

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


может,

a[1]:=TImage.CreateParented(Form1.Handle)
?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Romtek
сообщение 7.07.2005 22:06
Сообщение #3


Знаток
****

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

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


Complementary Metal-Oxyde Semiconductor, простите, CMOS,
во первых, принято использовать не массив, а TList - массив указателей.

const
count = 36;
var
List : TList;
Image: TImage;
i: integer;

begin
List := TList.Create(); // создать список

// создать список картинок
for i := 0 to Pred (count) do
begin
Image := TImage.Create;
List.Add (Image);
end;

//
{использовать этот список}
//

// освободить память для картинок
for i := 0 to Pred (count) do
begin
Image := List.Items[i];
Image.Free ();
end;

List.Free (); // освободить память списка
end.

Во-вторых, не делай всё сразу, а поэтапно.


--------------------
Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
CMOS
сообщение 8.07.2005 21:13
Сообщение #4


Пионер
**

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

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


В строчке

Image := TImage.Create;

Ошибка "Non enough actual parametrs", просит параметр типа TComponent.
Мне картинки нужно перебирать по индексу:

for n:= 1 to 36 do
i[n].Picture.BitMap.LoadFromResourceID (0, 13*Get2High(a[n])+GetLow(a[n])-1);

А в Вашем случае как? Так что-ли:

List.Items[i].Picture...

Сообщение отредактировано: CMOS - 9.07.2005 21:35
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 9.07.2005 0:28
Сообщение #5


Гость






Цитата(CMOS @ 8.07.05 21:13)
В строчке
Image := TImage.Create;
Ошибка "Non enough actual parametrs", просит параметр типа TComponent.

Ну, так дай ему этот параметр... Создание списка картинок происходит при создании формы?
Image := TImage.Create(Self);


Цитата(CMOS @ 8.07.05 21:13)
Мне картинки нужно перебирать по индексу:

For i := 0 to 35 do // На индексы обрати внимание ...
List.Items[i].Picture.BitMap.LoadFromResourceID...
 К началу страницы 
+ Ответить 
CMOS
сообщение 9.07.2005 12:00
Сообщение #6


Пионер
**

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

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


В строчке

List.Items[i].Picture.BitMap.LoadFromResourceID...

Ошибка "Record, object or class type required"
Ругается на List.Items[i]. Говорит, что точку после Items[i] не надо ставить.

var
List : TList;

Мне прогу сдавать в понедельник. Помогите, пожалуйста, кто чем может.
Алгоритм в принципе готов, осталось только это.

Сообщение отредактировано: CMOS - 9.07.2005 12:01
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 9.07.2005 12:11
Сообщение #7


Гость






Да, вот так делай:
For i := 0 to 35 do begin
image := List.Items[i];
...
image.Picture.BitMap.LoadFromResourceID...
end;


А вообще ты бы весь проект прикрепил, а то получается игра в "глухие телефоны"... Я же не знаю, КАК у тебя что описано, и ГДЕ что ты вызываешь...
 К началу страницы 
+ Ответить 
CMOS
сообщение 9.07.2005 21:34
Сообщение #8


Пионер
**

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

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


Кажется, начинает работать!
Картинка, правда, не появляется.
Ошибка на

image.Picture.BitMap.LoadFromResourceID(0,1);

Project Project1.exe raised exception class EAccessViolation with message 'Access violation at addres 00408382 in module'PROJECT1.EXE'. Read of address FFFFFFFF. Process stopped. Use Step or Rn to continue.

Файл ресурсов добавлен.
Кстати, такая ошибка часто возникает и изчезает сама собой, даже если я ничего не делаю. Что это за ошибка?

Сообщение отредактировано: CMOS - 9.07.2005 21:37
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Guest
сообщение 18.08.2005 12:06
Сообщение #9


Гость






Цитата(CMOS @ 9.07.05 21:34)
Кажется, начинает работать!
Картинка, правда, не появляется.
Ошибка на

image.Picture.BitMap.LoadFromResourceID(0,1);

Project Project1.exe raised exception class EAccessViolation with message 'Access violation at addres 00408382 in module'PROJECT1.EXE'. Read of address FFFFFFFF. Process stopped. Use Step or Rn to continue.

Файл ресурсов добавлен.
Кстати, такая ошибка часто возникает и изчезает сама собой, даже  если я ничего не делаю. Что это за ошибка?


Во первых LoadFromResourceID(hInstance, 1);
И перед запуском если менялись ресурсы Build вместо Complite!
 К началу страницы 
+ Ответить 
volvo
сообщение 18.08.2005 12:10
Сообщение #10


Гость






Цитата(Guest @ 18.08.05 12:06)
И перед запуском если менялись ресурсы Build вместо Complite!

Во-первых, не Complite, а Compile... (Прежде чем давать советы, надо хотя-бы научиться правильно писать...)
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 20.06.2025 11:56
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"