Вниз
Скачать: 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.012 c
2-1207157583
TCrash
2008-04-02 21:33
2008.04.27
Кодировка???


4-1188461470
Nucer
2007-08-30 12:11
2008.04.27
Version info (Build)


11-1182531656
Danger
2007-06-22 21:00
2008.04.27
Как устранить флики


4-1188202499
inex
2007-08-27 12:14
2008.04.27
информация о запущенном процессе


15-1205268362
ifrau
2008-03-11 23:46
2008.04.27
TEmbeddedWB




   Наверх