Форум: "Прочее";
Текущий архив: 2009.04.19;
Скачать: [xml.tar.bz2];
ВнизПолучение имени метода Найти похожие ветки
← →
Maaacheba (2009-02-16 19:52) [0]Как внутри метода получить имя метода?
Пример:
function TMyClass.Blabla: bool;
begin
...
showmessage(X);
end;
Вот X должен быть равен: "TMyClass.Blabla" в данном примере.
Причем, определяться динамически, чтобы независимо от того, переименуют потом TMyClass или само название метода Blabla или нет.
Ну "TMyClass" можно получить сделав Self.ClassName, а вот имя метода?
P.S. Чтобы в лог писать название метода и код был одинаковый, независимо от метода.
← →
Сергей М. © (2009-02-16 19:55) [1]Считай что никак.
Частные случаи, коих по пальцам пересчитать, не расматриваем - при такой постановке они что мертвому припарка.
p.s.
Начал за здравие, а заканчиваешь за упокой, агрессивный ты наш ?)
← →
Eraser © (2009-02-16 19:55) [2]> [0] Maaacheba (16.02.09 19:52)
нужно использовать спец. средства для получения стека вызова + map-файл.
← →
@!!ex © (2009-02-16 20:22) [3]FreePascal умеет это делать.
Есть спец средства для Delphi.
← →
Maaacheba (2009-02-16 22:02) [4]Сергей М. © (16.02.09 19:55) [1]
Начал за здравие, а заканчиваешь за упокой, агрессивный ты наш ?)
нет, просто жду, когда ветку по обыкновению перенесут в "Начинающие". Предыдущий вопрос по БД перенесли, хотя никто так и не написал решения, а знакомый многим известный мастер дельфи (тут такое звание) сказал, что не знает как решить задачу в один запрос.
← →
Джо © (2009-02-16 22:09) [5]
> Maaacheba (16.02.09 22:02) [4]
> нет, просто жду, когда ветку по обыкновению перенесут в
> "Начинающие"
Перенесут — сразу же закрою.
Ибо ответы не читаем.
← →
Cobalt © (2009-02-16 22:40) [6]2 Maaacheba
По тому вопросу с БД - отчего бы не сделать View, где Activity<>0
← →
oxffff © (2009-02-17 11:30) [7]
> Maaacheba (16.02.09 19:52)
Зайди на
http://santonov.blogspot.com
For russian fellow Maaacheba or getting method name dynamically
Это черновой вариант. Но работающий.
← →
Maaacheba (2009-02-17 12:04) [8]
> Ибо ответы не читаем.
процитируй, пожалуйста, ответ на мой вопрос? Я честное слово не замечаю его в данной ветке.
> По тому вопросу с БД - отчего бы не сделать View, где Activity<>0
скулайт не поддерживает view. Ну да и это уже не важно, проблему я решил по-другому.
← →
Maaacheba (2009-02-17 12:35) [9]
> Зайди на
> http://santonov.blogspot.com
идея понятна. Правда, я на D7 работаю...
Наверное, все таки этот код можно отнести к хакерскому, думаю, не оценят такое в проекте. Сделаю тупо:function TMyClass.BlaBla... ;
const
cSelfName = ".BlaBla";
begin
...
AddToLog(Self.ClassName + cSelfName);
end;
Даже если метод потом переименуют, а константу переименовать забудут, то фиг с ним, по логам думаю поймут какая функция имелась в виду "старая".
← →
Maaacheba (2009-02-17 12:36) [10]кстати, на твоем блоге форматирование не работает (по крайней мере у меня на IE 6), читать так, конечно, не ахти удобно )
← →
oxffff © (2009-02-17 12:47) [11]
> идея понятна. Правда, я на D7 работаю
Фундаментальной разницы нет.
> думаю, не оценят такое в проекте.
А судьи кто?
← →
Maaacheba (2009-02-17 13:16) [12]
> Фундаментальной разницы нет.
ну ты там просто хелперы использовал, я про это.
> А судьи кто?
вышестоящее начальство, да и я сам.
Понимаешь, я просто не могу быть уверен, что данный код сработает на всех D, в том числе будущих. А если изменят смещения, поменяют формат там VMT, еще что придумают? Я даже не уверен, совместимо ли это все с начиная D5 и заканчивая D2009. А ведь будет D2010 или что там...
Тот же ClassName я знаю, даже если поменяется концепция, соответствующим образом и поменяют реализацию ClassName. А данный код нативно будет перетащен, и если вдруг начнутся глюки... А начатся они могут очень неприятные.. Хотя по идее даже если указатель будет определен неправильно, то MethodName просто вернет пустую строку... Но тем не менее. Я свое мнение высказал.
Я сожалею, если написание данного примера отняло у тебя время впустую.
← →
oxffff © (2009-02-17 14:25) [13]
> Понимаешь, я просто не могу быть уверен, что данный код
> сработает на всех D, в том числе будущих. А если изменят
> смещения, поменяют формат там VMT, еще что придумают? Я
> даже не уверен, совместимо ли это все с начиная D5 и заканчивая
> D2009. А ведь будет D2010 или что там...
Я все понимаю, однако остаюсь при мнении, что если ты прекрасно разбираешься во внутреннем устройстве, то проблем не будет.
Тебе никто не мешает использовать например
1. Директивы условной компиляции.
2. Возврат nil, если неизвестный метод вызова не поддерживается.
3. Более глубокий обратный анализ на несколько инструкций выше.
4. Другой способ решения.
Что касаемо VMT, то менять схему вызова не будут, ибо прощай полиморфизм для legacy кода.
> Я даже не уверен, совместимо ли это все с начиная D5 и заканчивая
> D2009. А ведь будет D2010 или что там...
> Я сожалею, если написание данного примера отняло у тебя
> время впустую.
Работа нейронной сети мозга полезна всем.
← →
Johnmen © (2009-02-17 14:43) [14]
> Maaacheba (16.02.09 22:02) [4]
> Предыдущий вопрос
> по БД перенесли, хотя никто так и не написал решения, а
> знакомый многим известный мастер дельфи (тут такое звание)
> сказал, что не знает как решить задачу в один запрос.
Ну я, например, решение знаю, в один запрос. Но своим агрессивным недовольством ты отбиваешь охоту тебе отвечать. А во-вторых, та проблема с дырками абсолютно надуманна. Тобой. И существует только у тебя вследствии неграмотного проектирования. На что тебе неоднократно намекали. Но ты слушать не хочешь, видимо...
← →
Maacaheba (2009-02-17 16:39) [15]
> А во-вторых, та проблема с дырками абсолютно надуманна.
> Тобой
ладно, поскольку эту ветку мне уже не жалко, тут все понятно, давай пофлудим, уважаемый Johnmen.
Скажи мне, пожалуйста, Johnmen, в каком году у тебя открылся дар телепатии? Откуда тебе вообще знать, зачем мне нужна эта дырка? Ты понятия не имеешь об этом - это факт.
Но на DM не принято уточнять, это здесь низко. Это означает, что отвечающий чего-то может не знать, это нельзя допускать ни в коем случае. Поэтому ты никогда не спросишь тихо мирно "а зачем нужно искать дырку"? Ты сразу заявишь, что поиск дырки - это дебилизм, видимо, рассмотрев все возможные в этой галактики варианты зачем нужен поиск такой дырки.
Так вот я тебе скажу - дырка нужна для присвоения визуального номера клиента. И чем этот номер проще - тем лучше для клиента, тем меньше цифр ему нужно запоминать, тем более компактное получится устройство отображения номера клиента или при одинаковых размерах устройства можно вывести более крупный шрифт, что облегчит задачу выявления своего номера на отображающем устройстве для людей с плохим зрением.
Я пишу свой пост и трачу личное время исключительно из-за оставшегося уважения к тебе, всяким виннипухам я бы не стал отвечать, мне все равно.
Я не агрессивен, я проявляю агрессию иногда в ответ на агрессию. Ты давно не задавал вопросов, более того мы оба знаем, что если ты решишь задать вопрос по программированию - этот сайт будет, наверное, последним местом, куда ты пойдешь. и ты это знаешь. Мне МОДЕРАТОРЫ и Мастера Дельфи с этого сайта рекомендуют задавать вопросы в другом месте, о чем разговор? Тут принято толпой втирать вопрошающему, что он лох, что он ничего не понимает, что он - говно.
Один раз я запостил вопрос в два форума - здесь и на iXBT. Вопросы дубликаты. И там, и здесь мой ник никому ничего не говорил, условия - одинаковые.
На iXBT я получил пару ответов, все по теме, один ответ полностью разрешал проблему.
Здесь я получил ДЕСЯТЬ ответов, девять были про то, что автор - лох, вопросы задавать не умее и ваше недочеловек таких-надо-расстреливать. И один ответ с верным решением.
Тут соседом моя ветка про привязку к железу. и что? Почти все отвечающие проявили полное незнание в вопросе. Вот реально, это факт - почти никто из отвечающих нихрена не понимает в привязке железа. Точнее, понимает точно также как и я, чисто из логических обобщений, но опыта нет ни у кого. Ни у кого нету опыта написания, а потом эксплуатации программы с привязкой к железу.
Но каждый не применул понтонуться своим гениальными идеями, пальцы веером "я все знаю" при том, что по делу слов НОЛЬ. Два красавца в той теме - Юрий Зотов, который, видимо, тоже особо опытом не обладает или не захотел им делиться, но он и не понтанулся насколько он грамотен в этой области, высказал свое мнение и не стал продолжать флуд. И еще Алекс Коншин, конечно, он написал один маленький абзац, но в этом абзаце пользы для меня больше, чем от всех остальных сотни постов. И видно - человек ИМЕЕТ опыт написания таких программ, да это и понятно если у него на сайте спец. модуль для этого. Ну это - видно, это вот - спец, а это - флудер.
Есть горстка людей, которые никогда не пробовали или пробовали давно задавать здесь вопросы. Они привычно отвечают, привычно стебутся и могут в общем не замечать сложившейся атмосферы (хотя это трудно не заметить). Я так понимаю, что началось все со стеба над студентами, которые реально нагло хотели чтобы другие делали за них работы, готовое приложение. Но потом это перешло на все, на абсолютно все. Любой вопрос воспринимается как попытка схалявить, ведь есть гугол! Может быть, но нафига тогда форум вообще нужен? Тут за последние пару лет я уверен не был задан ни один вопрос, который не обсуждался бы где-нибудь в другом месте в интернете (особенно, на англоязычных форумах).
Есть избранные люди, которые адекватно независимо от пола, рейтинга здесь и других параметров отвечают и помогают. Но таких просто единицы и они !ЗАМЕТЬТЕ! точно также сваливают с форума из-за ужасной атмосферы. Икона здесь - Юрий Зотов. Но и он уже сколько раз говорил, что ему тупо противно читать здешние посты.
Лично я не хватаю звезд с небес, но я знаю, что я достаточно толковый программер по сравнению со среднестатическим большинством. Но и мне в каждой второй ветке выносят вердикт "имбецил, ничего не понимающий в программировании". Тут практически нереально задать вопрос и получить адекватный ответ. Только в одном случае - если человек реально НИ-ЧЕ-ГО не понимает в программировании и абсолютно все ответы съедает как истину. Но не дай бог сказать что-то против отвечающих или подвергнуть критике их ответы. Дальше мгновенно разворачивается бой, причем принято бросаться всей толпой, даже если люди из этой толпы враждуют друг с другом. Единственный вариант - это по уровню быть выше на голову всех отвечающих, только в таком случае есть шанс заткнуть всех и выйти победителем. Но нахрена это кому надо и нафига при таких знаниях вообще задавать вопросы - непонятно. Поэтому их и нету.
Фуф. Надоело писать, высказался.
← →
Eraser © (2009-02-17 16:45) [16]> [15] Maacaheba (17.02.09 16:39)
чудо, я тебе 2 раза подсказал (и не только я) единственное более/менее общее решение. чукча не читатель? чего обижаться тогда.
← →
Maaacheba (2009-02-17 16:50) [17]
> чудо, я тебе 2 раза подсказал (и не только я) единственное
> более/менее общее решение
ты про привязку к железу?
1) у тебя нет НИ ОДНОГО поста в той ветке, обращенные ко мне
2) ты не сказал НИ ЕДИНОГО слова про привязку к железу.
Но ты считаешь, что все мне объяснил, а я тупой не понял. Вот откуда это берется именно на этом форуме - я не понимаю...
← →
Petr V. Abramov © (2009-02-17 16:52) [18]
> Maacaheba (17.02.09 16:39) [15]
> Поэтому ты никогда не спросишь тихо мирно "а зачем нужно
> искать дырку"?
в той ветке вопрос "зачем" был задан в посте [9]
задан был потому, что поиск дырок в 99% возникает в результате ошибок проектирования. Попадешь ты в оставшийся 1% - неясно, может, да (скорее всего, экзотическая задача), а может, и нет, из [15] этой ветки все равно неясно, зачем их искать, я б еще понял, если б надо было найти минимальный из удаленных.
← →
Eraser © (2009-02-17 16:52) [19]> [17] Maaacheba (17.02.09 16:50)
я про эту ветку и про её дубликат несколько дней назад.
← →
Maaacheba (2009-02-17 17:02) [20]
> в той ветке вопрос "зачем" был задан в посте [9]
да, MsGuns на удивление нормально спросил, но следующим постом он дал понять, что имеет в виду хранимку, а этого в скулайте нету. Поэтому я и не стал объяснять, чтобы избежать мгновенных ответов "ты дурак и система спроектирована по дурацому".
> задан был потому, что поиск дырок в 99% возникает в результате
> ошибок проектирования. Попадешь ты в оставшийся 1% - неясно
вот именно, что неясно. Нет бы сначала уточнить, если ты думаешь что ищутся дырки в PK. Нет, надо сразу заявить, что проблема дырок - это туфта из под ногтей.
Заметь, Джохмен уже даже после полной ТОЙ ветки и здесь заявляет:
>А во-вторых, та проблема с дырками абсолютно надуманна. Тобой
Посмотри его пост [14] в ЭТОЙ ветке. И ему все равно, главное в мозгу сформировать мнение, что вопрошающий - лох. Здесь такое отношение культивируется, это нормально разговаривать с автором вопроса как с лохом, это берется по-умолчанию.
Логика, видимо, проста - "90% что автор ошибся с поиском дырки, 10% что у него экзотическая задача. Ну поскольку автор лох, то он полюбому в этих 90%". И все, телепаты отдыхают.
← →
Petr V. Abramov © (2009-02-17 17:07) [21]
> Maaacheba (17.02.09 17:02) [20]
> Поэтому я и не стал объяснять, чтобы избежать мгновенных
> ответов
таки именно поэтому не избежал
> Нет бы сначала уточнить, если ты думаешь что ищутся дырки
> в PK.
так пытался же уточнить.
не в PK искать дырки тоже неясно зачем
← →
Maaacheba (2009-02-17 17:15) [22]
> не в PK искать дырки тоже неясно зачем
кстати, еще одно свойство - мне постоянно говорят, что я не читаю посты. Хотя по постам очевидно, что это наоборот, сам человек не читает посты.
Например, Петр, зачем нужно искать дырки объяснено даже в этой ветке.
← →
Petr V. Abramov © (2009-02-17 17:18) [23]
> Maaacheba (17.02.09 17:15) [22]
> дырка нужна для присвоения визуального номера клиента
других способов присвоить визуальный номер нету, я понял
← →
Johnmen © (2009-02-17 17:23) [24]
> Maacaheba (17.02.09 16:39) [15]
Мне видится несколько аспектов...
Во-первых, судя по твоему высказыванию, ты испытываешь некое (не буду говорить, что противоестественное :)) удовольствие, когда "девять были про то, что автор - лох, вопросы задавать не умее и ваше недочеловек таких-надо-расстреливать". Иначе зачем было дублировать сюда кроме ИксБэТэ, раз там ответы тебя удовлетворяют? Или это ты проводишь такой конкурс форумов сайтов? :)
Во-вторых, только я знаю, что задать вопрос по программированию - этот сайт будет наверняка первым местом, куда я пойду. Другое дело, что это будет самый крайний случай, когда ни личный опыт, ни консультации с коллегами, ни гугль не помогли. Как ты точно подметил, последние, как минимум, два года такого не было.
В-третьих, дар телепатии и ощущение чего стОит спрашивающий (или отвечающий) вырабатывается с годами. Это факт. Отсюда и отношение...
В-четвертых, на форумах дельфимастера реально получить ответ на реальный вопрос, сколь бы сложным он ни был. Для этого надо, чтобы вопрос был ВОПРОСОМ, а не чем-то другим. И спрашивающий всё же должен быть адекватным...
Ну и в-пятых, по теме дырок. Мой опыт говорит, что проблема "дырок" это проблема кривого проектирования. И единственное применение бывает, когда грамотный программист пытается распрямить накосяченное криворукими. Причем эта работа одноразовая. Судя по твоему беглому описанию ты вообще замешивашь в кучу хранение, обработку и отображение. А за это, в приличном обществе, отрывают руки и делают лоботомию :)
Поэтому, если тебе всё ещё интересна данная тема, приводи ПОДРОБНОЕ и КОНКРЕТНОЕ изложение твоей проблемы, в которой, как тебе кажется, не обойтись без выявления "дырок". Я докажу тебе, что ты неправ изначально.
← →
Сергей М. © (2009-02-17 17:27) [25]
> я достаточно толковый программер
Что ж тогда ты, толковый, тему и вопрос свои формулируешь как бестолковый ?
> Получение имени метода
> Как внутри метода получить имя метода
Ты даже не поинтересовался, какие идентификаторы и при каких условиях дельфийский компилятор-линкер включает в объектный и результирующий код !
Так ведь нет ! Ты же уверен что оно там безусловно есть, и дело за малым - узнать как его достать..
← →
Плохиш © (2009-02-17 17:36) [26]аФФтар - молодец! Раскрутил мастеров на "слабо" :-))
← →
Сергей М. © (2009-02-17 17:38) [27]
> Maaacheba
И к вопросу о "дырках" ты подошел точно так же - мол, не учите меня жить, я и без вас знаю все про правильное "житие мое", лучше помогите дырку найти)
← →
Petr V. Abramov © (2009-02-17 17:38) [28]
> Сергей М. © (17.02.09 17:27) [25]
> оно там безусловно есть,
причем
> на всех D, в том числе будущих
:)
← →
Maaacheba (2009-02-17 17:45) [29]
> Поэтому, если тебе всё ещё интересна данная тема, приводи
> ПОДРОБНОЕ и КОНКРЕТНОЕ изложение твоей проблемы, в которой,
> как тебе кажется, не обойтись без выявления "дырок". Я
> докажу тебе, что ты неправ изначально.
давай.
Есть номер клиента, обычное число. Есть граница времени (обычно это ночью), после которой нужно "обнулить" номера клиентов и начать присваивать с наименьшего неиспользуего номера.
Расскажи, пожалуйста, в чем я неправ изначально, если хочу найти наименьший неиспользуемый среди клиентов номер на текущий момент.
← →
Petr V. Abramov © (2009-02-17 17:51) [30]
> Maaacheba (17.02.09 17:45) [29]
> хочу найти наименьший неиспользуемый среди клиентов номер
> на текущий момент.
вот, это уже более-менее понятная, хоть и немного экзотичная задача. И, заметь, в ее формулировке ни слова про дырки :)
← →
Riply © (2009-02-17 17:51) [31]> [15] Maacaheba (17.02.09 16:39)
> ладно, поскольку эту ветку мне уже не жалко, тут все понятно, давай пофлудим, уважаемый Johnmen.
Меня пофлудить не пригасили, а так хочется, посему воспользуюсь случаем.
Maacaheba, выводы "о твоем уровене" напрашиваются сами собой исходя из твоих вопросов и постов,
на которые тебе уже неоднократно указывали и даже объясняли почему.
А из обиды, что ветку переместили в "начинающие", так же напрашивается вывод и о возрасте.
Но это ответы на твои вопросы и упреки, а не та тема, на которую я хотела пофлудить :)
А тема вот какая: почему человек, только что пришедший на форум, считает, что он имеет
право сходу навешивать ярлыки на других, обучать как надо задавать вопросы и как надо отвечать на них,
и какой устав пристало использовать в данном монастыре ?
И когда, после таких нравоучений, он не получает то что хотел, начинает кричать о том
что здесь никто не в состоянии решить его задачу и о том как нравственно-низко пали участники данного форума ?
Кроме того, что это просто некрасиво, это еще и нелогично.
Ты ведь даже не попытался попробовать найти другую причину происходящего.
← →
Maaacheba (2009-02-17 18:00) [32]
> И, заметь, в ее формулировке ни слова про дырки :)
заметь, я сформулировал таким образом, что ответ на мою формулировку был бы ответов и на мою задачу.
> А тема вот какая: почему человек, только что пришедший на
> форум, считает, что он имеет
тема в другом - тут каждый мнит себя телепатом
> Ты ведь даже не попытался попробовать найти другую причину
> происходящего.
ну про телепатов уже сказал.
А по сабжу - пытался. И МОДЕРАТОР с этого форума мне сказал - перестань заниматься мазохизмом, задавай вопрос в других местах, здесь уже все давно заметили эту особенность форума.
← →
Maaacheba (2009-02-17 18:01) [33]с нетерпением жду ответа Johnmen, чтобы он мне доказал, что я был неправ изначально.
← →
pasha_golub © (2009-02-17 18:22) [34]А почему не Morcheeba? Прикольный коллектив. Особенно альбом The Antidote.
А для задачи своей попробуй использовать EurekaLog (http://www.eurekalog.com/). Там очень много можно достать, включая стек вызовов да и кучу разной другой инфы. Моя довольна Еврекой.
← →
pasha_golub © (2009-02-17 18:26) [35]А атмосфера форума (пусть может в чем-то автор и прав, может даже во многом) стимулирует делать правильную и четкую постановку вопроса, чтобы комар носа не подточил. Это мне нравится. Это приучает к порядку в голове, прежде всего своей.
← →
Petr V. Abramov © (2009-02-17 18:34) [36]
> Maaacheba (17.02.09 18:01) [33]
могу поработать за Johnmen
Ошибка у тебя в том, что изначально номера идут от вольного, а не подряд. Если ее исправить, то "дырки" будут возникать только в результате логического удаления, и мин. номер выбирается какselect min(num) from tbl where del_flag = 1
безо всяких извращений.
← →
Maaacheba (2009-02-17 18:46) [37]
> А атмосфера форума (пусть может в чем-то автор и прав, может
> даже во многом) стимулирует
посещать другие форумы.
> Ошибка у тебя в том, что изначально номера идут от вольного,
> а не подряд
вот опять мы начали играть в телепатов. Номера идут как раз подряд, точнее выделяются в результате операций с дырками подряд.
Но дело в том, что запись может быть не только ПОМЕЧЕНА как удаленная, а быть и реально удалена, что я и обозначил в своем вопросе.
← →
b z (2009-02-17 19:21) [38]
> Есть номер клиента, обычное число. Есть граница времени
> (обычно это ночью), после которой нужно "обнулить" номера
> клиентов и начать присваивать с наименьшего неиспользуего
> номера.
А почему так категорично - "нужно "обнулить"", может это и не нужно, или тот кто так захотел, не понимает и ему просто, что называется, "на пальцах" пояснить что это не так и нужно, а скорее наоборот?
У нас, в тек. проекте, клиенты тоже захотели иметь такие вот простые идентификаторы, чтоб проще ихх вводить при поиске и т.д. Только мы никакими дырками не занимались, а уяснив задачу (конкретику) сделали проще. А именно, завели 4-хсимвольное поле и крутим там номера по кругу, т.к. знаем, что след. круг пойдет по заведомо "дырявым" :) номерам. 4 символа набрать пользователям набрать несложно, и нам меньше проблем. Все довольны.
PS: Безусловно я незнаю вашей конкретики, просто похожая ситуация...
← →
b z (2009-02-17 19:24) [39]
> просто похожая ситуация
на мой взгляд ... ну чтоб не придирались и не обвиняли в телепатии :)
← →
Maaacheba (2009-02-17 19:36) [40]
> т.к. знаем, что след. круг пойдет по заведомо "дырявым"
> :)
а мы этого не знаем, потому что клиент с номером 30 может существовать гораздо дольше, чем клиент с номером 9587, это невозможно предугадать. Соответственно, когда пойдет новый круг далеко не факт, что все номера будут свободны.
Страницы: 1 2 3 4 5 вся ветка
Форум: "Прочее";
Текущий архив: 2009.04.19;
Скачать: [xml.tar.bz2];
Память: 0.59 MB
Время: 0.047 c