Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

07.11.2005, 00:45
|
|
Новичок
Регистрация: 06.11.2005
Сообщений: 5
Провел на форуме: 2275
Репутация:
0
|
|
несоответствие типов
хочу создавать динамический масив объектов типа TImage и при этом
что-бы каждому созданому объекту присваивалось своё имя (image0,image1,...),
но ткт то и возникает проблема : матерится setlenght, пишет что несоответствие
типов. Как это можно обойти?
[CODE]
var i:integer;
image:array of TImage;
number:integer;
:
procedure ......
:
:
:
setlength(image,number);
for i:=0 to number-1 do
begin
[\CODE]
|
|
|

07.11.2005, 01:28
|
|
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме: 4610226
Репутация:
1332
|
|
сам не пробовал. но по-моему у setlength второй параметр число типа byte(ибо <=255!!!, что не очень удобно)
|
|
|

07.11.2005, 08:52
|
|
Познающий
Регистрация: 08.04.2005
Сообщений: 69
Провел на форуме: 207537
Репутация:
59
|
|
по-моему у setlength второй параметр число типа byte
в хэлпе -
procedure SetLength(var S; NewLength: Integer);
так шо там чики пуки .... а так не вижу в чём проблема ... вроде всё просто ....
SetLength(a,100);
for i:=1 to 100 do
begin
a[i]:=TImage.Create(Form1);
with a[i] do
begin
Parent:=Form1;
Name:='my_image'+inttostr(i);
Left:=i+20;
Top:=i+50;
Width:=100;
Height:=20;
Canvas.Pixels[0,0]:=clblack;
end;
end;
у мя работает .. только патом надо их как создал - так и уничтожить ... а то ругацца будет =))
|
|
|

07.11.2005, 13:47
|
|
Новичок
Регистрация: 06.11.2005
Сообщений: 5
Провел на форуме: 2275
Репутация:
0
|
|
Та вроде бы всё просто только вот a[i] должно быть TImage а при таких раскладах матерится setlemght мол несоответствие типов
|
|
|

07.11.2005, 15:42
|
|
Познающий
Регистрация: 08.04.2005
Сообщений: 69
Провел на форуме: 207537
Репутация:
59
|
|
var a:array of TImage;
i:integer;
(то что было до того шо я писал выше)
всё работает ... глюк ведать в другом месте ... опиши в чём проблема по полней (сорц,еррор)....
потомучто массив 1. создаёться 2. динамический 3. и имена ставяться ............
|
|
|

08.11.2005, 23:17
|
|
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме: 4610226
Репутация:
1332
|
|
2RevenAnt
в хэлпе -
Цитата:
procedure SetLength(var S; NewLength: Integer);
я имел ввиду что NewLength<=255 просто. возможно там задавалась в каком то месте длинна массива больше чем 256
|
|
|

09.11.2005, 00:16
|
|
Познающий
Регистрация: 08.04.2005
Сообщений: 69
Провел на форуме: 207537
Репутация:
59
|
|
NewLength: Integer
Integer –2147483648..2147483647 signed 32-bit
пробовал созадть и пятсот и тыщу ТИмэйдж ... работает .... только не получилось обратиться как к "my_image1", но куда проще и удобней (имхо) обратиться как "a[1]" =)
|
|
|

14.11.2005, 02:15
|
|
Новичок
Регистрация: 06.11.2005
Сообщений: 5
Провел на форуме: 2275
Репутация:
0
|
|
всё равно матерится на setlength
пишет
ведь a:timage а 100:integer;
чё можно сделать?
|
|
|

16.11.2005, 02:46
|
|
Новичок
Регистрация: 11.08.2005
Сообщений: 16
Провел на форуме: 19188
Репутация:
21
|
|
ведь a:timage а 100:integer;
чё можно сделать?
да ты код свой покажи
SetLength ваще по барабану какого типа элментов у тебя масив этой фе надо тока переадать масив и новую длинну!
SetLength(a,100); - правильно а то что ты написал типа "а ведь a:timage а 100:integer;" - лол =)
SetLength(a,100);
for i:=1 to 100 do
begin
a[i]:=TImage.Create(Form1);
тут тока надо начинать не с 1 а с 0 тк элементы нумеруются с нуля при таком раскладе )
|
|
|

16.11.2005, 10:22
|
|
Познающий
Регистрация: 08.04.2005
Сообщений: 69
Провел на форуме: 207537
Репутация:
59
|
|
кстате 
проверь строчку у себя ДО setlength =))
ведь дэльфи как и паскаль после ошибки ставит курсор на следующую строчку (символ) ЗА ошибкой  пример тому точка с запятой, пропускаеш а оно на следующую пишет ... ну и в том духе .... авось .......
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|