Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.011 c
6-1185475224
MikeLevin
2007-07-26 22:40
2008.04.27
Разбор заголовка и пакетов.


4-1188449821
Darkwingg
2007-08-30 08:57
2008.04.27
Как этот код работает (GlobalAlloc)


2-1207054110
lamer
2008-04-01 16:48
2008.04.27
filename


15-1205120451
Denis__
2008-03-10 06:40
2008.04.27
Школа будущего.


2-1207040118
Dima
2008-04-01 12:55
2008.04.27
Проблема со скачиванием файла, WinInet




   Наверх