Конференция "Прочее" » overload для одного только метода
 
  • Псалтырь © (08.08.08 11:18) [0]
    Смотрю в код DB.pas Делфай2007 и вижу:

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



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

    1. С каких пор это разрешено?
    2. Какой тайный смысл?
  • @!!ex © (08.08.08 11:22) [1]
    > 1. С каких пор это разрешено?

    ВСегда было?


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

    чтобы можно было безболезненно одноименные методы делать?
  • @!!ex © (08.08.08 11:24) [2]
    НА мой субъективный взгляд, ключевое слово overload - лишнее, и все методы должны по умолчанию считаться overload, как в С++ сделано...
    вот override - нужен... жаль в С++ его нету.. А то смотриш на метод, и непонятно, толи он первый, толи он перекрывает существубщий.... Соттветственно нужно ли вызывать обработчик предка - не понятно...
  • Сергей М. © (08.08.08 11:27) [3]

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


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


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


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

    На перегрузку потом забили, а про перекрытие надо смотреть не в предках, а в наследниках)
  • {RASkov} © (08.08.08 12:46) [4]
    > [2] @!!ex ©   (08.08.08 11:24)
    > НА мой субъективный взгляд, ключевое слово overload - лишнее

    Зря лишнее.... довольно верное решение, как и объявление типов переменных...
  • @!!ex © (08.08.08 12:51) [5]
    > [4] {RASkov} ©   (08.08.08 12:46)

    Ну4 вот есть предок, в нем для метода не объявлен overload.
    А в наследнике нужно перекрыть. и как быть?
    Менять предка? не лучшее решение...
  • Псалтырь © (08.08.08 13:07) [6]

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


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

    Наследник - мой класс. И не приложу ума зачем бы мне там еще один одноименный метод.
  • Сергей М. © (08.08.08 13:15) [7]

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


    Кроме твоих наследников в штатной библиотеке фигурирует туева хуча других наследников этого класса)..
    Задумка разработчиков, если она не ляп, была ориентирована, пожалуй,  именно на них - мало ли какие параметры им еще взбредет в голову в будущем передавать в этот метод)
  • {RASkov} © (08.08.08 13:15) [8]
    > [5] @!!ex ©   (08.08.08 12:51)
    > А в наследнике нужно перекрыть. и как быть?

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


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

    Тебе может и не пригодится, а кому нибудь понадобится сменить набор параметров.... Оставив возможность вызова "старой" процедуры...
  • Псалтырь © (08.08.08 13:22) [9]
    Еще вопрос. Раньше был такой вот файлик $DELPHI$/Doc/BDE.int , а где его искать в Д2007?

    Спасибо
  • @!!ex © (08.08.08 13:23) [10]
    > [8] {RASkov} ©   (08.08.08 13:15)

    Я имел ввиду именно перегрузку. Опечатался. Сорри.
  • {RASkov} © (08.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} © (08.08.08 13:37) [12]
    > [9] Псалтырь ©   (08.08.08 13:22)
    > а где его искать в Д2007?

    При активном раб. столе нажми F3...
  • @!!ex © (08.08.08 13:38) [13]
    > [11] {RASkov} ©   (08.08.08 13:31)
    Спасибо!
  • Игорь Шевченко © (08.08.08 13:38) [14]
    в 2006 никаких overload нету (и прототип слегка другой:
       procedure GetBookmarkData(Buffer: PChar; Data: Pointer); virtual;


    )
  • Anatoly Podgoretsky © (08.08.08 13:49) [15]
    > @!!ex  (08.08.2008 12:51:05)  [5]

    Сдался вам этот overload, от него проблем больше, чем пользы, пошли на поводу у ламеров.
  • Юрий Зотов © (08.08.08 13:57) [16]
    > С каких пор это разрешено?

    С D4. Перегрузка появилась там.
  • Псалтырь © (08.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 © (08.08.08 14:41) [18]

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

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

    Ошибаешься.

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

    Может быть.... тогда вопрос в [9] не корректен :)
  • Palladin © (08.08.08 14:44) [20]

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

    для d6, ты точно ошибаешься, что не ошибаешься. да и для d5 и d4 противопоказаний не вижу.
  • ketmar © (08.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.
  • Псалтырь © (08.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 © (08.08.08 15:32) [23]
    Удалено модератором
  • Юрий Зотов © (08.08.08 15:40) [24]
    Слежу с большим интресом...
  • Псалтырь © (08.08.08 15:43) [25]
    Удалено модератором
  • ketmar © (08.08.08 15:44) [26]
    Удалено модератором
  • Псалтырь © (08.08.08 15:45) [27]
    Удалено модератором
  • ketmar © (08.08.08 15:45) [28]
    Удалено модератором
  • Псалтырь © (08.08.08 15:47) [29]
    Удалено модератором
  • ketmar © (08.08.08 15:49) [30]
    Удалено модератором
  • Johnmen © (08.08.08 15:49) [31]
    Удалено модератором
  • Псалтырь © (08.08.08 15:53) [32]
    Удалено модератором
  • Псалтырь © (08.08.08 15:56) [33]
    По вопросу с определениями BDE, которое раньше BDE.int называлось, кто-нибудь может подсказать?
  • Mystic © (08.08.08 16:01) [34]
    > 1. С каких пор это разрешено?
    > 2. Какой тайный смысл?


    С одной стороны, запас карман не тяготит. С другой, ... не, военную поговорку приводить не буду.
 
Конференция "Прочее" » overload для одного только метода
Есть новые Нет новых   [134439   +53][b:0][p:0.001]