Текущий архив: 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