c语言转换成delphi程序语言

1,指针
int *ptr; 
char *ptr;

var
ptr:^Integer;
ptr:^char;

2,无类型指针的定义
c
void *ptr;
delphi:
ptr:Pointer

3,取值:
c
(*ptr)
delphi
ptr^

4,取地址
c
ptr=&Object;
delphi
ptr:=@Object

5,指针运算
c
char a[20];
char *ptr=a;
ptr++;
ptr+=2;
delphi
var
a:array[1..20] of char;
ptr:Pchar;//ptr:^char;
begin
ptr:=@a;
inc(ptr)
inc(ptr,2);
end;

6,动态内存分配
c
int *ptr,*ptr2;
int i;
ptr=(int*)malloc(sizeof(int)*20);
ptr2=ptr;
for(i=0;i<20;i++){
*ptr=i;
ptr++;
}
free(ptr2)
delphi
var ptr,ptr2:^integer;
i:integer;
begin
GetMem(ptr,sizeof(integer)*20);
ptr2:=ptr;
for i:=0 to 19 do
begin
ptr^:=i;
inc(ptr);
end;
FreeMem(ptr2);
end;

7,字符数组运算
c
char str[15];
char *pstr;
strcpy(str,"teststr");
strcat(str,"_testok");
pstr=(char*)malloc(sizeof(char)*15);
strcpy(pstr,str);
print(pstr);
free(pstr);
delphi
var str:array[1..15]of char;
pstr:Pchar;
begin
strcopy(@str,'teststr');
strcat(@str,'_testok');
getmem(pstr,sizeof(char)*15);
strcpy(pstr,@str);
write(pstr)
freemem(pstr);
end;

8,函数指针
c
typedef int (*PVFN)(int)
int main(){
HMODULE hModule=LoadLibrary("test.dll");
PVFN pvfn=NULL;
pvfn=(PVFN)GetProcAddress(hModule,"Function1");
pvfn(2);
FreeLibrary(hModule);
}
delphi
type PVFN=function(para:Integer):integer
var
fn:PVFN;
hm:HMODULE;
begin
hm:=LoadLibrary('test.dll');
fn:=GetProcAddress(hm,'Function1');
fn(2);
FreeLibrary(hm);
end;

猜你喜欢

转载自blog.csdn.net/c_huabo/article/details/51516418
今日推荐