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

Вниз

out/var vs Pointer ;)   Найти похожие ветки 

 
Пробегал2...   (2008-03-12 20:04) [0]

Уважаемые знатоки, есть вопрос - в аргументах функции объявление:

out/var ExecuteStatus: byte

Это тоже самое, что:

ExecuteStatus: Pbyte

Или нет? Имеет ли значение тип вызова? Если важно - вызов stdcall.
Грубо говоря - если в программе объявлен один вариант импорта функции, а в DLL объявлен другой вариант экспорта функции - будет ли совместимость?


 
Игорь Шевченко ©   (2008-03-12 20:07) [1]


> Грубо говоря - если в программе объявлен один вариант импорта
> функции, а в DLL объявлен другой вариант экспорта функции
> - будет ли совместимость?


будет. Посмотри объявления в Windows.pas и в MSDN


 
Пробегал2...   (2008-03-12 20:20) [2]

Игорь Шевченко ©   (12.03.08 20:07) [1]

спасибо


 
Пробегал2...   (2008-03-12 20:22) [3]

а чем интересно отличается:

const P: PChar

от

P: PChar

?


 
www   (2008-03-12 20:30) [4]


> а чем интересно отличается:

в первом нельзя менять сам указатель, а во втором - можно


 
Семеныч   (2008-03-12 20:33) [5]

> Пробегал2...   (12.03.08 20:22) [3]

const P: PChar
Значение P внутри подпрограммы изменить нельзя - синтаксическая ошибка

P: PChar
Значение P внутри подпрограммы изменить можно, но это изменение будет локальным (не передается наружу).


 
Пробегал2...   (2008-03-12 21:11) [6]

это вы, конечно, круто объяснили. Я в смысле, будут ли отличаться прототипы функций (или как это называется...). То есть, будет ли тоже самое помещено в стек или варианты различаются?


 
Пробегал2...   (2008-03-12 21:15) [7]

может быть, при:

const P: PChar

будет передан указатель на ту область памяти, где хранится оригинальный указатеь на строку.

А при:

P: PChar;

указатель на строку будет скопирован в другое место и уже туда будет указывать @P?

Или это я гоню? ;)


 
jack128_   (2008-03-12 21:32) [8]


>  Я в смысле, будут ли отличаться прототипы функций (или
> как это называется...).

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


> будет передан указатель на ту область памяти, где хранится
> оригинальный указатеь на строку.

Нет, при константной передаче параметра передается указатель, только есть SizeOf(TParamType) > SizeOf(Pointer). В противном случае - передача по значению и по константной ссылке с точки зрения асма - ничем неотличается. Опять же - если мы не говорим о длинных строках/интефейсах, вариантах и тому подобных типах..


 
Игорь Шевченко ©   (2008-03-12 21:41) [9]


> а чем интересно отличается:
>
> const P: PChar
>
> от
>
> P: PChar
>
> ?


Ничем.


 
TUser ©   (2008-03-12 21:44) [10]

> Ничем.

Это если себе грабли не искать типа
P := @что-нибудь
или уж
P := $000AD12B


 
Игорь Шевченко ©   (2008-03-12 22:11) [11]

TUser ©   (12.03.08 21:44) [10]

Я имею в виду, как и автор вопроса, в объявлении прототипа функции. В нем PChar ну точно от const PChar не будет отличаться с точки зрения передачи параметров и генерации кода.


 
clickmaker ©   (2008-03-13 12:38) [12]

кстати, несмотря на то, что в функции DrawText параметр lpString - const, у нее есть флажок DT_MODIFYSTRING
Так что const - это, скорей, психотерапия )



Страницы: 1 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.012 c
15-1205497981
Правильный_Вася
2008-03-14 15:33
2008.04.27
бывают ли блондины среди негроидов и монголоидов?


2-1207227850
XRMiPO
2008-04-03 17:04
2008.04.27
приложение поверх полноэкранных приложений


15-1205341451
Пробегал2...
2008-03-12 20:04
2008.04.27
out/var vs Pointer ;)


15-1205272268
No_Dead
2008-03-12 00:51
2008.04.27
От нечего делать, или Квадрат Дюрера%>


15-1205350043
Interfer0n
2008-03-12 22:27
2008.04.27
Ищем программистов Delphi, C++/Visual Studio