当前位置:主页>销售管理软件> 列表

哪位兄弟帮忙翻译一下这段。C to Delphi 找股票软件销售

财务软件版1楼: 哪位兄弟帮忙翻译一下这段。C to Delphi
多谢。
DWORD WINAPI RunningThread(LPVOID p)
{
int r,cnt = NULL,stat = 0;;
HANDLE *pObject;
pObject = PK7600AcqStart(card,cnt);
do
{
r=WaitForSingleObject(*pObject,3000l); //three second timeout
if(r==WAIT_OBJECT_0||r==WAIT_TIMEOUT) //102h||0
{
PK7600AcqCheckStatus(card,&cnt);//get remainning counts
}
}while(r!=WAIT_OBJECT_0);

if(r==0)
{
PK7600AcqStop(card);
PK7600RetrieveWaveform(card,&H,W);
}
ExitThread(0);
return stat;
}
我写出来的有点的问题

2楼: HANDLE *pObject;----> pObject:^HANDLE;
PK7600AcqCheckStatus(card,&cnt);----> r:=WaitForSingleObject(pObject^,3000l);
就这两句吧。
&cnt ----> @cnt 如股票软件销售

3楼: function RunningThread(p:pointer) : DWORD;
var
r,cnt,stat : integer ;
pObject : ^THANDLE;
begin
stat := 0;
cnt := 0;
pObject := PK7600AcqStart(card,cnt);

repeat
r := WaitForSingleObject(pObject^,3000l); //three second timeout
if(r=WAIT_OBJECT_0 or r=WAIT_TIMEOUT) then PK7600AcqCheckStatus(card,cnt);//get remainning counts
until r=WAIT_OBJECT_0;

if r=0 then
begin
PK7600AcqStop(card);
PK7600RetrieveWaveform(card,H,W);
end ;
ExitThread(0);
Result := stat;
end;

4楼: 这个pk7600xxx的是啥函数啊?怎么找不到呢?

5楼: function RunThread(p : Pointer) : DWORD;
var
r, cnt, stat : Integer;
pObject : ^Handle;
begin
stat := 0;
pObject := PK7600AcqStart(card,cnt);
repeat
r :=WaitForSingleObject(*pObject,3000l); //three second timeo
if(r=WAIT_OBJECT_0) or (r==WAIT_TIMEOUT) then //102h||0
begin
PK7600AcqCheckStatus(card,&cnt);//get remainning counts
end;
until (r <> WAIT_OBJECT_0);
if r=0 then
begin
PK7600AcqStop(card);
PK7600RetrieveWaveform(card,&H,W);
end;
ExitThread(0);
result := stat;


end;

6楼: to pascal!
if(r=WAIT_OBJECT_0 or r=WAIT_TIMEOUT) then PK7600AcqCheckStatus(card,cnt);//get remainning counts
这样判断两个数据的OR运算是不正确的

财务软件版7楼: PK7600****是一块硬件卡,开发商提供的dll
呵呵,不是系统的。
***************************************
PK7600AcqStart定义是这样的
Syntax
(HANDLE *)PK7600AcqStart(int card,int * mode)
Parameter
card Card number
mode Allow real time update of trace data or not.
Description
PK7600AcqStart starts an acquisition.If mode is NULL,only the AverageCompleteEvent will be set by the acquistion software.If mode not NULL,both the AverageCompleteEvent and NewWaveformEvent will be set by the acquisition software.
Return Value
A HANDLE pointer to two possible events (i)AverageCompleteEvent and (ii)NewWaveformEvent.
*****************************

但是他Demo上面cnt给的是integer,而实际demo上面的是指针,我就不明白了。

8楼: 我声明dll的时候
function PK7600AcqStart(card:integer;mode:pinteger):pHandle;cdecl;external ''PK76OTDR.DLL'' name ''_PK7600AcqStart@8'';


返回值不能是pTHandle,也不能是^Handle
但是在函数或者过程中只能用
var
pObject : ^THANDLE;

9楼: to Beyondbill:没问题的,数学符号优先于逻辑符号啊
倒是兄弟的until条件没改过来啊
改一句:
function RunningThread(p:pointer) : DWORD; stdcall;

10楼: 不好意思,忙了居然忘记结帖了!
各位新年快乐,明年更上一层楼!

11楼: 多人接受答案了。