Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.09.28;
Скачать: CL | DM;

Вниз

overload для одного только метода   Найти похожие ветки 

 
Псалтырь ©   (2008-08-08 11:18) [0]

Смотрю в код DB.pas Делфай2007 и вижу:

procedure GetBookmarkData(Buffer: TRecordBuffer; Data: Pointer); overload; virtual;

Он один. И помечен как overload. В предках тоже отсутствует.

1. С каких пор это разрешено?
2. Какой тайный смысл?


 
@!!ex ©   (2008-08-08 11:22) [1]

> 1. С каких пор это разрешено?

ВСегда было?


> 2. Какой тайный смысл?

чтобы можно было безболезненно одноименные методы делать?


 
@!!ex ©   (2008-08-08 11:24) [2]

НА мой субъективный взгляд, ключевое слово overload - лишнее, и все методы должны по умолчанию считаться overload, как в С++ сделано...
вот override - нужен... жаль в С++ его нету.. А то смотриш на метод, и непонятно, толи он первый, толи он перекрывает существубщий.... Соттветственно нужно ли вызывать обработчик предка - не понятно...


 
Сергей М. ©   (2008-08-08 11:27) [3]


> 1. С каких пор это разрешено?


С давних.
По кр.мере начиная с Д7.


> 2. Какой тайный смысл?


Да просто появилась у авторов мысленка на всякий пожаный в будущем перегрузить этот метод в этом классе и  дать возможность перекрыть его в наследниках.

На перегрузку потом забили, а про перекрытие надо смотреть не в предках, а в наследниках)


 
{RASkov} ©   (2008-08-08 12:46) [4]

> [2] @!!ex ©   (08.08.08 11:24)
> НА мой субъективный взгляд, ключевое слово overload - лишнее

Зря лишнее.... довольно верное решение, как и объявление типов переменных...


 
@!!ex ©   (2008-08-08 12:51) [5]

> [4] {RASkov} ©   (08.08.08 12:46)

Ну4 вот есть предок, в нем для метода не объявлен overload.
А в наследнике нужно перекрыть. и как быть?
Менять предка? не лучшее решение...


 
Псалтырь ©   (2008-08-08 13:07) [6]


> Сергей М. ©   (08.08.08 11:27) [3]
>
>


> На перегрузку потом забили, а про перекрытие надо смотреть
> не в предках, а в наследниках)

Наследник - мой класс. И не приложу ума зачем бы мне там еще один одноименный метод.


 
Сергей М. ©   (2008-08-08 13:15) [7]


> зачем бы мне там еще один одноименный метод


Кроме твоих наследников в штатной библиотеке фигурирует туева хуча других наследников этого класса)..
Задумка разработчиков, если она не ляп, была ориентирована, пожалуй,  именно на них - мало ли какие параметры им еще взбредет в голову в будущем передавать в этот метод)


 
{RASkov} ©   (2008-08-08 13:15) [8]

> [5] @!!ex ©   (08.08.08 12:51)
> А в наследнике нужно перекрыть. и как быть?

Не совсем понял, но:
Если в предке он статичный, то в наследнике просто создать с тем же именем и все, но это будет некое "перекрытие"(override), а мы о "перегрузке"(overload)... А перегрузить наверное тоже можно.... Что-то не соображу никак.... нужно или пробывать или читать F1...


> [6] Псалтырь ©   (08.08.08 13:07)

Тебе может и не пригодится, а кому нибудь понадобится сменить набор параметров.... Оставив возможность вызова "старой" процедуры...


 
Псалтырь ©   (2008-08-08 13:22) [9]

Еще вопрос. Раньше был такой вот файлик $DELPHI$/Doc/BDE.int , а где его искать в Д2007?

Спасибо


 
@!!ex ©   (2008-08-08 13:23) [10]

> [8] {RASkov} ©   (08.08.08 13:15)

Я имел ввиду именно перегрузку. Опечатался. Сорри.


 
{RASkov} ©   (2008-08-08 13:31) [11]

> [10] @!!ex ©   (08.08.08 13:23)
> Я имел ввиду именно перегрузку.

> Ну4 вот есть предок, в нем для метода не объявлен overload.
> А в наследнике нужно перегрузить. и как быть?

Ну может так:
 TCl = class
 public
   procedure P(N: Integer);
 end;

 TMyCl = class(TCl)
   procedure P(S: String); overload;
 end;


 
{RASkov} ©   (2008-08-08 13:37) [12]

> [9] Псалтырь ©   (08.08.08 13:22)
> а где его искать в Д2007?

При активном раб. столе нажми F3...


 
@!!ex ©   (2008-08-08 13:38) [13]

> [11] {RASkov} ©   (08.08.08 13:31)
Спасибо!


 
Игорь Шевченко ©   (2008-08-08 13:38) [14]

в 2006 никаких overload нету (и прототип слегка другой:
   procedure GetBookmarkData(Buffer: PChar; Data: Pointer); virtual;
)


 
Anatoly Podgoretsky ©   (2008-08-08 13:49) [15]

> @!!ex  (08.08.2008 12:51:05)  [5]

Сдался вам этот overload, от него проблем больше, чем пользы, пошли на поводу у ламеров.


 
Юрий Зотов ©   (2008-08-08 13:57) [16]

> С каких пор это разрешено?

С D4. Перегрузка появилась там.


 
Псалтырь ©   (2008-08-08 14:38) [17]


> Юрий Зотов ©   (08.08.08 13:57) [16]

Да, но всегда требовалось как минимум две функции... Если я не ошибаюсь.


> Игорь Шевченко ©   (08.08.08 13:38) [14]

В 2009 вообще практически везде вмето Pchar параметров будет PByte.


> {RASkov} ©   (08.08.08 13:37) [12]


> При активном раб. столе нажми F3...

А что произойдет? Поиском я пробежался уже по диску. Может быть поменяли название, или еще чего.


 
Anatoly Podgoretsky ©   (2008-08-08 14:41) [18]


> В 2009 вообще практически везде вмето Pchar параметров будет
> PByte.

В абракадабере с тобой не согласны.


 
{RASkov} ©   (2008-08-08 14:43) [19]

> [17] Псалтырь ©   (08.08.08 14:38)
> Да, но всегда требовалось как минимум две функции... Если я не ошибаюсь.

Ошибаешься.

Может быть поменяли название, или еще чего.

Может быть.... тогда вопрос в [9] не корректен :)


 
Palladin ©   (2008-08-08 14:44) [20]


> Если я не ошибаюсь.

для d6, ты точно ошибаешься, что не ошибаешься. да и для d5 и d4 противопоказаний не вижу.


 
ketmar ©   (2008-08-08 15:00) [21]

>[0] Псалтырь © (2008-08-08 11:18:00)
>Делфай2007

с каких пор разрешено называть годор «делфай»? die.

---
Do what thou wilt shall be the whole of the Law.


 
Псалтырь ©   (2008-08-08 15:08) [22]


> Anatoly Podgoretsky ©   (08.08.08 14:41) [18]


> В абракадабере с тобой не согласны.

Я очень рад. Но передо мной сейчас 2009 Тибурон Confidential Field Test Version. И я знаю, о чем говорю. Когда я говорил везде, то имел ввиду методы TDataset. Такие как AllocRecordBuffer, ClearCalcFields, FreeRecordBuffer, GetRecord, InitRecord etc.

То есть там где в качестве буффера раньше использовался PChar, заменено на PByte.


> {RASkov} ©   (08.08.08 14:43) [19]


> Palladin ©   (08.08.08 14:44) [20]


> Ошибаешься.

Век живи - век учись.


> ketmar ©   (08.08.08 15:00) [21]

Укуси себя за хвост, жалкий человечишко. Делфай оно читается.


 
ketmar ©   (2008-08-08 15:32) [23]

Удалено модератором


 
Юрий Зотов ©   (2008-08-08 15:40) [24]

Слежу с большим интресом...


 
Псалтырь ©   (2008-08-08 15:43) [25]

Удалено модератором


 
ketmar ©   (2008-08-08 15:44) [26]

Удалено модератором


 
Псалтырь ©   (2008-08-08 15:45) [27]

Удалено модератором


 
ketmar ©   (2008-08-08 15:45) [28]

Удалено модератором


 
Псалтырь ©   (2008-08-08 15:47) [29]

Удалено модератором


 
ketmar ©   (2008-08-08 15:49) [30]

Удалено модератором


 
Johnmen ©   (2008-08-08 15:49) [31]

Удалено модератором


 
Псалтырь ©   (2008-08-08 15:53) [32]

Удалено модератором


 
Псалтырь ©   (2008-08-08 15:56) [33]

По вопросу с определениями BDE, которое раньше BDE.int называлось, кто-нибудь может подсказать?


 
Mystic ©   (2008-08-08 16:01) [34]

> 1. С каких пор это разрешено?
> 2. Какой тайный смысл?


С одной стороны, запас карман не тяготит. С другой, ... не, военную поговорку приводить не буду.



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

Текущий архив: 2008.09.28;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.022 c
3-1206532972
Xmen
2008-03-26 15:02
2008.09.28
Хранимая процедура. Перевод строки


15-1218121214
Yanis
2008-08-07 19:00
2008.09.28
Бывает же…


2-1219302166
Fynjy
2008-08-21 11:02
2008.09.28
использовать IBQuery в разных юнитах


8-1186323330
bagos
2007-08-05 18:15
2008.09.28
Online music editor


15-1217834074
McSimm
2008-08-04 11:14
2008.09.28
О рычагах