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

Вниз

Как определить чего ты стоишь как программист.   Найти похожие ветки 

 
Verg ©   (2004-04-08 06:27) [280]


> Piter ©   (08.04.04 00:44) [279]
> Verg (07.04.04 22:37) [277]
> корректно ли, все же, преобразовывать pointer к integer
>
> абсолютно корректно.


Но, тем не менее, сам почему-то написал longword(A), а не integer в  [276].....

Думаем одно, а говорим другое?


 
MBo ©   (2004-04-08 06:39) [281]

>ну а почему все таки не просто GetMem
Когда ты пишешь GetMem (что удобнее программисту), компилятор подставляет вызов функции_GetMem, а в исходниках VCL разработчикам было все равно, как писать.


 
Verg ©   (2004-04-08 06:42) [282]

И вот еще, что....
Piter, чтобы задача не казалась для тебя абстрактной, напиши на Паскале (на Дельфи), например, реализацию ф-ции Move.


 
Alex Konshin ©   (2004-04-08 06:56) [283]

GetMem - процедура.
_GetMem - функция.


 
Матлабист   (2004-04-08 11:27) [284]

> Alex Konshin ©   (08.04.04 06:56) [283]

А какая разница? Все равно CALL _GetMem. И, кстати, _GetMem использует значение EAX (размер) и устанавливает значение в EAX. Так что по сути это функция.


 
Игорь Шевченко ©   (2004-04-08 11:36) [285]

Матлабист   (08.04.04 11:27)
Alex Konshin ©   (08.04.04 06:56)

Окно View|CPU нас рассудит.

В скомпилированной программе с вызовом GetMem обращение производится к процедуре _GetMem


 
Alex Konshin ©   (2004-04-08 11:41) [286]

А чего тут судить - я и сам это знаю. Я просто обратил внимание на разницу, которую все тут искали.


 
Alex Konshin ©   (2004-04-08 12:07) [287]

Кстати, если уж на то пошло, то в basm это будет выглядеть как System.@GetMem, а не _GetMem.
Я ее использовал в своих Arrays, кстати, именно в подмене NewInstance.


 
Piter ©   (2004-04-08 19:46) [288]

Verg (08.04.04 06:27) [280]
> абсолютно корректно.

Но, тем не менее, сам почему-то написал longword(A), а не integer в  [276].....


такое очучение, что ты не читаешь другие слова. Я ж тебе сказал, что преобразование корректно! Корректное преобразование, это когда ты можешь однозначно обратно вернуть.

А вот сложение в рамках Integer не совсем корректно! Понимаешь? Об этом я и говорю. СЛОЖЕНИЕ НЕ ВСЕГДА КОРРЕКТНО


 
Piter ©   (2004-04-09 19:21) [289]

?


 
kaif ©   (2004-04-10 00:33) [290]

А как в свете сказанного происходила эволюция типов Object Pascal от одной версии Delphi до другой?
Ведь в начале (если я не ошибаюсь), под integer понималось одно, а под longint - другое? А потом это стало 4 байта. Завтра это может стать 64bit-а... Я не исключаю, что int64 и integer станут синонимами на 64-разрядной системе. Хотя пока трудно что-то сказать... То же самое касается и типа string, который вначале (я опять боюсь ошибиться) был длиной 255 символов, а в первом байте хранилась его длина. Затем string стал длиной в то, что помещается в 4 байта и в каком-то смысле совместимым с PChar. А shortstring заменил старый string.
Я, например, несколько побаиваюсь конструкций типа High(integer). Скорее всего это оттого, что я прикладной программист, а не настоящий. Но все же... Не проще ли записать

const
 max_buff_size = столько-то,

чем использовать всякие High ?
-----------------
Я лично редко использую High. Возможно, я неправ.
-----------------
Если что-то переврал из истории развития типов - поправьте, но ногами не бейте. :)


 
Игорь Шевченко ©   (2004-04-10 00:49) [291]


> Я не исключаю, что int64 и integer станут синонимами на
> 64-разрядной системе.


И станут. Другое дело, что если не использовать конструкции вида SizeOf(Integer) или SizeOf(переменная типа Integer), то разрядность типа Integer не должна служить причиной проблем в существующих программах.


> Я лично редко использую High. Возможно, я неправ


type
 TMyColor = (mcForm, mcHeader, mcDetail, mcFocus)

var
 Colors: array [TMyColor] of TColor;
 I: TMyColor;
begin
 for I:=Low(TMyColor) to High(TMyColor) do
   Colors[I] := clWhite;
end;

По-моему, Low и High в этом примере - наилучшее решение.


 
kaif ©   (2004-04-10 02:29) [292]

2 Игорь Шевченко ©   (10.04.04 00:49) [291]

:)))
Вы - телепат. Это именно тот редкий случай (перебор перечислимых типов), где я использую High! Я сначала даже так и написал в своем постинге (кроме перечислимых типов), но потом побоялся, что заклюют и стер... Еще я иногда использую их при работе с массивами. Но размерности массивов все же определяю в обычных константах...



Страницы: 1 2 3 4 5 6 7 8 вся ветка

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

Наверх




Память: 1.01 MB
Время: 0.064 c
3-1081149365
Brain Force
2004-04-05 11:16
2004.05.02
Форма для добавления поля в DBGrid(Eh)


7-1078996095
MIDPAD
2004-03-11 12:08
2004.05.02
сканер штрихкода


1-1082103917
RH
2004-04-16 12:25
2004.05.02
Содержимое каталога


1-1082042199
Никита
2004-04-15 19:16
2004.05.02
Загрузка файлов через Delphi приложение.


6-1078913962
Denton
2004-03-10 13:19
2004.05.02
LAN on/off