dll 如何编写(200分)

  • 主题发起人 主题发起人 hua11
  • 开始时间 开始时间
H

hua11

Unregistered / Unconfirmed
GUEST, unregistred user!
1:用DLL编写创建表(表的字段数不定)
2:创建查询,查询的条件数不定
3:修改表结构
4:修改记录
先给200 分 如有人回答的清楚我可再加100分
 
DLL理论上也是一个可执行文件,只是被调用时才执行。所以你的要求完全可以按照
一般的Project的方式开发。只是在新建工程时选择DLL方式,并在工程中声明实现
你要求功能的外部函数以便调用。
 
你是不知道如何编写 DLL 还是不知道编写创建表?
如果仅仅不知道如何编写 DLL 的话我可以给你一个例子
 
先感谢诸位
我是想用DLL创建表,我不知道DLL 如何和数据库相连,且表的结构是动态的,给出的
接口应如何写?
 
是用DLL写个创建表的函数
 
>>我是想用DLL创建表,我不知道DLL 如何和数据库相连,
USES BDE,DB,DBTABLES,
然后用动态创建QUERY

 
你完成可以进行动态的建表(根据参数)、而建完后修改就方便了
这时一个简单的取数据例子,只要写在你的DLL工程中就行了
function InsertStringID(DbName,TblName,IDFldName:String;StringIDLength:Word):String;
var
intID:Integer;
strID:String;
tblInsert:TTable;
begin
tblInsert:=TTable.Create(nil);
with tblInsert do
try
if Active then Close;
DatabaseName:=DbName;
TableName:=TblName;
Open;
intID:=RecordCount+1;
strID:=AddZeroToString(IntToStr(intID),StringIDLength);
while Locate(IDFldName,strID,[]) do
begin
Dec(intID);
strID:=AddZeroToString(IntToStr(intID),StringIDLength);
end;
Close;
finally
Free;
end;
Result:=strID;
end;
 
我想是我没表达清楚,占用大家时间,多谢!
这是我第一次做DLL但我想,问题不在如何做DLL而是如何给用户一个外部函数,调用
该函数可创建表
procedure createtable(tablename:string;fieldname1,fieldtype1:string);
但上函数只能生成一个字段的表,如想根据需要生成可任意变化的
字段的表该如何写参数。
谢谢!

 
我机器上没有DELPHI。我想你可以传两个 OleVariant.这是COM对象可以实现的。
procedure createtable(tablename:string;fieldname1,fieldtype1:OleVariant);
再具体的,你可看OleVariant的帮助。
 
写一个参数足够了,就是创建表的 SQL 语句,用 PChar 类型传给 DLL 里的 Query,
在 DLL 里执行 Query 即可。
 
如果直接传SQL语句,这个函数就太不方便了,看看有没有其他的方法
OleVariant.没有见过,回去试试
 
能否考虑传数组进去,数组每个元素都有个初值,
在Dll里检测数组的值是否改变了,如改变了,侧说明
是要建立的字段.
 
我在编写调用DLL的程序时,先是报错,所需要的库不存在,后我把DLL库可要用该库的
工程放在一个目录下又报错与系统连接的设备不能正常运转
我用一个单元声明DLL如下
后我在要用该函数的地方引用该单元
procedure circle(acanvas:tcanvas;x,y,r:integer);
procedure linebtw(acanvas:tcanvas;x1,y1,x2,y2:integer);
implementation
const
libname='dllexample';
procedure circle;external libname;
procedure linebtw; external libname;
 
DLL程序肯定没问题,是例程,我在自己的程序中做了如下引用,但报错
‘找不到运行次应用程序所需的某个库文件’
function DoubleString (S: string; Separator: Char): string;
stdcall; external 'FIRSTDLL.DLL';
 
附加功能 将问题提前
 
找一本参考书
 
我在写dll时遇到同样问题,调用dll的程序在执行时报错,‘链接文件..到不存在的输出..dll:..‘
关注!!!
 
我想是不是可以用动态数组解决,
procedure createtable(tablename:string;fieldRecord:Array of MyRecord);

MyRecord = Record
FieldName: String;
FieldType: String;
end;
在创建时遍历一下动态数组,读出创建
或者使用TStringList类型,把格式订得死一点,一行放FieldName,一行放FieldType
也行
 
多人接受答案了。
 
后退
顶部