DLL文件内容:
library hos_function;
... ...
uses
SysUtils,
Classes;
function GetNumFromStr(const str: String;const hex:boolean=false):String;stdcall ;
... ...
end;
exports
GetNumFromStr ;//index 1 name 'get' resident;{$R *.res}begin
end.调用DLL文件的内容:
... ...
public
end;
function GetNumFromStr(const str: String;const hex:boolean=false): String;stdcall;external 'hos_function.dll' ;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage( GetNumFromStr(self.Edit1.Text)) ;
end;
end.
问题:
联系调用时,DLL中的函数可以执行,但总要报“access violation at address 00232347 in module "hos_function.all".
read of address ooggd698”的错误!
求解决办法!!
library hos_function;
... ...
uses
SysUtils,
Classes;
function GetNumFromStr(const str: String;const hex:boolean=false):String;stdcall ;
... ...
end;
exports
GetNumFromStr ;//index 1 name 'get' resident;{$R *.res}begin
end.调用DLL文件的内容:
... ...
public
end;
function GetNumFromStr(const str: String;const hex:boolean=false): String;stdcall;external 'hos_function.dll' ;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage( GetNumFromStr(self.Edit1.Text)) ;
end;
end.
问题:
联系调用时,DLL中的函数可以执行,但总要报“access violation at address 00232347 in module "hos_function.all".
read of address ooggd698”的错误!
求解决办法!!
解决方案 »
- 那个DBGrid的增强控件叫什么呀?
- 其它窗口调用Data Module,总说Missing Connection or ConnectionString,但
- 调查一下,大家在做数据库系统的开发时,比如 ERP,MIS等,都经常用那些设计模式?欢迎经验交流
- combobox的一个查询数据库的问题,请各位看看
- 改版后丢失的未解之迷:~~ 获取打印机的状态并控制打印机,问题解决必高分相送!!!
- 怎么把文件夹(包括子文件夹)里的所有文件拷贝到指定地点(即复制整个文件夹)???
- 急,在用delphi 5 自带的安装制作工具制作安装包时,怎么把一个文件写在c盘跟目录下
- 靠,又是倒分得。
- 调用一个DOS程序后如何获得此程序的返回信息?
- Raize中的TRzTrayIcon怎么没有OnClick事件?
- 有无人可以解决QUICKREPORT的LABEL的中文字换行出现错码的问题?
- 关于函数调用,求助
//建议这样试试看
var str: String;
str := GetNumFromStr(self.Edit1.Text);
showmessage(str);
改为PChar指针,内部可以使用String,接口一定不行,
改为
function GetNumFromStr(str: PChar;const hex:boolean=false):PChar;stdcall ;
搂主的错误估计不在这里。为什么不调试一下呢?
function GetNumFromStr(const str: String;const hex:boolean=false):string;stdcall ;
var
i:integer;
charset:Set of char;
begin
if hex then
charset:=['0'..'9','a'..'f','A'..'F','.']
else
charset:=['0'..'9','.'];
for i := 1 to Length(str) do
begin
if (str[i] in charset) then
result:= result + uppercase(str[i]); end;
end;
返回值改为PCHAR后,报" result:= result + uppercase(str[i]);"的错误为“Incompatible types: 'String' and 'PChar'”我该怎么修改这个函数!
begin
....// do some code to initialize p
s:=string(p)// type convertionend;
但是,在关闭窗体时,又报内存地址错误!
为什么?
各位大哥帮帮忙!!!
...
这一行里如果str是string 类型的话下标是:0----->length(str)-1,(如果你的string是AnisString而不是ShortString)所以可能里面的str[i]访问越界了吧.
改为PChar指针,内部可以使用String,接口一定不行,
改为
function GetNumFromStr(str: PChar;const hex:boolean=false):PChar;stdcall ;