|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2003/12/9 10:49:21 |
标题: |
|
加入我的收藏 |
楼主: |
我写的程序怎么这么大?才完成三分之一就有1.5M 怎么办?是不是要把一部份程序放到.dll里?
我试了,有一部份内容,我放在.exe里一切正常,按.dll的要求放在.dll里,编译通过,但运行的时候出现莫名其妙的错误,搞得我不敢用了!
----------------------------------------------
- |
作者: |
|
2003/12/9 10:56:28 |
1楼: |
不太大。。。
----------------------------------------------
=^@^=
|
作者: |
|
2003/12/9 11:18:35 |
2楼: |
可是我怕整个完成后有6-7M,有点不好,
用.dll又怕出现莫名其妙的错误
----------------------------------------------
-
|
作者: |
|
2003/12/9 15:54:36 |
4楼: |
我写了一个tjmx.dll如下 ......................................... uses SysUtils, Classes, Windows, Forms, ok_m in 'ok_m.pas', data_mod in 'data_mod.pas';
{$R *.res}
Procedure tjmx_dll;stdcall; var xingbie : string; begin if Form1.Edit1.Text ='then application.MessageBox('请填写名星姓名资料!','提示') else if Form1.Edit2.Text ='then application.MessageBox('请填写名星代码资料!','提示') else if Form1.Edit3.Text ='then application.MessageBox('请指定明星照片位置!','提示') else if FileExists(Form1.Edit3.Text)= False then application.MessageBox('您所指定的明星照片不存在!','提示') else begin if Form1.CheckBox1.Checked = True then xingbie :='男' else xingbie :='女'; if ExtractFilePath(Form1.Edit3.Text) <> ExtractFileDir(Application.Exename)+'\data\photo\' then begin if CopyFile(PChar(Form1.Edit3.Text),PChar(ExtractFileDir(Application.Exename)+'\data\photo\'+ExtractFileName(Form1.Edit3.Text)),True) <> False then begin Data_Mod1.ADOQuery1.Close; Data_Mod1.ADOQuery1.SQL.Clear; Data_Mod1.ADOQuery1.SQL.Add('Insert into mingxing (姓名,性别,代码,照片,备注) values ("'+Form1.Edit1.Text+'","'+xingbie+'","'+Form1.Edit2.Text+'","'+ExtractFileDir(Application.Exename)+'\data\photo\'+ExtractFileName(Form1.Edit3.Text)+'","'+ Form1.Edit4.Text+'")'); if Data_Mod1.ADOQuery1.ExecSQL <> 1 then begin application.MessageBox('添加数据出错!请稍后重新添加!','提示'); Deletefile(Pchar(ExtractFileDir(Application.Exename)+'\data\photo\'+ExtractFileName(Form1.Edit3.Text))); end; Data_Mod1.ADOTable1.Active := False; Data_Mod1.ADOTable1.Active := True; Form1.Edit1.Text :='; Form1.Checkbox1.Checked := True; Form1.Checkbox2.Checked := False; Form1.Edit2.Text :='; Form1.Edit3.Text :='; Form1.Edit4.Text :='; end else application.MessageBox('照片文件已存在,添加数据出错!请先修改照片文件名再重新添加数据!','提示'); end else if ExtractFilePath(Form1.Edit3.Text) = ExtractFileDir(Application.Exename)+'\data\photo\' then begin Data_Mod1.ADOQuery1.Close; Data_Mod1.ADOQuery1.SQL.Clear; Data_Mod1.ADOQuery1.SQL.Add('Insert into mingxing (姓名,性别,代码,照片,备注) values ("'+Form1.Edit1.Text+'","'+xingbie+'","'+Form1.Edit2.Text+'","'+ExtractFileDir(Application.Exename)+'\data\photo\'+ExtractFileName(Form1.Edit3.Text)+'","'+ Form1.Edit4.Text+'")'); if Data_Mod1.ADOQuery1.ExecSQL <> 1 then application.MessageBox('添加数据出错!请稍后重新添加!','提示'); Data_Mod1.ADOTable1.Active := False; Data_Mod1.ADOTable1.Active := True; {Data_Mod1.ADOTable1.Refresh ; } {Form1.DBGrid1.Refresh; } Form1.Edit1.Text :='; Form1.Checkbox1.Checked := True; Form1.Checkbox2.Checked := False; Form1.Edit2.Text :='; Form1.Edit3.Text :='; Form1.Edit4.Text :='; end; end; end;
exports tjmx_dll ;
begin end;
编译通过
在程序里调用,编译通过,但执行EXE时出错 "Access violation at address 005AD36F in module 'tjmx.dll'.Read of address 00000348.
不知为什么?请各位指教
----------------------------------------------
-
|
作者: |
|
2003/12/9 16:01:48 |
6楼: |
"Access violation at address 005AD36F in module 'tjmx.dll'.Read of address 00000348. 时CPU信息,看不懂!
----------------------------------------------
-
|
作者: |
|
2003/12/9 16:07:38 |
7楼: |
以下是在主程序里调用dll
function tjmx_dll:string;stdcall; external 'tjmx.dll';
.................
procedure TForm1.BitBtn1Click(Sender: TObject); begin tjmx_dll; end;
----------------------------------------------
-
|
作者: |
bios (阿贡) |
★☆☆☆☆ |
-
|
盒子中级会员 |
|
2003/12/9 16:42:43 |
8楼: |
怎么会这样 看不出错误?
----------------------------------------------
|
作者: |
|
2003/12/9 17:16:15 |
9楼: |
是呀,所以我说容易出现莫名其妙的问题
----------------------------------------------
-
|
作者: |
|
2003/12/9 17:46:58 |
11楼: |
Data_Mod1创建了,在data_mod.pas里面,要不,也编译不过!
----------------------------------------------
-
|
作者: |
|
2003/12/9 17:49:18 |
12楼: |
我说的是这种创建:
Data_Mod1 := TData_Mod1.Create(Application);
----------------------------------------------
米软科技有限公司http://www.szmesoft.com
|
作者: |
|
2003/12/10 9:27:22 |
13楼: |
更不行,一进去就死机!
有哪位高手能帮我解决这个问题,谢!
----------------------------------------------
-
|
作者: |
catanx (catanx) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2003/12/10 9:45:36 |
14楼: |
也许是和别的dll用冲突
----------------------------------------------
我常逛的一个电影站,写写程序看看电影,不要太累了,会死人的:) www.ddvan.com 很有特色哦,自己发觉吧。
|
作者: |
|
2003/12/11 13:26:07 |
15楼: |
解决不了。。。。。我想哭!
----------------------------------------------
-
|
作者: |
|
2003/12/11 17:06:06 |
17楼: |
还是不行!同样的错误!
----------------------------------------------
-
|
作者: |
bios (阿贡) |
★☆☆☆☆ |
-
|
盒子中级会员 |
|
2003/12/11 17:14:08 |
18楼: |
实在是无能为力 偶也为你着急呀!
----------------------------------------------
|
|