起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: 买猪蹄

【结贴】想转一份Dll文件,可是老是出错[请求]**

[复制链接]
发表于 2007-10-29 10:48:24 | 显示全部楼层
能不能帮忙直接导入,把成功后的资源包给我们呢,就当实例让我们学习一下。。。我们一直搞不定
回复 支持 反对

使用道具 举报

发表于 2007-10-29 11:02:09 | 显示全部楼层
控件直接配置那个config文件。添加dll和bpl。x3例子也在附件里面。

福州振源.rar

191.27 KB, 下载次数: 73

回复 支持 反对

使用道具 举报

发表于 2007-10-29 11:36:37 | 显示全部楼层
如何放到服务器端。。。文档发一个。。。
回复 支持 反对

使用道具 举报

发表于 2007-10-29 13:55:44 | 显示全部楼层
文档的第六章
-------------------------------------------
第六章 外部控件的发布
假定有一个第三方控件AA.ocx,这个控件的运行依赖于BB.dll、CC.dll文件,利用Importer工具生成了AA.dll、AA.bpl文件。如何把这个第三方控件发布到系统服务器上,以支持客户端自动下载更新这个控件。
利用系统服务器的NewVersion下载机制可以完成,具体操作步骤如下:
1. 运行X3 安装制作工具,选择“文件”页
2. 在资源下,分别添加AA.ocx、BB.dll、CC.dll、AA.bpl文件(缺省这些文件复制到X3 Server\client\NewVersion\install目录);
3. 在资源\Lib下,添加AA.dll文件(缺省这个文件复制到X3 Server\client\NewVersion\install\Lib目录);
4. 修改X3 Server\client\NewVersion\install\Config.xml文件,以引用AA.bpl和AA.dll文件;
5. 修改X3 Server\client\NewVersion\install\regocx.bat文件,添加
%SystemRoot%\System32\Regsvr32.exe /s "%appdata%\justep\x3client\AA.ocx"
6. 选择“制作”页,点击“生成下载文件”
提示 拷贝Business.exe到X3 Server\client\NewVersion\install目录下,如果正常运行,说明配置正确的,如果不正常,说明缺少必须的文件,或者配置不正确。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-29 17:01:38 | 显示全部楼层
直接从字段读取二进制流放在TmemoryStream然后调用Scada5min.exchange()会导致数据丢失和错误:
  TBlobField(SCADAQry.FieldByName('MinVal')).SaveToStream(Hexs);
  Minut5Str := Scada5min.exchange(Hexs);
这样写就出问题了;



还得这样:
  TBlobField(SCADAQry.FieldByName('MinVal')).SaveToStream(Hexs);
  Hexs.SaveToFile('C:\1.txt');
  Hexs.Free ;
  Hexs := TmemoryStream.Create ;
  Hexs.LoadFromFile('C:\1.txt');
  Minut5Str := Scada5min.exchange(Hexs);


这是哪里出问题了,难道都要偷偷创建一个文件吗?
回复 支持 反对

使用道具 举报

发表于 2007-10-30 09:10:31 | 显示全部楼层
你可以在调用SaveToStream(Hexs)之前创建一下
Hexs := TmemoryStream.Create 试试看。
回复 支持 反对

使用道具 举报

发表于 2007-10-30 10:32:18 | 显示全部楼层
SaveToStream(Hexs) 之前是有Hexs := TmemoryStream.Create 的,只是在这里没有写出来,现在就是这个总是不能直接调用Scada5min.exchange()来转换,转换后老是丢数据
回复 支持 反对

使用道具 举报

发表于 2007-10-30 15:05:05 | 显示全部楼层
那就看看您完整的代码吧。Hexs是什么类型的?TStream还是TMemoryStream?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-30 15:32:32 | 显示全部楼层
这个就是完整代码,请帮忙看一下
procedure TMainForm.BitBtn1Click(Sender: TObject);
var
  SCADAQry : TQuery ;
  TableName : string ;
  BujianID : Integer ;
  HexS : TmemoryStream ;
  Minut5Str : String ;
begin
  Hexs := TmemoryStream.Create ;
  LB5Min.Clear ;
  memo1.Clear ;
  TableName := 'Yc5minute' + SysUtils.FormatDateTime('yyyymmdd',DTP.DateTime );
  BujianID := SysUtils.StrToInt(ED_CZ.Text);
  SCADAQry := TQuery.Create(nil);
  try
  SCADAQry.ConnectionString:='DATABASEURL=Biz:\SCADAKJ\SCADA_lishiSJK.Database';
  SCADAQry.CommandText:=SysUtils.Format(
   'Select MinVal From %s where bujianleixingID = 22 and bujiancanshuID = 2 and bujianID = %d ',[TableName,BujianID]);
  SCADAQry.Open;
  TBlobField(SCADAQry.FieldByName('MinVal')).SaveToStream(Hexs);
  Hexs.SaveToFile(sysutils.GetEnvironmentVariable('appdata') + '\Justep\X3Client\Scada5Min.tmp');  //迫不得已偷偷创建的文件
  Hexs.Free ;
  Hexs := TmemoryStream.Create ;
  Hexs.LoadFromFile(sysutils.GetEnvironmentVariable('appdata')+ '\Justep\X3Client\Scada5Min.tmp');
  Minut5Str := Scada5min.exchange(Hexs);
  memo1.Lines.Text:=Minut5Str;
  StrToLB(Minut5Str);
  ED_STR.Text := Minut5Str ;
  ED_Count.Text := SysUtils.IntToStr(LB5Min.Count) ;
  finally
  SCADAQry.Free;
  HexS.Free ;
  end;
end;
回复 支持 反对

使用道具 举报

发表于 2007-10-30 16:50:59 | 显示全部楼层
可以在SaveToStream之前(/之后?)用SetSize(SCADAQry.FieldByName('MinVal')).GetSize)来赋值一下看看
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-6-29 12:20 , Processed in 0.043977 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表