谁用DELPHI做出了在internet上发布的个人主页(租用虚拟主机服务空间),另外开贴送分100! (100分)

  • 主题发起人 主题发起人 蝙蝠
  • 开始时间 开始时间
请大家注意这最后一段:
“为了让最终客户少花钱,最终采用了纯粹的Delphi开发技术,否则那些应用软件
或许可可真要花不少钱。
整个平台主要包括认证服务器(主要完成客户认证、多台负载平衡、动态容错等
服务)、应用服务器(应用组件池、提供对外的组件服务)、接口模块(直接
ISAPI编程或Web Service)。
不使用asp那些脚本语言的原因在于我们希望开发的是B/S结构的软件产品,使用
asp这样的东西软件根本没有办法卖。“
什么是“纯粹的Delphi开发技术“?
 
DELPHI开发Web程序常见问题
Web程序开发对开发工具提出了极大挑战,面对用户的众多需求,许多公司推出一大堆开发平台:开发桌面应用程序和C/S程序的,开发中间件的,开发Web服务器的。这造成程序员面对一大堆工具无从下手。
DELPHI和其他开发工具不同,因为它是一个开放系统,只要灵活使用一些控件,即可开发出各种类型的系统,不论N-Tie程序、多线程程序、分布计算程序(包括DCOM和CORBAR)、TCP程序、Web程序、 ActiveX、中间件、推程序(Push),甚至你可以用它来写汇编程序。
DELPHI将ISAPI/NSAPI/CGI/WCGI等巧妙地封装成一个类,用户只要在编译时选择编译结果,就可以得到不同的系统。
在DELPHI4中Inprise公司进一步加强了对Web程序开发的支持,可以开发出更好更强的系统。以下是开发Web应用程序中的几个常见问题,可以供大家参考。如果没有特别申明,则表示程序运行于DELPHI 4下。
如何从Web Server Application返回一幅图像?
Web Server Application不仅可以生成复杂的页面文档,也可以根据用户请求返回不同的图像。当然有比较简单的方法,根据输入参数不同,<img src...>标记也指向不同的URL地址。这里我们不用这个办法,而是利用DLL返回图像。
当然要首先建立一个页面容器( page producer),内容如下:
< html >
< body >This is a test<BR>
<img src=″/scripts/mydll.dll/picture″>
< /body>
< /html>
接下来我们设定对应于PathInfo的动作事件,返回图像结果,源代码如下:(注意:单元声明中要包含JPEG单元)
procedure TWebModule1.WebModule1WebActionItem1Action
(Sender: TObject;Request: TWebRequest;
Response: TWebResponse;
var Handled: Boolean);
var
Jpg: TJpegImage;
S: TMemoryStream;
begin

Jpg := TJpegImage.Create;
try
Jpg.LoadFromFile('test');
S := TMemoryStream.Create;
try
Jpg.SaveToStream(S);
S.Position := 0;
Response.ContentType := 'image/jpeg';
Response.ContentStream := S;
// 必须在流释放前完成
Response. SendResponse;
finally
S.Free;
end;

finally
Jpg.Free;
end;
end;

实际上用这种方法和前面提到的简单做法相比,具有更安全和更灵活的特点。在某些地方灵活使用,以此为基础稍加修改可以产生一般开发工具难以实现的效果。
如何在ISAPI/NSAPI动态连接库(DLL)中使用本地数据库驱动程序(native Access driver)?
这是因为DAO 3.0 或者DAO 3.5是所谓thread-safe(线程安全程序),而一个Web服务器(例如IIS)会随用户请求产生多个线程,同时把ISAPI对应的DLL也列为线程。这时ISAPI就会通过BDE通知DAO,告诉它不符合线程安全规定。
解决的方法有很多,如果你一定要访问Access 95/97库,那么可以通过ODBC访问。ODBC不会经过DAO,而且也是一个线程安全程序。此外还有一些第三方的控件集,通过他们可以直接由BDE访问Access 95/97,效率更高。
用户访问我Web服务器上的ISAPI DLL,可是报告:“Invalid filename"(无效的文件名),然而文件的确存在的。对了,我的数据库在一台Novell 服务器上。这是为什么呢?
你没有设定对应于你IUSR_XXX账户的驱动器路径映射(MAPING)。因为Novell不是采用FAT,所以要手工添加路径映射。当然,可以做成开机登录脚本。请牢记,如果你运行IIS作为Web服务器,而又涉及Novell,无论作为文件服务器或数据库服务器,都要定义好路径映射。
“Invalid configuration parameter for alias {alias_name}"(无效的别名配置),当我设置一个ODBC DSN,并通过它访问ISAPI/NSAPI服务器时就出现这样一个错误。
你如果要为访问的用户(IIS用户)建立一个ODBC别名,那么要注意创建一个SYSTEM DSN(系统DNS),而不要创建“用户DNS”,虽然“用户DNS”是缺省设定。
如何取得客户机(访问机器)的名称和IP地址?
实现这个功能用TCP控件来做非常容易。从Internet页面上选取一个TCP控件,然后直接就可以得到你所需要的:
Memo1.Lines.Add(TCP1.LocalHostName);
Memo1.Lines.Add(TCP1.LocalIp);
当然,如果你不希望这样做,还有比较复杂的办法:
uses Winsock;
procedure TForm1.FormCreate(Sender: TObject);
var
wVersionRequested : WORD;
wsaData : TWSAData;
begin

{创建 WinSock}
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
p : PHostEnt;
s : array[0..128] of char;
p2: pchar;
begin

{得到计算机名称}
GetHostName(@s,128);
p:=GetHostByName(@s);
Memo1.Lines.Add(p^.h_Name);
{得到机器IP地址}
p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
Memo1.Lines.Add(p2);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
{释放 WinSock}
WSACleanup;
end;

这是一个调用了WINSOCK的独立单元,你可以把它直接嵌入到你的程序中去。
在DELPHI 3中为何不能创建真正的多线程DLL?
虽然DELPHI3中的ISAPI DLL向导已经为创建多线程DLL生成了大量代码,可是还是有一个严重的缺陷:没有申明本应用程序是一个多线程的程序。所以需要你添加一句话:IsMultiThread := TRUE;把这句话放在DPR程序begin
-end块的开始处,使之成为第一句。
如何得知现在是否和Internet连接?
最简单的办法是用一个TCP元件得到自己当前的IP,通过判断IP得知是否连入Internet。例如:
if TCP1.LocalIp = '0.0.0.0' then
ShowMessage('目前没有连入Internet!');
需要注意的是:因为Internet和Intranet没本质区别,所以一般不能判定是和Internet连接还是仅仅连入Intranet。当然。你也可以再加一个PING元件,去PING一个比较稳定、速度比较快的站点,如果连通则表明已经接入Internet。不过这种办法通用性不好。
如何打印一个Web页面?可以选用HTML控件的AutoPrint方法。例如:
uses Printers;
procedure TForm1.Button1Click(Sender: TObject);
var
OldCur: TCursor;
begin

OldCur := Screen.Cursor;
with Printer do

begin
begin
Doc;
HTML1.AutoPrint(handle);
Title := HTML1.URL;
EndDoc;
end;

Screen.Cursor := OldCur;
end;

此外还可以利用其PrintPage方法。不过我推荐你采用AutoPrint,因为这样控制更灵活,可以过滤一些你不希望打印的内容。
结语
最后我还要向你推荐几套DELPHI 编写Web程序的增强控件集,它们是:
1)CGI Expert 4 由Lars German公司出品,编写 shell-CGI、 win-CGI、 ISAPI和NSAPI程序特别方便。
2)NetMaster的Internet控件集。DELPHI 4中的Internet控件集就是它们的杰作,和 DELPHI结合得非常好。你可以去下载它们的最新版,功能更强大,而且对 DELPHI用户是免费的。
3)Dart Communications出品的PowerTCP的确非常强大,如果编写专业级TCP应用程序必不可少。有很多功能实际是由DLL提供的。
 
······GZ
 
暂时没能力懂jsxjd讲的。
我想问:什么是“纯粹的Delphi开发技术“?(见前面所附的贴子)
在DELPHI中有没有不学ASP、JSP、CGI、JAVASCRIPT、VBSCRIPT等东西
就能编写WEB程序的方法,而且编写的WEB程序能够在个人主页空间中发布?
目的只有一个,少学点其它东西,只学DELPHI+HTML就能编写出带有后台
数据库的个人主页?我是一个DELPHI的业余爱好者,没有什么条件学很多东西。
 
真是拿你没办法,人太懒不行啊。
--》目的只有一个,少学点其它东西
只想着这个,干脆不要学了
jsxjd给你贴的,就是你要的“DELPHI+HTML
就能编写出带有后台数据库的个人主页”的东西
我来给你解说一下,回头上去再仔细看。
--》当然要首先建立一个页面容器( page producer),内容如下:
[blue]这段就是html代码了,就是你的个人主页[/blue]
--》接下来我们设定对应于PathInfo的动作事件,返回图像结果,
--》源代码如下:(注意:单元声明中要包含JPEG单元)
[blue]这段就是delphi做的cgi程序了,是isapi的,编译后就是你主页上的dll[/blue]
--》如何在ISAPI/NSAPI动态连接库(DLL)中使用本地
--》数据库驱动程序(native Access driver)?
[blue]这段就是关于后台数据库的使用了。[/blue]
--》我是一个DELPHI的业余爱好者,没有什么条件学很多东西
这个想法错了,没有什么专业和业余之分,也不需要什么条件
能上网就是最好的条件,下载几本教材看看,网上什么都有。
http://www.codestudy.net看看
[red]另外:建议你用帖子的“编辑”功能,把你提问的字体改回黑色。[/red]


 
我终于知道可以重新编辑自己已经发出的贴子了。
 
正在学习、消化、徘徊、比较中......
 
<red><b>大家,各位,这是我在大富翁上看的有关贴子,跟我提的问题有关,欢迎大家发言:</b></red>
关于:"delphi7做网页比asp做网页效率快多了"
nzfsoft 在 2002-12-5 10:26:31 提供了如下回答, 请您查阅和评估:
--------------------------------------------------------------------------
---
这样做网站,是不是可以完全不用学ASP什么的了。
纯粹的Delphi程序员用Delphi完全搞定???
--------------------------------------------------------------------------
---
该问题的URL是: http://www.delphibbs.com/delphibbs/dispq.asp?LID=1385003

关于:"delphi7做网页比asp做网页效率快多了"
lzhuan 在 2002-12-4 20:52:27 提供了如下回答, 请您查阅和评估:
--------------------------------------------------------------------------
---
期盼中,如果delphi能写出好用的网页,我就不用再去用asp了。:)

delphiere 在 2002-12-5 0:34:01 提供了如下回答, 请您查阅和评估:
--------------------------------------------------------------------------
---
学习。我还不会ASP呀,今天才知道原来delphi还可以做这个呀!
-----------------------------

<b><red>Town 在 2002-12-5 10:47:06 提供了如下回答, 请您查阅和评估:
--------------------------------------------------------------------------
---
除非自己有服务器, 否则一点用都没有。 虚拟主机提供商都不提供服务的。
Delphi做Web程序确实好用, 但是实际让你很无奈。 用Delphi5搞了很长时间的cgi

isapi,后来装了CGIExpert,再后来用Delphi6搞了很长时间的WebSnap,也试验
了EWF,再后来试验了Delphi7的IW。 其间也用Delphi编了一些ASP的组件。
一开始都是感觉非常的爽,后来总是无处可用,丧失兴趣了...
还是用ASP吧,傻瓜用的, 懂Delphi的人相信3天就能上手,而且很普及,也不比
Delphi
麻烦。 反正做Web应用,总得懂点网页设计吧,IW和EWF做的东西,还是丑陋了一些
..

--------------------------------------------------------------------------
---Town 在 2002-12-5 10:54:08 提供了如下回答, 请您查阅和评估:
--------------------------------------------------------------------------
---
Delphi是把汽锤, ASP是把手锤, 而动态网页是个核桃....
--------------------------------------------------------------------------

Town 在 2002-12-3 12:52:23 提供了如下回答, 请您查阅和评估:
--------------------------------------------------------------------------
---
To TDelphi: 100% 没戏,呵呵
--------------------------------------------------------------------------
</b></red>
myxfang 在 2002-12-5 14:49:06 提供了如下回答, 请您查阅和评估:
--------------------------------------------------------------------------
---
当然有界面修饰了,只是关系到公司的隐私,我把它去掉了
INTRAWEB也可以做到很好看的界面,用delphi做web的好处是可以
保留我们以前开发的模式,开发效率高。

renxiaoyaolixiaodong 在 2002-12-5 14:02:50 提供了如下回答, 请您查阅和评估:
--------------------------------------------------------------------------
---
我在给学院做网站,我想问一下山泉:
1。Delphi做的网页速度究竟能快多少?(相比ASP/ASP.net)
2。界面方面的美观问题有没有解决办法?
3。学Delphi做向你那样的程序得学多长时间?我学过简单的Delphi,以前一直用ASP.
4。做出的东西究竟能不能跨平台?需要IIS的支持吗?
--------------------------------------------------------------------------
---

活化石 在 2002-12-6 1:22:16 提供了如下回答, 请您查阅和评估:
--------------------------------------------------------------------------
---
我感觉它真正的意义在于可以在小型的范围内
比如说用户量 数据量 不大的网域网内彻底抛
弃过去那种C/S开发模式,作一个APP前后端全
解决了.从结果上不会比ASP觉得好在那,但对开发者
来说可以莫大的幸福,何况用户在局域内可很方
便的使用.最适于公文浏览,薪金查询,业绩统计
公告版,工作汇报等中小型的应用了.同时WEB相
配置的环境的工作为零,一个Intraweb+access
就能搞定,何况它即然被BORLAND采纳将来的升级
功能的提升是必然的(不是广告),前景无限啊!!!
 
我能看懂那个长的帖子,虽然他的帖子中有些概念是混乱的但不完全错误。由于上面很多
内容都是在 Delphi6 出现以前使用 Delphi 开发 web 应用的讨论,对现在来讲有些过时。
Delphi 在 Delphi6 以前使用的是 WebBroker 技术,在 Delphi 出来后,引入了 WebSnap
技术。在 Delphi 自己带的 Demos 目录下就有有关 web 应用访问数据库的例子。
写短点吧。所谓纯 Delphi 技术有两方面的内容,一是服务器方面的配置,究竟是使用了
Windows 系统还是使用了 Linux 系统,在 Windows 系统中很多使用了 IIS ,在 Linux
中几乎就是 Apache ,不同的系统在 Delphi 中是有模块区分的,但使用相同的技术。二
是对客户的请求与响应。不管使用的是 CGI 还是 ISAPI 都需要在客户端得到服务端返回
的结果,Delphi6 开始可以整合现在流行的多种开发技术。
简介(抄自 Borland 公司 Code6421 的文章):
WebSnap 是 Delphi6 开始的 Web Application 开发框架,它是在以前的 WebBroker 基
础上发展起来的,并加入了很多新的功能。以前的 WebBroker + InternetExpress 框架
中,最大的问题是支持的功能过于简单,例如 Session,Pages Manager,Servier-Side
Scipt 等开发 Web Application 所必要的功能,在那个框架结构中全部缺席。使用者
常常必须依靠第三方元件的支持,或自己写这类元件来满足程序的需求。现在 WebSnap
补足了这些功能,并且加入了一些新的元件。同时 Borland 强化了 WebBroker ,加入
了管理网页用的 Multi-Modules 功能,这个功能使得我们在处理 Pages Manager (网页
管理)工作变的简单且自动化。除了这些之外,WebSnap 在结构上使用了许多新颖且实
用的 Design Patterns (设计模式)概念,这个决定使得 WebSnap 的整个结构可以横向
或纵向扩展,让日后的移植与扩充工作变的相当简单。......
 
云携雨(新生),我是一个初学者,在贴子上讨论了许久,就是想得到一个明确的回答:
用纯DELPHI开发的WEB程序可以在虚拟主机空间上发布吗?它是否需要在服务器端加入
DELPHI特定的支持文件呢?从我目前的了解来说:用纯DELPHI开发的WEB程序不可以在
虚拟主机空间上发布!我也打算用“ASP+DELPHI定制ASP组件“来写自己的个人主页,
正在学习李维的“电子商务篇“。但是我想更深入的了解这个问题!请看我在
<url>http://www.delphibbs.com/delphibbs/DispQ.asp?LID=1488075</url>处发的贴子。
 
我知道你的意思。
由于很多服务器主机是 unix 的,很难说会使用 iis 做 web ,加上 iis 漏洞比较多,
即便是 nt 主机,也很少开放 isapi 。所以,如果你针对 isapi 开发自己的网站,就
需要和提供者沟通好。asp 本身并不涉及系统异构,关键是在编写 asp 对象时使用的
是基于什么系统的对象问题。
如果你现在在线,可以访问 http://218.72.18.221/feedback/root ,这是 Delphi7 中
Demos 目录下的一个例子。在 23:00 关闭。
 
我有呀,请跟我联系bjf2001@163.com
 
去学websnap吧,首先会网页制做,其次会vbScript或JScript
 
云携雨,你好,感谢你的回答。请问:我要是用DELPHI开发ASP组件,用ASP来
调用组件。那些通常的支持ASP的虚拟主机空间,如果不另外与他们沟通,他们能支持用
DELPHI开发的ASP组件吗?为什么?
 
如果Asp空间允许你使用自己开发的Asp组件,
那么它肯定也允许发布纯的Delphi的Web应用,
Asp的功能已经很强了,一般情况下不需要第三方的Asp组件,
你可以全部都用Asp来写呀
 
感谢大伙的回答,经过这段时间的讨论,我发现没有人用DELPHI写出了在虚拟主机
空间上发布的个人主页。我现在没有用DELPHI来写我的未来的个人主页的念头了。
准备用FRONTPAGE+ASP+SQLSERVER。至于用DELPHI
写WEB,有时间的话来练练手。
这里一点微薄的DFW币,请各位DFW笑纳。祝各位身体健康、人兴财发。
另外,小弟我还有一个人生大事,希望大家来给我作一个参考。积分300,答者有份。
问题的地址是:<url>http://www.delphibbs.com/delphibbs/dispq.asp?lid=1530356</url>。
 

Similar threads

回复
0
查看
848
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部