想使DELPHI程序和ASP程序相结合,请大家提供一下思路! ( 积分: 100 )

  • 主题发起人 主题发起人 firewill
  • 开始时间 开始时间
F

firewill

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾:
现在我想使DELPHI程序和ASP程序相结合。比如,从DELPHI里输入某些数据,能够将其发送给网站上的ASP程序进行处理,处理结束后,ASP程序的执行结果又可以显示在DELPHI的程序中。并且ASP程序的执行结果是查询数据库的结果,要在DELPHI中的DBGRID中显示,该怎么处理呢?
我第一次涉及网络编程,摸不着门,请大家提供一下解决思路,多谢!
 
各位大虾:
现在我想使DELPHI程序和ASP程序相结合。比如,从DELPHI里输入某些数据,能够将其发送给网站上的ASP程序进行处理,处理结束后,ASP程序的执行结果又可以显示在DELPHI的程序中。并且ASP程序的执行结果是查询数据库的结果,要在DELPHI中的DBGRID中显示,该怎么处理呢?
我第一次涉及网络编程,摸不着门,请大家提供一下解决思路,多谢!
 
我看见indy里有一个http控件,是不是实现这类功能的啊?[:)]
 
有本书 是台湾那个谁李维写的,蛮好.推荐你看看就明白了.
Delphi 5.x 分布式多层应用 电子商务篇》 李维著
 
我觉得还是用D7提供的IntraWeb设计来得简捷方便:
1、数据库的联接和应用服务层可以一气呵成,不必设计客户端程序
2、直接用IE作为客户端程序,免去升级维护的烦恼
。。。
 
===============================
来自:ggabcdef, 时间:2005-11-9 10:19:12, ID:3259477
我觉得还是用D7提供的IntraWeb设计来得简捷方便:
1、数据库的联接和应用服务层可以一气呵成,不必设计客户端程序
2、直接用IE作为客户端程序,免去升级维护的烦恼
。。。
================================

多谢ggabcdef!但是因为用的是ASP的虚拟主机,不能用IntraWeb。而且由于某些原因,也不能用IE作为客户端。
 
idhttp可以
 
运行我的asp程序的是一个租用的虚拟主机,只能运行一般的asp程序,我没有权限对它进行任何配置。
如果让返回的数据能在DBGRID中显示,那么ASP程序应该返回什么类型的数据呢?是返回一个结果集呢,还是返回字符,在delph里再进行处理放进dbgrid?有没有这方面的DEMO呢?
 
我试过,找不到任何方法连接到网上的 mdb数据库啊。 sqlserver 就可以。但 sqlserver的服务空间又比较贵。请大家讨论一下吧。
 
你写一个 asp不就可以了
然后 用 delphi 提交 页面
俺 这么 做过
 
procedure TFrm_main.login(URL, TitleType, Title, webData: OleVariant);
var
Flags, TargetFrameName, PostData, Headers: OleVariant;
str: string;
l, i: integer;
begin
Panel_Hint.Visible := true;

str := 'B1=%CC%E1%BD%BB';
str := str + '&TType=';
str := str + HTTPEncode(TitleType);
str := str + '&TTitle=';
str := str + HTTPEncode(Title);
str := str + '&SMemo=';
str := str + HTTPEncode(webData);
URL := 'http://localhost/web/toAccess.asp';
l := length(str);
if l > 0 then
begin
PostData := VarArrayCreate([0, l - 1], varByte);
for i := 1 to l do
begin
PostData[i - 1] := ord(str);
end;
end;

Flags := '0';
TargetFrameName := '';
Headers := 'Content-Type: application/x-www-form-urlencoded'#13;
WebBrowser_up.Navigate2(URL, Flags, TargetFrameName, PostData, Headers);
end;




procedure TFrm_main.WebBrowser_upNavigateComplete2(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
DoC: IHTMLDocument2;
str, id, fn: string;
j: integer;
begin
Panel_Hint.Visible := false;
Doc := WebBrowser_up.Document as IHTMLDocument2;
str := doc.body.outerText;
j := pos(#09, WebBrowser_up.hint);
if j > 0 then
begin
id := copy(WebBrowser_up.hint, 1, j - 1);
fn := copy(WebBrowser_up.hint, j + 1, MaxInt);
if sametext(trim(id + '验证通过'), trim(str)) then
begin
WillMark := true;
ShockwaveFlash1.Movie := fn;
ShockwaveFlash1.Play;
exit;
end;
end;

ShowMessage(fn + str);
//
end;

Post.asp〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉
<html>

<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>分类</title>
</head>

<body>

<form method="POST" action="toAccess.asp">
<p><input type="submit" value="提交" name="B1"><input type="reset" value="全部重写" name="B2"></p>
<p>用户</p>
<p><input type="text" name="TType" size="20"></p>
<p>密码</p>
<p><input type="text" name="TTitle" size="20"></p>
<p>ID</p>
<p><input type="text" name="SMemo" size="20"></p>
<p> </p>
<p> </p>
<p> </p>
</form>

</body>

</html>

/////////////////////
toAccess.asp

<html>
<head>
<title></title>
</head>
<body>

<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(".") & "/webserver.mdb;"
set rs=server.createobject("adodb.recordset")
rs.open "select * from users,file where users.userID=file.userID and users.userID='"+request.form("TType")+"' and users.pass='"+request.form("TTitle")+"' and file.fileID='"+request.form("SMemo")+"'",objConn,1,1
'response.write "select * from users,file where users.userID=file.userID and users.userID='"+request.form("TType")+"' and users.pass='"+request.form("TTitle")+"' and file.fileID='"+request.form("SMemo")+"'"
if rs.eof and rs.bof then
response.write "验证未通过"
else
response.write request.form("SMemo")+"验证通过"
end if
Set rs = Nothing
Set objConn = Nothing
%>
</body>
</html>
 
用ASP在服务器上创建XML文件,然后在客户端取XML文件,从而实现数据交换.
 
多人接受答案了。
 
后退
顶部