Текущий архив: 2007.05.27;
Скачать: CL | DM;
Внизвызов функции stdcall Найти похожие ветки
← →
pest_tt © (2007-05-06 16:47) [0]Компилятор ругается (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;
← →
{RASkov} © (2007-05-06 16:50) [1]stdcall;
Ставиться в объявлении функций(процедур).... но никак не в теле.
← →
pest_tt © (2007-05-06 17:09) [2]мне препод сказал, что это сишные функции и для их вызова в делфи нужно изменить порядок параметров вызовом stdcall, тк в си и делфи параметры используются в этих функциях наоборот. не знаю либо я напутал, либо он чушь сказал.
в любом случае спасибо, {RASkov}.
← →
{RASkov} © (2007-05-06 17:35) [3]> [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;
← →
{RASkov} © (2007-05-06 17:41) [4]Второй пример может и несовсем доходчивый, но суть в том, что stdcall - это деректива и ставиться она в заголовке функ(проц) для указания...
> в делфи нужно изменить порядок параметров
...порядка следования параметров в стеке.
← →
pest_tt © (2007-05-06 17:54) [5]так вроде понятно все. дело в том, что я создаю свою функцию (процедуру) и уже в ней вызываю CryptAcquireContext, которая находится в Wcrypt2.pas и там после заголовка этой функции уже написано stdcall.
т.е. я вызову CryptAcquireContext в делфи и параметры в стеке будут расположены уже в правильном порядке.
еще раз спасибо. ;)
← →
Alex_C © (2007-05-07 10:10) [6]
> уже в ней вызываю CryptAcquireContext, которая находится
> в Wcrypt2.pas и там после заголовка этой функции уже написано
> stdcall.
Ну вот и все! Только stdcall один раз при объявлении ф-ции надо указывать. А когда саму ф-цию. вызываешь - уже не надо.
Страницы: 1 вся ветка
Текущий архив: 2007.05.27;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.042 c