代码请看贴:http://expert.csdn.net/Expert/topic/2597/2597464.xml?temp=5.687892E-03
按照常规,如果过程或者函数的参数是string类型,那么就应该在单元文件中包含sharemem或者采用shortstring和pchar类型来传递。于是我对上面的代码做了修改,可是无论如何,调用过程执行完后关闭主程序就会出现堆栈错误,请问为什么?
按照常规,如果过程或者函数的参数是string类型,那么就应该在单元文件中包含sharemem或者采用shortstring和pchar类型来传递。于是我对上面的代码做了修改,可是无论如何,调用过程执行完后关闭主程序就会出现堆栈错误,请问为什么?
解决方案 »
- 做了一个查询等待画面。大神们进来帮看看,为什么进度条不动
- postmessage是在单独个一个线程中?
- delphi 函数调用问题, 新手, 急 在线等.各位大虾帮帮我
- delphi 向excel表格第一列里动态写入数据 需要判断是否重复
- ACCESS与SQL不在同一台机器上,如何导入数据?
- 有没有3DES-ECB的加密解密算法源代码?
- 报表问题!可不可以将stringgrid的数据形成报表?(200分)
- 新手入门!高手指点!
- 4个三角了,散分1000之2
- 大家好!我刚学DELPHI,问一个很菜得问题,关于MIDI窗体的事!
- 祝你们圣誕快乐!@▲@
- ★★★谁有Speech Engine或ViaVoice的西班牙语版的SDK?500分酬谢!!!★★★
{$R *.res}
{ procedure DllEnterPoint(dwReason: DWORD);far;stdcall;
begin
DLLProc := @DLLEnterPoint;
DllEnterPoint(DLL_PROCESS_ATTACH);
CoInitialize (nil);
end;}
procedure SelectRecord(Source,Target:TDBGridEh;ADOCon:TADOConnection;sqlstr,Key:PChar);stdcall;
var
i,j:integer;
TempADO:TADOQuery;
begin
TempADO:=TADOQuery.Create(nil);
with TempADO do
begin
Connection:=ADOCon;
SQL.Clear;
SQL.Add(sqlstr);
Prepared;
Open;
end;
try
if Source.SelectedRows.Count>0 then
with Source.DataSource.DataSet do
for i:=0 to Source.SelectedRows.Count-1 do
begin
GotoBook(pointer(Source.SelectedRows.items[i]));
if not TempADO.Locate(Key,fieldbyname(Key).Value,[loCaseInsensitive]) then
begin
TempADO.Append;
for j:=0 to TempADO.FieldCount-1 do
TempADO.Fields[j].Value:=Fields[j].Value;;
TempADO.Post;
end else
messagebox(0,PChar('选择的纪录已经存在。'+#13+'主键 '+fieldbyname(key).AsString),PChar('提示'),MB_OK);
end;
finally
TempADO.Active:=false;
TempADO.Free;
end;
end;
//导出过程函数
exports
SelectRecord index 1 name 'SelectRow';
begin
end.