![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
вызов функции stdcall [D7, XP]
pest_tt © (2007-05-06 16:47:00)Компилятор ругается (Undeclared identifier: 'stdcall'). раньше с stdcall не работал. буду признателен за совет.
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Wcrypt2;
...
function RegProg(Action:string):boolean;
var
ContainerHandle:HCRYPTPROV;
_result:boolean;
.....
begin
DataForHash:=form1.edit1.Text;
SizeDataForHash:=length(DataForHash);
_result:=CryptAcquireContext(@ContainerHandle,nil,nil,PROV_RSA_FULL,CRYPT_VERIFY CONTEXT); stdcall;
...
...
RegProg:=true;
end;
Alex_C (2007-05-07 10:10:00) [1]
> уже в ней вызываю CryptAcquireContext, которая находится
> в Wcrypt2.pas и там после заголовка этой функции уже написано
> stdcall.
Ну вот и все! Только stdcall один раз при объявлении ф-ции надо указывать. А когда саму ф-цию. вызываешь - уже не надо.
pest_tt (2007-05-06 17:54:00) [2]так вроде понятно все. дело в том, что я создаю свою функцию (процедуру) и уже в ней вызываю CryptAcquireContext, которая находится в Wcrypt2.pas и там после заголовка этой функции уже написано stdcall.
т.е. я вызову CryptAcquireContext в делфи и параметры в стеке будут расположены уже в правильном порядке.
еще раз спасибо. ;)
{RASkov} (2007-05-06 17:41:00) [3]Второй пример может и несовсем доходчивый, но суть в том, что stdcall- это деректива и ставиться она в заголовке функ(проц) для указания...
> в делфи нужно изменить порядок параметров
...порядка следования параметров в стеке.
{RASkov} (2007-05-06 17:35:00) [4]> [2] pest_tt © (06.05.07 17:09)
Верно. Только выглядит это типа так
procedure NameProc(var C: Char; ...); stdcall;
begin
end;
или вот
function GetIndex(<Param>): Integer; stdcall;
......
implementation
procedure SetListIndex(Lb: TListBox);
begin
Lb.ItemIndex:=GetIndex(<Param>);
end;
pest_tt (2007-05-06 17:09:00) [5]мне препод сказал, что это сишные функции и для их вызова в делфи нужно изменить порядок параметров вызовом stdcall, тк в си и делфи параметры используются в этих функциях наоборот. не знаю либо я напутал, либо он чушь сказал.
в любом случае спасибо, {RASkov}.
{RASkov} (2007-05-06 16:50:00) [6]stdcall;
Ставиться в объявлении функций(процедур).... но никак не в теле.