Просмотр полной версии : несоответствие типов
eagle_ua
07.11.2005, 00:45
хочу создавать динамический масив объектов типа 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]
сам не пробовал. но по-моему у setlength второй параметр число типа byte(ибо <=255!!!, что не очень удобно)
RevenAnt
07.11.2005, 08:52
по-моему у 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;
у мя работает .. только патом надо их как создал - так и уничтожить ... а то ругацца будет =))
eagle_ua
07.11.2005, 13:47
Та вроде бы всё просто только вот a[i] должно быть TImage а при таких раскладах матерится setlemght мол несоответствие типов
RevenAnt
07.11.2005, 15:42
var a:array of TImage;
i:integer;
(то что было до того шо я писал выше)
всё работает ... глюк ведать в другом месте ... опиши в чём проблема по полней (сорц,еррор)....
потомучто массив 1. создаёться 2. динамический 3. и имена ставяться ............
2RevenAnt
в хэлпе -
Цитата:
procedure SetLength(var S; NewLength: Integer);
я имел ввиду что NewLength<=255 просто. возможно там задавалась в каком то месте длинна массива больше чем 256
RevenAnt
09.11.2005, 00:16
NewLength: Integer
Integer –2147483648..2147483647 signed 32-bit
пробовал созадть и пятсот и тыщу ТИмэйдж ... работает .... только не получилось обратиться как к "my_image1", но куда проще и удобней (имхо) обратиться как "a[1]" =)
eagle_ua
14.11.2005, 02:15
всё равно матерится на setlength
пишетIncompatible types
ведь a:timage а 100:integer;
чё можно сделать?
FRAGNATIC
16.11.2005, 02:46
ведь 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 тк элементы нумеруются с нуля при таком раскладе )
RevenAnt
16.11.2005, 10:22
кстате ;)
проверь строчку у себя ДО setlength =))
ведь дэльфи как и паскаль после ошибки ставит курсор на следующую строчку (символ) ЗА ошибкой :) пример тому точка с запятой, пропускаеш а оно на следующую пишет ... ну и в том духе .... авось .......
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot