其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

C语言代码套用在Delphi编程中[4]


发布日期:2019年12月28日
 
C语言代码套用在Delphi编程中[4]

运行Delphi新建一个工程并保存然后把DatFormatOBJ拷贝到它的目录之下在单元的implementation下面添加如下代码:

{$LINK DatFormatobj} //链接外部OBJ文件

function _CheckIsDatFile(const FileName:Pchar;IsDatFile:PBool):Bool;cdecl;external;//定义函数其中cdecl进栈方式说明采用C语言格式传递参数external说明是个外部声明函数

注意函数声明的原形与C定义的不一样必须在前面添加一个下划线原因是因为编译器的链接符号中C与C++是不一样的因为这个不是本文重点所以这里不作讨论请感兴趣的朋友自行参阅相关资料

然后我们写如下代码调用此函数:

以下是引用片段

procedure TFrmMainButtonClick(Sender: TObject);

var

IsDatFile:Bool;

begin

if OpenDialogExecute then

if _CheckIsDatFile(Pchar(OpenDialogFileName)@IsDatFile) then

if IsDatFile then ShowMessage(恭喜!该文件是一个Dat格式的视频文件!)

else ShowMessage(不好意思该文件不是一个Dat格式的视频文件!)

else ShowMessage(读文件错误!);

end;

编译这个程序将得到一个干净的可执行EXE文件了

四:C++Builder中使用Delphi单元

这个实际是题外话了不过这里还是提一提:假设我们有一个获取BIOS密码的Delphi单元

unit AwardBiosPas;

{=======================================================

项目: 在Delphi编程中使用C语言代码 演示程序

模块: 获取BIOS密码单元

以下是引用片段

interface

uses

windows SysUtils;

function My_GetBiosPassword: string;

implementation

function CalcPossiblePassword(PasswordValue: WORD): string;

var

I: BYTE;

C: CHAR;

S: string[];

begin

I := ;

while PasswordValue <> do

begin

Inc(I);

if $ > PasswordValue then

begin

if $ > PasswordValue then

S[I] := CHAR(PasswordValue)

else if $B > PasswordValue then

S[I] := CHAR(PasswordValue and $)

else if $D > PasswordValue then

S[I] := CHAR($ or (PasswordValue and $F))

else if $ > PasswordValue then

begin

S[I] := CHAR($ or (PasswordValue and $F));

if > S[I] then

S[I] := CHAR(BYTE(S[I]) + );

end

else if $C > PasswordValue then

S[I] := CHAR($ or (PasswordValue and $))

else if $E > PasswordValue then

S[I] := CHAR($ or (PasswordValue and $))

else

begin

S[I] := CHAR($ or (PasswordValue and $F));

if z < S[I] then

S[I] := CHAR(BYTE(S[I]) );

end;

end

[] [] [] [] []

               

上一篇:C语言代码套用在Delphi编程中[1]

下一篇:C语言代码套用在Delphi编程中[3]