Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
8-78534
REaliSt
2002-06-23 04:44
2002.10.24
помогите с MS Agent!!


3-78303
JohnBurg
2002-10-02 22:18
2002.10.24
Почему не освобождается база


3-78296
tolea
2002-10-03 12:39
2002.10.24
Проблемс с Memo и Blob


4-78741
Stainer
2002-09-10 14:13
2002.10.24
Чтение по адресам памяти


4-78710
kkot
2002-09-11 12:09
2002.10.24
Встраивание своего пункта меню (или кнопки) в чужую программу





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский