Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.11.17;
Скачать: [xml.tar.bz2];

Вниз

Как обявить объект одновременно с созданием   Найти похожие ветки 

 
Islander   (2003-11-07 17:58) [0]

Здравствуйте! Объекты я обычно объявляю так:

var
List: Tstrings;
begin
List:=Tstrings.create;

Слышал, что есть способ элегантнее, так, чтобы прямо в секции var объект создать. Может, подскажите?


 
Palladin   (2003-11-07 18:08) [1]

Чем слышал?


 
Islander   (2003-11-07 18:13) [2]

Это не имеет значение, но способ точно есть!


 
Плохиш_   (2003-11-07 18:14) [3]

Ну так ещё раз послушай, да нам раскажешь


 
Palladin   (2003-11-07 18:17) [4]

По ночам за Делфи не сиди.
Приснится же....


 
default   (2003-11-07 18:24) [5]

Islander (07.11.03 17:58)
на ночь ужасы не смотри


 
me   (2003-11-07 18:28) [6]

Он видимо емеет в виду конструкцию типа
with Tstrings.create
begin
...


 
Islander   (2003-11-07 18:38) [7]

Нет, не ее имею ввиду. Кто-то на форуме писал с месяц назад, реально создает объект в var"e


 
Yakudza   (2003-11-07 18:40) [8]

Это из области как обнулить переменную.


 
Palladin   (2003-11-07 18:41) [9]

Ну так найди и покажи. Если бы это было возможно, то наблюдалось бы сплошь и рядом.


 
default   (2003-11-07 18:46) [10]

может автор сабжа имеет ввиду что-то типа
var
Appl: TApplication absolute Application;
...
Appl.Title := "А по ночам надо всё-таки спать"
но конечно здесь и речи не может быть о создании объекта Appl...


 
me   (2003-11-07 20:07) [11]

Еще раз рискну предположить, что может дело в использовании старой объектной модели ТР, что-то вроде
type
objectTypeName = object (ancestorObjectType)
//memberList
end;
Тогда можно сразу объявить
var
xxx : objectTypeName;
и вперед


 
Palladin   (2003-11-07 20:13) [12]


> me (07.11.03 20:07) [11]

а что вперед?
без New(xxx,Init) ничего не получится


 
Islander   (2003-11-07 20:20) [13]

нет, не так, именно в варе чего-то дописывали...


 
Ломброзо   (2003-11-07 20:24) [14]

Я так понял, что чалаэк хочет стековый объект, навроде как в ++.
Palladin © (07.11.03 20:13) [12]
Получится. Я это решение использовал. Что-то навроде стековых классов в ++. Выгоды это не дает, потому что реально возникают проблемы 1) с областью видимости объекта 2) с обнулением полей после использования объекта. ВОт например:

//unitObj.pas

unit unitObj;

interface

type
TObj = object
public
iVar: integer;
procedure Print;
end;

implementation

{ TObj }

procedure TObj.Print;
begin
Writeln(iVar);
end;

end.

// Project1.dpr
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
unitObj in "unitObj.pas";

procedure proc1;
var pObj: TObj;
begin
pObj.iVar := 100;
pObj.Print;
end;

procedure proc2;
var pObj1: TObj;
begin
pObj1.Print;
end;

begin
proc1; // печатает 100
proc2; // печатает 100
readln;
end.

Так что с точки зрения уменьшения строк кода выгоды никакой.


 
Chlavik   (2003-11-07 20:25) [15]

Поправочка
List:=TstringList.create; // :)


 
Ломброзо   (2003-11-07 20:26) [16]

т.е. реально адрес объекта один и тот же.


 
Palladin   (2003-11-07 20:26) [17]

точно... в ТП это ж был record... старею, забываю...


> Islander (07.11.03 20:20) [13]

слушай, может ты имеешь в виду инициализацию переменных
var
i:integer=0;

вообще уже надоело гадать...


 
me   (2003-11-07 20:29) [18]

> Palladin (07.11.03 20:13) [12]
"Since object types do not descend from TObject, they provide no built-in constructors, destructors, or other methods. You can create instances of an object type using the New procedure and destroy them with the Dispose procedure, or you can simply declare variables of an object type, just as you would with records."


 
default   (2003-11-07 20:31) [19]

me (07.11.03 20:29) [18]
это просто как пример был...


 
Palladin   (2003-11-07 20:33) [20]


> me (07.11.03 20:29) [18]

признаю ошибку...
то что привел я, нужно было для инициализации переменной-указателя на соответствующий Object...



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.11.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.009 c
4-56956
avch
2003-09-19 09:50
2003.11.17
Оконное приложение на API


1-56600
MORA
2003-11-06 08:07
2003.11.17
Win32


1-56705
Maxon
2003-11-07 12:28
2003.11.17
Как управлять Windows Media Player


14-56818
Nelud
2003-10-23 12:35
2003.11.17
Нужна здоровая критика!


1-56765
Mistic
2003-11-06 13:37
2003.11.17
копирование файлов с Progress Bar





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский