ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

несоответствие типов
  #1  
Старый 07.11.2005, 00:45
Аватар для eagle_ua
eagle_ua
Новичок
Регистрация: 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]
 
Ответить с цитированием

  #2  
Старый 07.11.2005, 01:28
Аватар для ZaCo
ZaCo
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме:
4610226

Репутация: 1332


По умолчанию

сам не пробовал. но по-моему у setlength второй параметр число типа byte(ибо <=255!!!, что не очень удобно)
 
Ответить с цитированием

  #3  
Старый 07.11.2005, 08:52
Аватар для RevenAnt
RevenAnt
Познающий
Регистрация: 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;
у мя работает .. только патом надо их как создал - так и уничтожить ... а то ругацца будет =))
 
Ответить с цитированием

  #4  
Старый 07.11.2005, 13:47
Аватар для eagle_ua
eagle_ua
Новичок
Регистрация: 06.11.2005
Сообщений: 5
Провел на форуме:
2275

Репутация: 0
По умолчанию

Та вроде бы всё просто только вот a[i] должно быть TImage а при таких раскладах матерится setlemght мол несоответствие типов
 
Ответить с цитированием

  #5  
Старый 07.11.2005, 15:42
Аватар для RevenAnt
RevenAnt
Познающий
Регистрация: 08.04.2005
Сообщений: 69
Провел на форуме:
207537

Репутация: 59
По умолчанию

Цитата:
var a:array of TImage;
i:integer;
(то что было до того шо я писал выше)
всё работает ... глюк ведать в другом месте ... опиши в чём проблема по полней (сорц,еррор)....
потомучто массив 1. создаёться 2. динамический 3. и имена ставяться ............
 
Ответить с цитированием

  #6  
Старый 08.11.2005, 23:17
Аватар для ZaCo
ZaCo
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме:
4610226

Репутация: 1332


По умолчанию

2RevenAnt
Цитата:
в хэлпе -
Цитата:
procedure SetLength(var S; NewLength: Integer);
я имел ввиду что NewLength<=255 просто. возможно там задавалась в каком то месте длинна массива больше чем 256
 
Ответить с цитированием

  #7  
Старый 09.11.2005, 00:16
Аватар для RevenAnt
RevenAnt
Познающий
Регистрация: 08.04.2005
Сообщений: 69
Провел на форуме:
207537

Репутация: 59
По умолчанию

NewLength: Integer
Цитата:
Integer –2147483648..2147483647 signed 32-bit
пробовал созадть и пятсот и тыщу ТИмэйдж ... работает .... только не получилось обратиться как к "my_image1", но куда проще и удобней (имхо) обратиться как "a[1]" =)
 
Ответить с цитированием

  #8  
Старый 14.11.2005, 02:15
Аватар для eagle_ua
eagle_ua
Новичок
Регистрация: 06.11.2005
Сообщений: 5
Провел на форуме:
2275

Репутация: 0
По умолчанию

всё равно матерится на setlength
пишет
Цитата:
Incompatible types
ведь a:timage а 100:integer;
чё можно сделать?
 
Ответить с цитированием

  #9  
Старый 16.11.2005, 02:46
Аватар для FRAGNATIC
FRAGNATIC
Новичок
Регистрация: 11.08.2005
Сообщений: 16
Провел на форуме:
19188

Репутация: 21
Отправить сообщение для FRAGNATIC с помощью ICQ
По умолчанию

Цитата:
ведь 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 тк элементы нумеруются с нуля при таком раскладе )
 
Ответить с цитированием

  #10  
Старый 16.11.2005, 10:22
Аватар для RevenAnt
RevenAnt
Познающий
Регистрация: 08.04.2005
Сообщений: 69
Провел на форуме:
207537

Репутация: 59
По умолчанию

кстате
проверь строчку у себя ДО setlength =))
ведь дэльфи как и паскаль после ошибки ставит курсор на следующую строчку (символ) ЗА ошибкой пример тому точка с запятой, пропускаеш а оно на следующую пишет ... ну и в том духе .... авось .......
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ