全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2742
推到 Plurk!
推到 Facebook!

請問此C#的宣告,如何改為Delphi方式

答題得分者是:careychen
wayne.jye
一般會員


發表:1
回覆:0
積分:0
註冊:2008-10-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-02-24 19:44:48 IP:60.249.xxx.xxx 訂閱
 請問各位先進:
如何將此C#的宣告,如何改為Delphi方式,在此先行謝謝

public struct SCARD_IO_REQUEST {
public int dwProtocol;
public int cbPciLength;
}

public static extern int SCardTransmit(int hCard,
ref SCARD_IO_REQUEST pioSendPci, byte[] pbSendBuffer, int cbSendLength,
ref SCARD_IO_REQUEST pioRecvPci, ref byte pbRecvBuffer, ref int pcbRecvLength);
------
梧桐
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-02-24 22:48:39 IP:59.126.xxx.xxx 訂閱
HI, 可以這樣用

[code delphi]
SCARD_IO_REQUEST = record
dwProtocol: Integer;
cbPciLength: Integer;
end;

function SCardTransmit(hCard: Integer;
pioSendPci: SCARD_IO_REQUEST;
pbSendBuffer: array of byte;
pioRecvPci: SCARD_IO_REQUEST;
pbRecvBuffer: Byte;
pcbRecvLength: Integer): Integer; external;
[/code]
===================引 用 wayne.jye 文 章===================
請問各位先進:
如何將此C#的宣告,如何改為Delphi方式,在此先行謝謝

public struct SCARD_IO_REQUEST {
public int dwProtocol;
public int cbPciLength;
}

public static extern int SCardTransmit(int hCard,
ref SCARD_IO_REQUEST pioSendPci, byte[] pbSendBuffer, int cbSendLength,
ref SCARD_IO_REQUEST pioRecvPci, ref byte pbRecvBuffer, ref int pcbRecvLength);
------
價值的展現,來自於你用哪一個角度來看待它!!
編輯記錄
careychen 重新編輯於 2009-02-24 22:49:22, 註解 無‧
careychen 重新編輯於 2009-02-24 22:50:24, 註解 無‧
HikaruGo
中階會員


發表:22
回覆:69
積分:88
註冊:2007-12-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-02-25 10:54:34 IP:61.62.xxx.xxx 訂閱
照 WinScard.dll API   int 與 uint 值域是不一樣的
hCard 是 uint
應宣告這樣
public static extern int SCardTransmit(uint hCard,
public static extern int SCardTransmit(int hCard,

但是還是可以運作 hCard會變成負的







C# CODE FOR WinScard.dll
有空可以幫轉一下Delphi ? 這樣比較完整 當成Delphi 的Resource ~~


public struct SCARD_IO_REQUEST
{
public int dwProtocol;
public int cbPciLength;
}
[DllImport("WinScard.dll")]
public static extern int SCardConnect(uint hContext, string szReaderName, uint dwShareMode, uint dwPrefProtocol, ref uint phCard, ref int ActiveProtocol);
[DllImport("WinScard.dll")]
public static extern int SCardDisconnect(uint hCard, int Disposition);
[DllImport("WinScard.dll")]
public static extern int SCardEstablishContext(uint dwScope, int nNotUsed1, int nNotUsed2, out uint phContext);
[DllImport("WinScard.dll")]
public static extern int SCardFreeMemory(uint hContext, string cResourceToFree);
[DllImport("WinScard.dll")]
public static extern int SCardGetAttrib(uint hContext, uint dwAttrId, ref byte[] bytRecvAttr, ref int nRecLen);
[DllImport("WinScard.dll")]
public static extern int SCardListReaderGroups(uint hContext, ref string cGroups, ref int nStringSize);
[DllImport("WinScard.dll")]
public static extern int SCardListReaders(uint hContext, string cGroups, byte[] mszReaders, ref int pcchReaders);
[DllImport("WinScard.dll")]
public static extern int SCardReleaseContext(uint phContext);
[DllImport("WinScard.dll")]
private static extern int SCardStatus(uint hCard, byte[] mszReaders, ref int pcchReaderLen, ref int pdwState, ref int pdwProtocol, byte[] pbAtr, ref int pcbAtrLen);
[DllImport("WinScard.dll")]
public static extern int SCardTransmit(uint hCard, ref SCARD_IO_REQUEST pioSendPci, byte[] pbSendBuffer, int cbSendLength, ref SCARD_IO_REQUEST pioRecvPci, ref byte pbRecvBuffer, ref int pcbRecvLength);

系統時間:2024-04-25 10:26:37
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!