Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 1 MB
Время: 0.075 c
1-1082039221
Василя
2004-04-15 18:27
2004.05.02
Принцип загрузки ярлычка из ресурсов exe Windows.


3-1080999487
Nescio
2004-04-03 17:38
2004.05.02
Изменение имени и типа поля


7-1078612457
fishca
2004-03-07 01:34
2004.05.02
Отлов на ATX корпусе нажатия кнопки Power


1-1081882612
Влад Сташневский
2004-04-13 22:56
2004.05.02
Как присвоить один StringList другому


1-1081856040
Olegka
2004-04-13 15:34
2004.05.02
Объединение ячеек в StringGrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский