在代码环境下运行程序时 提示
---------------------------
Debugger Exception Notification
---------------------------
Project ABC.exe raised exception class EAccessViolation with message 'Access violation at address 77C12A16 in module 'msvcrt.dll'. Read of address 30313048'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
可是如果编译成.EXE 程序后 再运行 都正常 这是为什么啊?
解决方案 »
- 如何替换一个exe中资源文件中的一个资源,比如某个AVI
- ???请问什么报表自带的能导出Excel、pdf、html、CSV文件、文本文件、图像文件,以前用过,忘了是什么报表了???
- RAV中怎么总是显示一条数据?急,在线!
- 多层开发如何从服务端断开某个用户的连接?
- 一个关于qtintf.Dll动态连接库的问题
- 请进来聊聊,关于第三方控件的安装方法。。。
- 利用DELPHI中的MEDIAPLAYER与PANNEL控件播放视频文件,如何实现视频全屏
- Delphi 定时器的使用
- help
- 看过《深入Delphi网络编程》请进!在线等侯!
- 单据修改状态下,在dbgrid里增加记录,保存后发现没有保存到数据库,求救?
- 针对com口处理的dll编写问题!!!
ShareMem,
这个单元试试看,dll需要blmm的内存管理模块。你那点估计是字符串操作的问题
这点我有点搞不明白
Function InsertOutputInfo(ckdh :PChar ; outMs :PChar):Integer;export;stdcall;far;external DllName name 'InsertOutputInfo';
procedure Tfrm_postoyb.RK_Into_yb;
var
DataBuffer :pchar;
suc : integer;
s_str :String;
begin
try
GetMem(DataBuffer,2500);
try adoGetdata.Close;
adoGetdata.SQL.Clear;
adoGetdata.SQL.Add(' SELECT ABC FROM TABLEA ');
adoGetdata.open;
//写入
while not adoGetdata.Eof do
begin
//写入
suc := -1;
suc := InsertImputInfo(Pchar(adoGetdata.FieldByName('ABC').AsString),DataBuffer); //执行到这里 再往下就提示 那个错误
if suc=0 then
begin
Memo1.Lines.Add('返回信息: '+ strpas(DataBuffer));
updateSQL(adoGetdata.fieldbyname('ABC').AsString,1);
end else
begin
abort;
end;
adoGetdata.next;
end;
except
Memo1.Lines.Add('失败信息:'+ strpas(DataBuffer));
adoGetdata.next;
end;
finally
FreeMem(DataBuffer,1500);
end;
end;
执行到这里 再往下就提示 那个错误
FreeMem(DataBuffer,1500);
后面的数字不一样也可以吗?