Форум: "Основная";
Текущий архив: 2002.10.24;
Скачать: [xml.tar.bz2];
ВнизАнонимное создание объектов: Найти похожие ветки
← →
greenrul (2002-10-13 19:35) [0]у меня есть переменная типа TMyObject. Также я знаю, что создал около 10 объектов этого типа. Как мне переменной MyObject1 присвоить n-ный объект типа MyObject?
TUnit=class(TImageSprite)
public
constructor Create(AParent: TSprite); override;
destructor Destroy; override; protected
end;
MainForm.OnCreate:create_unit("Player2"5,75);;create_unit("Player1",12,100);
procedure create_unit(namee:string;Region,healthh:integer);
begin
Unitz[total_units+1]:=TUnit.Create(DXSpriteEngine1.Engine);
with Unitz[total_units+1] do
....
end;
Потом пытаюсь обратиться кUnitz[1].что_угодно
и получаю ошбику....
в чем дело?
← →
Anatoly Podgoretsky (2002-10-13 19:39) [1]Какую? И где обработка ошибок, например защищенный блок или анализ на создание, допустимость?
← →
Malder (2002-10-13 19:44) [2]что такое Unitz ?
← →
Anatoly Podgoretsky (2002-10-13 19:47) [3]Интереснее что это такое
MainForm.OnCreate:create_unit("Player2"5,75);;create_unit("Player1",12,100);
Это же даже не откомпилируется, а уж что это делает мне трудно представить.
← →
Юрий Зотов (2002-10-13 19:47) [4]И что такое Unitz? Из приведенного кода похоже, что это какой-то массив, но как он объявлен?
И где (и как) меняется total_units?
← →
Malder (2002-10-13 19:48) [5]Anatoly Podgoretsky, create_unit("Player2"5,75);;create_unit("Player1",12,100); - вероятно, это обработчик события MainForm.OnCreate
← →
Юрий Зотов (2002-10-13 19:59) [6]Обработчик-то, это да, но, похоже, второй вызов затирает ссылку.
← →
Malder (2002-10-13 20:02) [7]Юрий Зотов, ну да. Если между
create_unit("Player2"5,75);
и
create_unit("Player1",12,100);
ничего нету, то ссылка на объект теряется, что потом аукнется...
хотя чего гадать на кофейной гуще, дождемся автора
← →
MrBeer (2002-10-13 20:03) [8]
> Юрий Зотов © (13.10.02 19:59)
> Обработчик-то, это да, но, похоже, второй вызов затирает
> ссылку.
iz primera takogo kachestva vivodi delat"kak gadat" na kofeinoi gusche ;)
← →
Anatoly Podgoretsky (2002-10-13 20:05) [9]Понял, это в таком виде приведен текст обработчика OnCreate
тогда если еще что нибудь не описано, то происходит порча ссылки, но это не причина для получения сообшения о "неизвестной нам" ошибки
Во всяком случае я вижу код на удачу, то ли создастся объект то ли нет, авось повезет.
Вопрос в чате об проверки на ошибки был проигнорировал
← →
greenrul (2002-10-14 09:07) [10]create_unit - своя процедура, в которой написано:
Unitz[total_units+1]:=TUnit.Create(DXSpriteEngine1.Engine);
with Unitz[total_units+1] do
....
Unitz[1..10] array[1..10] of TUnit
компилировать даже не пытайтесь, это только кусок кода, да к тому-же нужно DelphiX.
← →
greenrul (2002-10-14 09:37) [11]Окей, приду домой попробую
try
Create..
except
....
← →
greenrul (2002-10-14 19:54) [12]unitz:array[1..10] of TUnit;
объекты-то создаются, и без ошибок.
← →
greenrul (2002-10-14 20:18) [13]
MainForm.OnCreate:create_unit("Player2"5,75);;create_unit("Player1",12,100);
я имею в виду, что строкуcreate_unit("Player2"5,75);;create_unit("Player1",12,100);
пишу внутри процедуры MainForm.OnCreate
← →
greenrul (2002-10-15 16:39) [14]Ну я сообщил всю информацию....
В чем ошибка-то?
← →
han_malign (2002-10-15 16:55) [15]где и как делается инициализация и инкремент total_units
← →
Anatoly Podgoretsky (2002-10-15 16:56) [16]А ошибки до сих пор нет
← →
Zemal (2002-10-15 17:06) [17]Ошибка в зелёном руле! :) Ты хотя бы позаботился, чтобы всё выглядело не тяп-ляп... вывалил тут какую-то абракадабру и не сообщил тип ошибки и где она возникает :).
В форуме есть гадалки???!!! Погадайте парнише!!! Ау! Гадалки!!! Ау!
Если серьёзно, то скажу: то что понятно тебе и самособой разумеющееся, то это не значит, что понятно окружающим. Для понятия информации она должна быть хотябы последовательной и структурированной, и по возможности, с пояснением что за объекты и с чем их едят (раз не выложил секцию "type", то хоть словами пояснил бы). Обобщим: потому ответ на вопрос и неполучен, потому что задан неправильно (неправильные у тебя вопросы и код тоже :) ).
← →
Zemal (2002-10-15 17:15) [18]Могу предложить использовать не массив, а класс TObjectList... в нём кой-какие методы есть для управления объектами... немного полегче будет... может быть... а вообще с таким стилем изложения и написанием (тяп-ляп), видимо легче небудет... как такое может вообще компилиться?!
← →
Zemal (2002-10-15 17:20) [19]Одина тема чего стоит!!! "Анонимное создание объектов"! А что ты под этим понимаешь? Как можно создавать объекты "Анонимно"? Это что-то вроде "Изподтишка"? Я правильно понял? Или это означает, что ссылка на объект хранится в массиве? Это называется "Анонимно"? Незнал-незнал... Это значит у меня в проектах полно "Ананима"! Получается так...
← →
Zemal (2002-10-15 17:28) [20]Вообще ты не чувствуешь себя виноватым, за то что оторвал столько времени у людей, которые пытались тебе помочь и несмогли этого сделать не потому, что незнают, а потому, что ты предоставил совсем не те участки кода, которые могут относиться к ошибке (всё наоборот, представил участки кода, которые совсем и необязательно было выкладывать). Странный ты какой-то... :(
← →
Anatoly Podgoretsky (2002-10-15 17:54) [21]Zemal © (15.10.02 17:20)
Анонимна означает, что объект не имеет имени и не обязательно ссылка на него должна где либо храниться, наглядный пример
with TMtObj.Create do
try
something;
finally
Free;
end;
полностью анонимный объект.
← →
Zemal (2002-10-15 18:27) [22]>>Anatoly Podgoretsky
Первый раз сталкиваюсь с такой терминологией... значит всё-таки может быть правильнее назвать объект анонимным, а не его создание, т.к. создание его совсем не анонимное - это его конструктор(Create) и он совсем не анонимный... а про создание объекта без ссылки на него я знаю, можно было и без примера :).
Придём к компромису и назовём по вашей терминологии: "Создание анонимных объектов", а никак не "Анонимное создание объектов"... а то напрашивается вопрос: "Кто этот АНОНИМ, который создаёт объекты?". Помоему надо называть вещи своими именами, тогда будет всё на положенных местах.
P.S. Теперь буду пользоваться этой терминологией, тем более что она нелишена смысла, действительно объекты могут быть анонимными. Спасибо, что подкинули словечко :).
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.10.24;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.009 c