Форум: "Прочее";
Текущий архив: 2007.08.19;
Скачать: [xml.tar.bz2];
ВнизКомпилятор Дельфи Найти похожие ветки
← →
Германн © (2007-07-18 02:12) [0]Всегда знал, что компилятор в Дельфи умный. Но вот сегодня ещё раз поразился его уму. Всегда привык присваивать в первой строчке тела функции значение неявной переменной Result. И очень удивился обилию "хинтов" - Value assigned to "..." never used.
А подумав понял, что в этих случаях "дую на воду" :)
← →
Riply © (2007-07-18 02:54) [1]> [0] Германн © (18.07.07 02:12)
Инициализировать Result надо всгда :)
А Hint, который ты увидел, означает только то, что дальше в коде
Reult`у в любом случае, будет присвоено значение :)
← →
Германн © (2007-07-18 03:07) [2]
> Riply © (18.07.07 02:54) [1]
>
> > [0] Германн © (18.07.07 02:12)
> Инициализировать Result надо всгда :)
> А Hint, который ты увидел, означает только то, что дальше
> в коде
> Reult`у в любом случае, будет присвоено значение :)
>
Эээ. Очепятки я принимаю только от Гэндальфа! :)
Что сей Хинт означает я и сам понял :)
← →
_Mike_ (2007-07-18 03:14) [3]
> Всегда знал, что компилятор в Дельфи умный.
Тупой он. Особенно оптимизатор. Да еще если локальные процедуры да и указатели в них. Причем данный глюк имеет место быть во всех версих от 5 до 2006.
← →
Riply © (2007-07-18 03:16) [4]Sorry за очепятки. (всегда тороплюсь :)
Хотя от римлян( если не ошибаюсь ) до нас дошел совет: "Поспешай медленно" :)
← →
Германн © (2007-07-18 03:42) [5]> _Mike_ (18.07.07 03:14) [3]
>
>
> > Всегда знал, что компилятор в Дельфи умный.
>
> Тупой он. Особенно оптимизатор. Да еще если локальные процедуры
> да и указатели в них. Причем данный глюк имеет место быть
> во всех версих от 5 до 2006.
>
Без обоснований - игнор!
← →
Германн © (2007-07-18 03:46) [6]
> Riply © (18.07.07 03:16) [4]
>
> Sorry за очепятки. (всегда тороплюсь :)
> Хотя от римлян( если не ошибаюсь ) до нас дошел совет: "Поспешай
> медленно" :)
>
Согласен, но не принял. :)
Одна только мысль о "совмещении метода ненаучного тыка с очепятками" меня бросает в дрожь!
:)
← →
TUser © (2007-07-18 08:24) [7]function a: string;
begin
result := "a";
result := "b";
end;
Никакого хинта, d7. Раньше тоже таких хинтов не видел, хотя я и не инициализирую result просто так, а только, когда это нужно.
← →
Asail (2007-07-18 08:54) [8]
> TUser © (18.07.07 08:24) [7]
Это потому, что :string. Поставь Integer, и получишь хинт. Странно...
← →
sniknik © (2007-07-18 09:12) [9]> Странно...
стринг это класс (маджик, но все таки) а просто обращаясь одному проперти класса у тебя может куча действий выполняться по onGet.../onSet...
← →
Суслик © (2007-07-18 09:12) [10]2[7]
В данном случае это баг компилятора - был обязан выдать hint.
Повторяется в Д2007.
← →
TUser © (2007-07-18 09:46) [11]Еще про Result. Очень плохо, что не выдает варнингга на код типа
function a (b: c): d;
var i: e;
begin
i := result + b; // Variable Result might not been initialized.
result := i + 20;
end;
Потому что в этом случае результат вообще будет разный, даже если функцию вызывать с одинаковыми параметрами. Вот это действительно подстава.
← →
Игорь Шевченко © (2007-07-18 09:54) [12]
> Всегда привык присваивать в первой строчке тела функции
> значение неявной переменной Result. И очень удивился обилию
> "хинтов" - Value assigned to "..." never used.
Слушайся компилятора - он мудр :)
А от обилия хинтов крайне желательно избавляться.
← →
db2admin © (2007-07-18 10:00) [13]Игорь Шевченко © (18.07.07 09:54) [12]
в чем причина данного конкретного хинта?
← →
Игорь Шевченко © (2007-07-18 10:19) [14]db2admin © (18.07.07 10:00) [13]
В лишнем присваивании ? Я угадал ?
← →
db2admin © (2007-07-18 10:23) [15]Игорь Шевченко © (18.07.07 10:19) [14]
Привык инициализировать все переменные и результаты функции, я в чем то не прав?
← →
Dib@zol © (2007-07-18 10:26) [16]{$Warnings off}
{$Hints off}
- И компилятор срочно поумнел :)
← →
TUser © (2007-07-18 10:27) [17]> Привык инициализировать все переменные и результаты функции
Ты перед тем, как сказатьi := 5
, ее инициализируешь методомi := 0
?
← →
Игорь Шевченко © (2007-07-18 10:28) [18]db2admin © (18.07.07 10:23) [15]
> Привык инициализировать все переменные и результаты функции,
> я в чем то не прав?
Если ты пишешь для себя, то ты прав во всем и проблема лишней инициализации - это только развитие мускулатуры твоих пальцев.
Если с твоим кодом будет работать кто-то еще, то существует 2 хороших правила
- чем меньше лишнего кода, тем проще работать.
- при компилиции не должно быть ни хинтов ни предупреждений.
← →
Ega23 © (2007-07-18 10:32) [19]
> - И компилятор срочно поумнел :)
Изыди!!!
← →
_Mike_ (2007-07-18 10:55) [20]
> Без обоснований - игнор!
Я не буду сюда вываливать более сотни строк кога из коммерческого продукта. Где-то здесь же или на RSDN это уже проходили. Я там челу кидал код где оно глючит - поспрашай.
← →
Игорь Шевченко © (2007-07-18 11:04) [21]
> Я не буду сюда вываливать более сотни строк кога из коммерческого
> продукта
А зачем вываливать сотни строк - дай ссылку на report в qc.borland.com и всем станет понятно.
← →
Плохиш © (2007-07-18 11:39) [22]
> _Mike_ (18.07.07 03:14) [3]
>
> > Всегда знал, что компилятор в Дельфи умный.
>
> Тупой он.
Да уж поумней всяких горе-кодеров будет.
← →
_Mike_ (2007-07-18 12:00) [23]
> report в qc.borland.com
> Да уж поумней всяких горе-кодеров будет.
Да я в курсе что на DelphiMaster только гении обитают. А мы так - погулять вышли.
← →
_Mike_ (2007-07-18 12:05) [24]
> дай ссылку на report в qc.borland.com и всем станет понятно.
А можно ссылки на Ваши репорты? Как часто Вы отсылаете отчеты в МС? Или у вас настолько прибыльный бизнес (хорошая зарплата) что готовы тратить время на это? Прежде чем туда писать по любому придется тратить время искать где и почему - ну а раз нашел и поправил - так нафига мне еще время тратить? Оно (мое время) денег стоит. И если уж я заплатил за Delphi больше на нее я деньги (читай время) тратить не хочу.
← →
oxffff © (2007-07-18 12:07) [25]
> Я не буду сюда вываливать более сотни строк кога из коммерческого
> продукта. Где-то здесь же или на RSDN это уже проходили.
> Я там челу кидал код где оно глючит - поспрашай.
Твой коммерческий проект из более сотни строк кода?
← →
_Mike_ (2007-07-18 12:08) [26]
> Твой коммерческий проект из более сотни строк кода?
Мой коммерческий проект из очень большого числа строк. Но это не повод вываливать во всеобщее обозрение хотя бы даже и одну.
← →
Думкин © (2007-07-18 12:09) [27]> _Mike_ (18.07.07 12:05) [24]
Это не серьезно. При таких раскладах могут сказать, что тупой не компиллятор, а кто-то другой и по такому же описалову будут также правы.
← →
_Mike_ (2007-07-18 12:10) [28]
> Думкин © (18.07.07 12:09) [27]
Давай мыло - кину тот кусок.
P.S. Почему вы всегда стремитесь уличить человека во лжи????
← →
db2admin © (2007-07-18 12:10) [29]Удалено модератором
Примечание: Флудить завязываем
← →
Думкин © (2007-07-18 12:13) [30]> _Mike_ (18.07.07 12:10) [28]
Я не стремлюсь. Но ты высказал мнение, довольно агрессивное и при этом не приводишь никаких доказателльств. У людей появляется законное право не поверить и они им пользуются. Что не так? И где еще я вас уличал во лжи? В том, что не все в России как где-то? Так в чем я не прав? Единичное разрушает всеобщее. Вот и все.
Мыло у меня в анкете. И у других тоже.
← →
Asail (2007-07-18 12:14) [31]
> sniknik © (18.07.07 09:12) [9]
> > Странно...
> стринг это класс (маджик, но все таки) а просто обращаясь
> одному проперти класса у тебя может куча действий выполняться
> по onGet.../onSet...
А где здесь обращение к пропертям?
Result := "a";
Кстати, такой код выдает хинт:
function x: TForm;
begin
Result := Form1;
Result := Form2;
end;
← →
Игорь Шевченко © (2007-07-18 12:20) [32]_Mike_ (18.07.07 12:05) [24]
> А можно ссылки на Ваши репорты?
Да, конечно можно. Поиск по Igor Schevchenko
Кому лень искать, даю номера:
42690,42677,41781,15143,9776
← →
oxffff © (2007-07-18 12:21) [33]
> _Mike_ (18.07.07 12:08) [26]
>
> > Твой коммерческий проект из более сотни строк кода?
>
> Мой коммерческий проект из очень большого числа строк. Но
> это не повод вываливать во всеобщее обозрение хотя бы даже
> и одну.
Странно тогда.
Почему ты пишешь на Delphi, да еще и втихую?.
← →
Игорь Шевченко © (2007-07-18 12:22) [34]_Mike_ (18.07.07 12:05) [24]
> Оно (мое время) денег стоит.
В том числе и за общение на форумах ? Я тоже такой бизнес хочу...
← →
_Mike_ (2007-07-18 12:24) [35]
> Я не стремлюсь.
Я не Вас конкретно имел ввиду. Я когда обращаюсь конктретно к человеку пишу либо "ты" либы "Вы" - как и положено в русском языке. Если я пишу "вы" с маленькой буквы - это множественное число.
p.S. отправил
← →
_Mike_ (2007-07-18 12:25) [36]
> Почему ты пишешь на Delphi, да еще и втихую?.
Что значит в тихую? Почему? Не только на Delphi.
> В том числе и за общение на форумах ? Я тоже такой бизнес
> хочу...
Так кто Вам мешает?
← →
Eraser © (2007-07-18 12:27) [37]
> _Mike_ (18.07.07 12:24) [35]
> "ты" либы "Вы" - как и положено в русском языке
сам придумал? ) обращение на "Вы" пренебрежительно.
← →
_Mike_ (2007-07-18 12:29) [38]
> обращение на "Вы" пренебрежительно
Да? Раньше было наоборот - уважительное обращение к незнакомому человеку. Я что-то пропустил?
← →
Игорь Шевченко © (2007-07-18 12:30) [39]_Mike_ (18.07.07 12:25) [36]
> Так кто Вам мешает?
Возраст наверное.
← →
_Mike_ (2007-07-18 12:35) [40]
> Возраст наверное.
Хм. Я не скажу что вы на много старше меня. Так что, все-таки, наверное, желание :)
← →
_Mike_ (2007-07-18 12:36) [41]
> _Mike_ (18.07.07 12:35) [40]
Хотел выделить слова "на много".
← →
Игорь Шевченко © (2007-07-18 12:48) [42]_Mike_ (18.07.07 12:35) [40]
Твоего возраста я не знаю, анкеты нет, да и оффтопик это. Я к тому, что мне при моем бизнесе, зарплате и прочих атрибутах за трындение на форумах никак не платят. За репорты в QC, впрочем, тоже, но тем не менее, я полагаю, что отправив репорт в QC я хоть чем-то помогу не только себе.
← →
_Mike_ (2007-07-18 12:52) [43]
> Твоего возраста я не знаю, анкеты нет
Эт не ко мне вопрос - а к администрации форума куда делась моя анкета (MikePetrichenko раньше был). А повторно мне регистрироваться ну очень лень.
> помогу не только себе.
Возможно когда у меня будет желание после правки таких глюков что-то туда написать кроме не лестных отзывов - я это сделаю. А писать гадости - ну не собираюсь я - потому как продукт-то (Delphi) ну очень хороший. :)
← →
Игорь Шевченко © (2007-07-18 12:58) [44]
>
> Эт не ко мне вопрос - а к администрации форума куда делась
> моя анкета (MikePetrichenko раньше был). А повторно мне
> регистрироваться ну очень лень
Вот сюда наверное делась:
http://www.delphimaster.ru/cgi-bin/anketa.pl?id=1160185310
← →
_Mike_ (2007-07-18 13:00) [45]
> Игорь Шевченко © (18.07.07 12:58) [44]
Так не дает мне писать под тем ником - говорит не найдено.
← →
oxffff © (2007-07-18 13:03) [46]
> _Mike_ (18.07.07 12:25) [36]
>
> > Почему ты пишешь на Delphi, да еще и втихую?.
>
> Что значит в тихую? Почему? Не только на Delphi.
Можно получить код, который выявляет недостатки компилятора Delphi?
Да и не нужно все "более ста строк", достаточно только ключевые.
А в тихую потому, что громкое утверждение "Тупой он. Особенно оптимизатор. Да еще если локальные процедуры да и указатели в них."
А от delphi еще не отказался. Сам же указал с 5 по 2006
← →
_Mike_ (2007-07-18 13:04) [47]
> Можно получить код, который выявляет недостатки компилятора
> Delphi?
Я уже отправил одному форумчанину. Хватит - не благотворительная организация.
> А от delphi еще не отказался. Сам же указал с 5 по 2006
За что платят на том и пишу. Будут платить за BrainFuck буду писать на нем.
← →
_Mike_ (2007-07-18 13:06) [48]Да. В дагонку. Я ни где не говорил что Delphi плоха. Однако баги есть и оптимизатор туп.
← →
Думкин © (2007-07-18 13:06) [49]> _Mike_ (18.07.07 13:04) [47]
Письма пока нет. А объем какой?
← →
Kerk © (2007-07-18 13:06) [50]_Mike_, если ты такой весь из себя занятой и важный, чего на форуме-то делаешь?
← →
_Mike_ (2007-07-18 13:08) [51]
> Письма пока нет. А объем какой?
Маленький - там ссылка и пароль на архив с полной версией. мне в ломы было видирать код.
> Mike_, если ты такой весь из себя занятой и важный, чего
> на форуме-то делаешь?
Отпуск у меня. Это Ваш последний аргумент?
← →
Думкин © (2007-07-18 13:10) [52]> _Mike_ (18.07.07 13:08) [51]
А.....а архив насколько тяжел? И в Турбо это скомпилится? А то может, я не лучший представитель для такого?
← →
Kerk © (2007-07-18 13:10) [53][51] _Mike_ (18.07.07 13:08)
> Отпуск у меня.
Значит время нашлось на форум, да, занятой ты наш? Читать противно, снизошел блин до нас мессия.
← →
_Mike_ (2007-07-18 13:11) [54]
> .....а архив насколько тяжел? И в Турбо это скомпилится?
> А то может, я не лучший представитель для такого?
Тож не большой. Скомпилится.
← →
_Mike_ (2007-07-18 13:12) [55]
> Значит время нашлось на форум, да, занятой ты наш? Читать
> противно, снизошел блин до нас мессия.
Я Вас где-то оскорблял? Да и не Вам считать мое время (как и деньги тоже).
← →
oxffff © (2007-07-18 13:14) [56]to _Mike
Бывает конечно у компилятора delphi
mov eax,ebx;
mov ebx,eax
или аналогично
mov [ebp-$04],eax;
mov eax,[ebp-$04];
Давай твои изыскания. А так это только голословные утверждения с твоей стороны.
← →
_Mike_ (2007-07-18 13:16) [57]
> Давай твои изыскания. А так это только голословные утверждения
> с твоей стороны.
Еще раз. Я уже отправил человеку код. Больше никому отправлять не буду - я не благотворительная организация.
← →
Kerk © (2007-07-18 13:17) [58][55] _Mike_ (18.07.07 13:12)
> Я Вас где-то оскорблял?
Ты несешь бред, ничем его не обосновывая. Вместо обоснований идут ссылки на нехватку времени и занятость.
> Да и не Вам считать мое время (как и деньги тоже).
Я уже понял. У тебя очень много денег и очень мало времени. Ты это в каждой ветке объясняешь всем.
← →
oxffff © (2007-07-18 13:21) [59]
> _Mike_ (18.07.07 13:16) [57]
>
> > Давай твои изыскания. А так это только голословные утверждения
>
> > с твоей стороны.
>
> Еще раз. Я уже отправил человеку код. Больше никому отправлять
> не буду - я не благотворительная организация.
Тебе нужны деньги за это? Сколько?
← →
_Mike_ (2007-07-18 13:25) [60]
> Ты несешь бред, ничем его не обосновывая
Эта тема уже здесь обсуждалась. Это раз. Код я уже давал. Это два. Ваше право верить или не верить. У нас и у Вас свободная страна.
> У тебя очень много денег и очень мало времени
А это, простите, не Ваше дело.
> объясняешь всем.
Ни кому я ни чего не объясняю.
> Тебе нужны деньги за это? Сколько?
Нужны, а Вам нет? Но не за это (см. выше).
P.S. Поищите на просторах интернета - ваши любимые пираты (не лично Ваши, а вообще - ваши) не раз уже кардили - так что поиск рулит.
← →
db2admin © (2007-07-18 13:30) [61]почему если первую страницу читать интересно и полезно, то в последующих просто вьется снобизм?
← →
Kerk © (2007-07-18 13:35) [62]> [60] _Mike_ (18.07.07 13:25)
Ты крут, ты нереально крут, круче некуда :)
Вот что с людьми одна среднего уровня шароварка делает :)
← →
oxffff © (2007-07-18 13:46) [63]Оно?
http://mpetrichenko.moikrug.ru/
http://www.petergen.com/sources/petrich_k.shtml
http://www.download.ru/author/29888
← →
_Mike_ (2007-07-18 13:47) [64]
> Вот что с людьми одна среднего уровня шароварка делает :
> )
Сделайте лучше. Кто Вам мешает? А сидя на чьей-то шее все легче рассуждать.
P.S. С этого момента я буду Ваши личностные нападки игнорировать - если Вам нечего сказать по существу вопроса. Аль жаба душит?
← →
Игорь Шевченко © (2007-07-18 13:48) [65]Вот же людям делать нефиг
← →
_Mike_ (2007-07-18 13:50) [66]
> oxffff © (18.07.07 13:46) [63]
Последнее оно. Первые два - не оно. Полные тезки (или однофамильцы - хз как правильно).
← →
Kerk © (2007-07-18 13:52) [67][64] _Mike_ (18.07.07 13:47)
> Аль жаба душит?
Да. Так и есть. Тебе великому ВСЕ завидуют. Вообще все. И я тоже. Признаюсь честно. Хочу быть таким же великолепным как ты :)
← →
Panel (2007-07-18 13:53) [68]2 _Mike_
Миша, ты это, вообще, о чем? Опять курил? Небось, натощак?
Завязывай флудить.
Давай конкретику.
И побольше креатива.
← →
Игорь Шевченко © (2007-07-18 13:56) [69]Завязываем с оффтопиком.
← →
Kerk © (2007-07-18 13:58) [70]> [69] Игорь Шевченко © (18.07.07 13:56)
Да ладно. Не видишь, человек занят? Не мешай ему флудить :)
← →
db2admin © (2007-07-18 14:27) [71]Игорь Шевченко © (18.07.07 13:56) [69]
Не флудю действительно интересно
Вопрос лично к тебе какой вариант реализации ты предлагаеш для функции
function SomeFunction:String;
begin
Result := "";
try
//возможное исключение
except
// в обработке исключения что ли
// Result := "";
end;
end;
Почему такой вариант ошибочен?
_Mike_
Просьба не отвечать даже если знаеш твой снобизм показатель твоего професионалтзма.
← →
Игорь Шевченко © (2007-07-18 14:31) [72]
> Вопрос лично к тебе какой вариант реализации ты предлагаеш
> для функции
а какие хинты выдает компилятор ?
← →
Германн © (2007-07-18 14:42) [73]
> Игорь Шевченко © (18.07.07 10:28) [18]
>
...
> - чем меньше лишнего кода, тем проще работать.
> - при компилиции не должно быть ни хинтов ни предупреждений.
У меня как раз эти самые два правила очень часто конфликтуют между собой в оператореcase
:)
← →
Asail (2007-07-18 15:42) [74]
> Игорь Шевченко © (18.07.07 14:31) [72]
>
> > Вопрос лично к тебе какой вариант реализации ты предлагаеш
>
> > для функции
>
>
> а какие хинты выдает компилятор ?
См. мои предыдущие посты - на стрингах ни каких хинтов не выдаст.
← →
Asail (2007-07-18 15:44) [75]
> Игорь Шевченко © (18.07.07 13:56) [69]
> Не флудю действительно интересно
> Вопрос лично к тебе какой вариант реализации ты предлагаеш
> для функции
На мой взгляд - оба имеют право на жизнь, хотя лично я предпочитаю в except.
← →
Игорь Шевченко © (2007-07-18 15:57) [76]Asail (18.07.07 15:42) [74]
> См. мои предыдущие посты - на стрингах ни каких хинтов не
> выдаст.
function Foo (Bar, Baz: Integer): string;
begin
Result := "";
try
Result := IntToStr(Bar div Baz);
except
Result := "";
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit3.Text := Foo(StrToIntDef(Edit1.Text, 0), StrToIntDef(Edit2.Text, 0));
end;
end.
main.pas.30: begin
00454BC4 55 push ebp
00454BC5 8BEC mov ebp,esp
00454BC7 51 push ecx
00454BC8 53 push ebx
00454BC9 56 push esi
00454BCA 57 push edi
00454BCB 894DFC mov [ebp-$04],ecx
00454BCE 8BF2 mov esi,edx
00454BD0 8BD8 mov ebx,eax
main.pas.31: Result := "";
00454BD2 8B45FC mov eax,[ebp-$04]
00454BD5 E872FAFAFF call @LStrClr
main.pas.32: try
00454BDA 33C0 xor eax,eax
00454BDC 55 push ebp
00454BDD 68FF4B4500 push $00454bff
00454BE2 64FF30 push dword ptr fs:[eax]
00454BE5 648920 mov fs:[eax],esp
main.pas.33: Result := IntToStr(Bar div Baz);
00454BE8 8BC3 mov eax,ebx
00454BEA 99 cdq
00454BEB F7FE idiv esi
00454BED 8B55FC mov edx,[ebp-$04]
00454BF0 E84338FBFF call IntToStr
00454BF5 33C0 xor eax,eax
00454BF7 5A pop edx
00454BF8 59 pop ecx
00454BF9 59 pop ecx
00454BFA 648910 mov fs:[eax],edx
00454BFD EB12 jmp $00454c11
00454BFF E9FCF0FAFF jmp @HandleAnyException
main.pas.35: Result := "";
00454C04 8B45FC mov eax,[ebp-$04]
00454C07 E840FAFAFF call @LStrClr
00454C0C E8FFF4FAFF call @DoneExcept
main.pas.37: end;
00454C11 5F pop edi
00454C12 5E pop esi
00454C13 5B pop ebx
00454C14 59 pop ecx
00454C15 5D pop ebp
00454C16 C3 ret
Не выдаст
И так:
function Foo (Bar, Baz: Integer): string;
begin
try
Result := IntToStr(Bar div Baz);
except
Result := "";
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit3.Text := Foo(StrToIntDef(Edit1.Text, 0), StrToIntDef(Edit2.Text, 0));
end;
end.
main.pas.30: begin
00454BC4 55 push ebp
00454BC5 8BEC mov ebp,esp
00454BC7 51 push ecx
00454BC8 53 push ebx
00454BC9 56 push esi
00454BCA 57 push edi
00454BCB 894DFC mov [ebp-$04],ecx
00454BCE 8BF2 mov esi,edx
00454BD0 8BD8 mov ebx,eax
main.pas.31: try
00454BD2 33C0 xor eax,eax
00454BD4 55 push ebp
00454BD5 68F74B4500 push $00454bf7
00454BDA 64FF30 push dword ptr fs:[eax]
00454BDD 648920 mov fs:[eax],esp
main.pas.32: Result := IntToStr(Bar div Baz);
00454BE0 8BC3 mov eax,ebx
00454BE2 99 cdq
00454BE3 F7FE idiv esi
00454BE5 8B55FC mov edx,[ebp-$04]
00454BE8 E84B38FBFF call IntToStr
00454BED 33C0 xor eax,eax
00454BEF 5A pop edx
00454BF0 59 pop ecx
00454BF1 59 pop ecx
00454BF2 648910 mov fs:[eax],edx
00454BF5 EB12 jmp $00454c09
00454BF7 E904F1FAFF jmp @HandleAnyException
main.pas.34: Result := "";
00454BFC 8B45FC mov eax,[ebp-$04]
00454BFF E848FAFAFF call @LStrClr
00454C04 E807F5FAFF call @DoneExcept
main.pas.36: end;
00454C09 5F pop edi
00454C0A 5E pop esi
00454C0B 5B pop ebx
00454C0C 59 pop ecx
00454C0D 5D pop ebp
00454C0E C3 ret
Тоже не выдаст.
И что ?
← →
sniknik © (2007-07-18 17:14) [77]> А где здесь обращение к пропертям?
> Result := "a";
Result типа стринг, оно само и есть дефаултная "пропертя" для самой себя. и ему как раз "a" и присваивается.
> См. мои предыдущие посты - на стрингах ни каких хинтов не выдаст.
читай мой предыдущий пост про то что такое стринг.
если "обернуть" классом тот же интеджер для которого хинты выдает то их тоже не будет, причина очевидна, оптимизатор просто не знает что там делается(или может делаться) по присвоению проперти.
т.е. делаем вместо
function TForm1.MyFunct: Integer;
begin
result:= 2;
result:= 3;
end;
с хинтом
type
TMyInteger = class
FValue: integer;
public
property Value: integer read FValue write FValue;
end;
function TForm1.MyFunct: TMyInteger;
begin
result:= TMyInteger.Create;
result.Value:= 2;
result.Value:= 3;
end;
и хинта не будет...
отличие для стринга только в том что это "маджик" тип(клас), дельфя его сама создает/уничтожает и дополнительного ".Value" писать не надо.
оптимизатор же не разбирает, что это за класс, просто все "пропускает" т.к. в их случае определить определяется значение или там еще чтото делается нет возможности.
(более точно, имхо, представить стринг как аналог bstr из С++, только более встроенный в систему... уже не чистый класс но еще не тип)
← →
sniknik © (2007-07-18 17:53) [78]кстати может дело даже "глобальнее" чем кажется, оптимизатором игнорируются не только классовые переменные, а вообще все в которых указатели участвуют (х.з. почему);
т.е. если переписать интеджера на указатель
function TForm1.MyFunct: Pointer;
begin
result:= Pointer(1);
result:= Pointer(2);
end;
тоже нет хинта (тех нет, другие добавляются, если не отключать, о небезопасности типа)
← →
Германн © (2007-07-19 03:38) [79]А ещё меня достало писАть в каждой функции перед
begin
строчки:
var
Error : Integer;
:(((
← →
Германн © (2007-07-19 04:04) [80]
> Германн © (19.07.07 03:38) [79]
К компилятору не относится. Это так, сражаюсь с "земляными червяками" :)
Просто если я не вставлю эти две строчки, то компилятор меня обругает и не даст результат. А добавлять потом, после х.з. какого периода, обработку ошибок с выдачей "Номера ошибки" - это, имхо, геморрой ещё тот!
P.S.
В ТЗ написано так: "Возвращаемое значение свидетельствует об успехе операции"
а его тип BOOL (Си).
← →
Думкин © (2007-07-19 06:57) [81]> _Mike_ (18.07.07 13:25) [60]
Ничего не пришло. :(
> Германн © (19.07.07 04:04) [80]
Ниче не понял. Кто на ком стоял? Что мешает не писать? Я не писал.
← →
db2admin © (2007-07-19 07:27) [82]Германн © (19.07.07 04:04) [80]
>>P.S.
>>В ТЗ написано так: "Возвращаемое значение свидетельствует об успехе
>>операции"
>>а его тип BOOL (Си).
то возвращаем целое 0 или 1
#define TRUE 1
#define FALSE 0
Страницы: 1 2 3 вся ветка
Форум: "Прочее";
Текущий архив: 2007.08.19;
Скачать: [xml.tar.bz2];
Память: 0.69 MB
Время: 0.043 c