Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1185245077
IE
2007-07-24 06:44
2007.08.19
Настроки прокси для определенного сайта в IE


3-1177591691
Jeer
2007-04-26 16:48
2007.08.19
Многомерные кубы


3-1178391336
Wiser87
2007-05-05 22:55
2007.08.19
Сортировка в DBEdit


15-1184958222
Tab
2007-07-20 23:03
2007.08.19
в какой кодировке сохранить тхт файл


5-1159773491
Image
2006-10-02 11:18
2007.08.19
Событие OnTimer в созданном компоненте





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский