VB的源程序转成Delphi程序(100分)

  • 主题发起人 主题发起人 slnet
  • 开始时间 开始时间
S

slnet

Unregistered / Unconfirmed
GUEST, unregistred user!
现有VB的源程序希望转成Delphi程序,该怎样转?

Vb需要的数据定义
Const lBufSize As Long = 800 * 600
Public PBuffer(lBufSize) As Byte

VB函数:
Function ReturnData(ByVal lI1 As Long, ByVal lNB As Long, ByRef bytFirstDest As Byte) As Long

VB调用函数
ReturnData(123, lBufSize, PBuffer(0))
-------------------------------------------
用delphi 该怎样做这件事情?

 
试一试这样,看看行不?
Const lBufSize = 800 * 600;
var PBuffer: array[0..lBufSize] of Byte;
function ReturnData(var lI1, lNB: Longint
var bytFirstDest:Byte): LongInt;

调用函数
ReturnData(123, lBufSize, PBuffer[0]);
 

按yostgxf的方法测试通不过呀。

我实际的应用是动态分配内存给PBuffer的, 摘录如下:

// 初始化数据
var
PBuffer: ^BYTE=NIL

BufLen: Longint =0


// 改VB中的函数为Delphi定义
function ReturnData( lI1, lNB: Longint
var bytFirstDest:Byte): LongInt;
......

// 使用ReturnData函数重新获取数据
function GetDllData( x,y: longint): boolean;
var
BufLen: longint;
rst: longint;
begin
lBufSize:= x * y * Sizeof(BYTE);

... PBuffer 不为空时释放掉
... 为PBuffer分配lBufSize大小的内存
... lI1 数据的产生

// 调用
rst:= ReturnData( lI1, lBufSize, PBuffer^);
根据rst返回值分析调用结果是: PBuffer^是一个错误的指针!!!
请帮我分析一下,谢了!



 
调用过程:
GetMem(PBuffer, lBufSize);

ReturnData(123, lBufSize, @PBuffer[0])
//就这样,上次掉了@
 
用 ReturnData(123, lBufSize, @PBuffer[0])
//就这样,上次掉了@
编译通不过,说是类型不一致?

 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
610
import
I
后退
顶部