Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Зачем ссылка и объект разных типов? 
:(
    Опции темы
Rohoss
Дата 22.2.2009, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начальник интернета
***


Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

Репутация: 4
Всего: 18



Это из модуля Classes

Какой смысл ссылку делать типа TStream, а объект типа TFileStream?
Код

procedure TCustomMemoryStream.SaveToFile(const FileName: string);
var
  Stream: TStream;
begin
  Stream := TFileStream.Create(FileName, fmCreate);
  try
    SaveToStream(Stream);
  finally
    Stream.Free;
  end;
end;




--------------------
Файловый менеджер Explorer.Net скачать  video
PM ICQ   Вверх
THandle
Дата 22.2.2009, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 65
Всего: 372



В начале статьи про такое есть:
http://forum.vingrad.ru/articles/topic-211911.html

В данном случае, ИМХО, все равно как объявить.
PM   Вверх
Rohoss
Дата 22.2.2009, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начальник интернета
***


Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

Репутация: 4
Всего: 18



Цитата(THandle @  22.2.2009,  10:56 Найти цитируемый пост)
В начале статьи про такое есть:http://forum.vingrad.ru/articles/topic-211911.html


THandle, там статья о файловых потоках, а я спрашивал о смысле использовать ссылку другого типа. Мы так же можем создать и TStringList
Код

procedure TForm1.FormCreate(Sender: TObject);
var
  List: TStrings;
begin
  List := TStringList.Create;
  List.Add('Text');
  ShowMessage(List.Text);
end;

С точки зрения работы кода я тоже думаю будет одинаково (не считая, что некоторые атрибуты класса, которые есть в TStringList и нет в TStrings будут не доступны). Ну наверное есть ещё какая-то причина, по которой так поступают…


Это сообщение отредактировал(а) Rohoss - 22.2.2009, 11:15


--------------------
Файловый менеджер Explorer.Net скачать  video
PM ICQ   Вверх
Christoph
Дата 22.2.2009, 13:38 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 1
Всего: 11



Если переменная Stream описана как ссылка на экземмпляр на экземпляр класса TStream, то и эта же переменная может указывать на класс TFileStream, TMemoryStream....и всего то
Ну например
Код

procedure TForm1.Button1Click(Sender: TObject);

Тут сендер может быть Button, edit,label...не знаешь что может лежать в Sender,потому и написали Sender:TObject, так как он может указывать на классы стоящие по иерархии ниже


Цитата(Rohoss @  22.2.2009,  11:14 Найти цитируемый пост)
С точки зрения работы кода я тоже думаю будет одинаково (не считая, что некоторые атрибуты класса, которые есть в TStringList и нет в TStrings будут не доступны). Ну наверное есть ещё какая-то причина, по которой так поступают…

В твоем примере создается Экземпляр класса TStringList и заносится ссылка на него в переменную класса TString, затем ты вызываешь метод из переменной TString.Add , а реально вызываемый описан в TStringList.Add . Это помоему называется полиморфизм  smile 


--------------------
user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0548 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.