vc中是如下定义的。
typedef struct tagINVOICEDATA {
char szFpCryptograph[88];
char szFpEnVersion[8];
char szFpCode[16];
char szFpSeriaoNo[16];
char szFpDate[16];
char szFpBuyerTaxNo[16];
char szFpSellerTaxNo[16];
char szFpSum[32];
char szFpTaxRate[16];
char szFpTax[32];
char szFpTotal[32];
char szFpImage[224];
char szFpCodePrinted[16];
char szFpSNPrinted[16];
} INVOICEDATA, *PINVOICEDATA;请问下delphi下怎样定义tagINVOICEDATA ???
typedef struct tagINVOICEDATA {
char szFpCryptograph[88];
char szFpEnVersion[8];
char szFpCode[16];
char szFpSeriaoNo[16];
char szFpDate[16];
char szFpBuyerTaxNo[16];
char szFpSellerTaxNo[16];
char szFpSum[32];
char szFpTaxRate[16];
char szFpTax[32];
char szFpTotal[32];
char szFpImage[224];
char szFpCodePrinted[16];
char szFpSNPrinted[16];
} INVOICEDATA, *PINVOICEDATA;请问下delphi下怎样定义tagINVOICEDATA ???
解决方案 »
- 用WebBrowser进行百度搜索时遇到的问题
- 一个奇怪的设置窗体启动问题。
- 关于存储过程中的变量和参数
- 将字符型转换成int64的函数怎么写? 用
- 线程问题,一直得到消息号15.
- 请问怎样"固定"取得dbrgid中所选择的当前记录行中的某个字段值。(不能选其他字段)
- fastreport合计?来看看把
- 关于wininet(InternetOpen、InternetConnect等函数)的问题
- 关于显示数据库记录的问题!用stringgrid或者drowstring能实现吗?
- 制作ADO程序,如何发布?
- ********************************如何使用delphi控制光盘的刻录?
- 消息框中按键显示中文的问题?
tagINVOICEDATA = record
szFpCryptograph: array [0..87] of char;
szFpEnVersion: array [0..7] of char;
.... { 后面的定义类似 }
end;
INVOICEDATA = tagINVOICEDATA;
PINVOICEDATA = ^tagINVOICEDATA;
tagINVOICEDATA = record
szFpCryptograph: array [0..87] of char;
szFpEnVersion: array [0..7] of char;
.... { 后面的定义类似 }
end;
INVOICEDATA = tagINVOICEDATA;
PINVOICEDATA = ^tagINVOICEDATA;
但现在INVOICEDATA = tagINVOICEDATA 这一句有问题
提示没有定义的变量tagINVOICEDATA
还有在vc中定义的函数。int WINAPI FpGetNewPage(PINVOICEDATA lpFpBuffer);PINVOICEDATA 就是上面写的。在delphi中应该怎样调用 。
Function FpGetNewPage(lpFpBuffer:record) ;StdCall external 'scanreco.dll' ;
这样不行,
应该怎样写
……
PINVOICEDATA = ^tagINVOICEDATA;function FpGetNewPage(lpFpBuffer: PINVOICEDATA): integer; stdcall; external 'scanreco.dll' ;
procedure Tfrm_query.Button1Click(Sender: TObject);
var filename: String ;
str12:Pchar ;
aa:Integer ;
begin OpenDialog1.Execute ;filename := OpenDialog1.FileName ;application.MessageBox(pchar(filename),'a',0);Str12 := pchar(filename) ;n.szFpImage := Str12 ;aa := FpGetNewPage(n) ;end;那现在我要用这个函数FpGetNewPage,函数中的参数应该写哪一个??
而且怎样把它的child,szFpImage 的赋值为str12
注意str12是pchar,而szFpImage 是array
如果 n 是 PINVOICEDATA,那么应该是 n^.szFpImage := Str12; 这里还要假设pchar 能够赋值给 array,而且 n 是个指针,它所指向的内存你分配过吗? 如果没有,程序肯定会出现 EAccessViolation 异常!唉,想得你的分可真难!
String:=PChar(@Array[0]);
为什么delphi上赋值给array不对
原码如下:
for bb := 1 to length(filename) do
begin
n.szFpImage[bb] := pchar(copy(filename,bb,1));
end;
szFpCryptograph:String[88];
szFpEnVersion:String[8];
szFpCode:String[16];
szFpSeriaoNo:String[16];
szFpDate:String[16];
szFpBuyerTaxNo:String[16];
szFpSellerTaxNo:String[16];
szFpSum:String[32];
szFpTaxRate:String[16];
szFpTax:String[32];
szFpTotal:String[32];
szFpImage:String[224];
szFpCodePrinted:String[16];
szFpSNPrinted:String[16];
INVOICEDATA:Pointer;
end;
PINVOICEDATA = ^tagINVOICEDATA;使用过程中,把一个PINVOICEDATA结构传给tagINVOICEDATA.INVOICEDATA就行了。
begin
n.szFpImage[bb] := filename[bb];
end;
这样写不行,pchar与char
现在我用 StrPCopy(n.szFpImage[bb],copy(filename,bb+1,1)) ;值成功传入。
但是调用函数时,不提示出错,
但返回的值根本不对。
在delphi中用pchar传入是不是要分配地址?
要怎样分配
var n: INVOICEDATA照 你这样说,
我在delphi中根本不需要对 INVOICEDATA 分配地址??