IntraWeb中的Session可以保存对象吗?(100分)

  • 主题发起人 主题发起人 akosboy
  • 开始时间 开始时间
A

akosboy

Unregistered / Unconfirmed
GUEST, unregistred user!
我看了Session的例子都是保存Integer/String之类的,想问问能不能保存一个对象,比如WordDocument之类的。这样的话就可以保存用户对文档的操作状态了。
 
斑竹或者哪位达人帮帮我吧,分实在不多,只能给100分了[:)]
 
示例代码:
定义SESSION×××××××××××××××××××××××××

TUserSession = class(TComponent)
public
mpObj:CMapXLayer;
constructor Create(AOwner: TComponent); override;
end;
赋值×××××××××××××××××××××××××××××××××××××
var map1:TMap;
procedure TIWForm1.IWButton1Click(Sender: TObject);
begin
map1:=TMap.Create(nil);
map1.Layers.Add('USA',1);
UserSession.mpObj:=map1;
end;
调用※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
procedure TIWForm1.IWButton2Click(Sender: TObject);
begin
webapplication.ShowMessage(UserSession.mpObj.title);
end;
这个时候就提示错误:对象没有连接到服务器……
 
Tmap是什么东西?它是否以com/ole方式访问了某个服务程序?
Intraweb的session的保存使用了特殊的方法(为了省空间吧),但在恢复对对象的状态
的时候,有些com/ole对象的状态恢复不正常,不知道是谁的问题。比如,通过
TDComconnection访问中间层就有你这样的问题,虽然TDComconnection的connected为true
但实际已经断开。我对待这个问题的办法是在窗口的onAfterRender事件里主动断开(其实
在此期间,没有保持连接的必要),在每次访问之前再连接。
但愿有些帮助.
 
TMap是GIS的一个平台(MAPINFO/MAPX)的开发控件;
每次开始连接后因为用户操作一个地图的工程,所以要对用户的状态记录,比如当前地图的中心点坐标,显示范围等等;而且,如果一个用户没有退出程序(IE)而每次操作都要重新加载地图工程的话,速度会造成很多大影响。所以我现在就想将该对象加载工程后存储进SESSION中,但是还是不起作用……,你看如果把该对象放进ASP的SESSION中行吗?我所知单纯的ASP里可以保存该对象的,但是我不知道怎样在ASP的SESSION和INTRAWEB中交互?
 
在ASP的SESSION和INTRAWEB中交互,
好象不行
 
>>怎样在ASP的SESSION和INTRAWEB中交互?
不可能交互!
-------------------------
将对象保存在stream里如何?
我觉得intraweb的session已经非常灵活了,目前唯一的问题就是对com对象的状态恢复
有点问题。但是可以略微变通一下。
比如,tmap对象装载一个地图很好资源,又需要它重新连接服务器,那么将地图保存在stream里,让tmap从stream里加载行不行?
其实还有别的办法,你有没有试过在session仅仅保存一个指针?我没有试过,但我认为
值的做个试验。
 
忘了问你的版本号了。
也许6.x没有这些问题。
 
进来听听。

to yeskert1:
>TDComconnection访问中间层就有你这样的问题,虽然TDComconnection的connected为true
>但实际已经断开。
确实如此。很奇怪。当时我还以为IW不能用在三层中呢。
 
很遗憾,我刚刚接触intraweb ,就碰到一个棘手的问题:

如何在intraweb生成的网页中来调用word Application,同时将数据库中的

记录写进word 文档中。
 
怎么不可以?
DataModule不就是保存在session中吗?
 
1:从地图可以生成图片,从图片可不能返回地图的状态,所以,用stream保存是不可取的,因为每次操作的地图区域可能显示范围、显示内容都不一样,所以无法根据图片返回地图的状态,除非将每次操作的相关数据保存在Session中,重新连接后在恢复,但是,但是,每次load map project的时间~用户估计会发疯的[:(]
2:DataModule我不知道是不是状态连接的COM,况且,IntraWeb对com/ole也只是支持一部分的状态连接。
3:我用的是D7自带的IntraWeb
4:其实word application的问题和我问的问题差不多,都是需要保存用户的操作状态。不过我想是不是通过在客户端建立一个word可以解决?但是地图问题就不行了,因为打开这种格式的地图文件需要平台的支持,而且地图文件都比较大。
5:关于指针~我用Delphi时间才1月,还没有这方面的概念:),请多指教
谢谢各位踊跃讨论,这个问题不解决,我的这个项目就完了,呜呜呜

 
这个问题看来没有人能解决了,SIGH[?]
 
指针也不行!就是全局变量都不行!我刚刚试验过。
此时服务程序“以为还连着呢”,com对象也“以为连着呢”,但不知道为何断开了。
既然ADO能正常工作,其他的也应该可以。这一定是个bug,6.x应该修正了吧?
(6.x被我卸载了,无法试验。)
搂主不要sigh,再想想办法,比如:试试6.x。
 
我用的是D7自带的IntraWeb 6.0...................命苦,今天我又研究了.net一天,也有不少麻烦。看来只能用asp做了
 
后退
顶部