博文
深夜了,哥们我写了个replace算法。一直以来想写没机会(2010-01-29 03:20:00)
摘要:#include "stdafx.h"#include "string.h"#include "conio.h"#include "math.h"
int indexOf(unsigned char* src, unsigned char* find);int replace( char* src, char* find, char* rpc);int replaceAll( char* src, char* find, char* rpc);
int indexOf(unsigned char* src, unsigned char* find) { int ret = -1; char* offsetPtr = NULL;
if (src != NULL && find != NULL) { offsetPtr = strstr((char*)src, (char*)find);
if (offsetPtr != NULL) { ret = strlen((char*)src) - strlen((char*)offsetPtr); } }
return ret; }
int replaceAll( char* src, char* find, char* rpc){ int pos = replace(src, find, rpc);
if (pos != -1) { pos = replaceAll(src + pos + strlen(rpc), find, rpc); }
return pos;}
int replace(......
再展出一个解释程序(暨庆祝偶滴BLOG点击次数超过10万)(2008-08-20 19:44:00)
摘要: 发现2006年3月写的COBOL语言解释程序在偶滴BLOG所有文章中人气最高,偶滴blog点击次数刚刚超过10万,为了祝贺。时隔2年半后再展示一个解释程序,html解释程序。html解释程序是 易扩网络搜索(2007年本人自主开发的搜索引擎)的一个小部分, 事实上为了网络搜索而使用整套解释程序是用高射炮打蚊子的行为,用DOM和regx应该能够实现,当时有这个想法,不过没有付诸行动。
下面是解释系统的框架图
Copyright (C) 2007-8 SGPRO
这个程序比较庞大,所以这里只能展示语法分析部分。 HTML源代码虽然有一套语法规则,但是仍然可以写的相当随意,所以解释程序容错能力要很高,如果是xml语法非常严格,相对应的解释程序应该简单的多(虽然我没有实现过)
语法分析(Syntax Analysis)的代码,不能单独编译,需要词法分析和错误处理等模块协作
下面2个数据结构必须说明
//1、 有限自动机,从html源代码中读取有效单词,目前只支持2种,一种是HTML有效单词,一种是Javascript有效单词
typedef struct { BOOL (*ReadHTMLToken)(Token *argToken, BOOL filterSpace); BOOL (*ReadJavaScriptToken)(Token *argToken, BOOL filterSpace);}LangDFA;
// 2、语法解释器typedef struct{ HTMLObjectTree ObjectTree; // 对象树,属于解释器的目标生成对象 ObjectList ObjectArr; // 对象列表, 对象树的列表结构 HTMLInterpreterError *IntpErr; // 错误对象句柄 BOOL (*start)(BOOL (*LoadHTMLCode)(......
web聊天程序,Ajax实现即时通讯(2007-12-03 16:39:00)
摘要: Ajax 是用javascript和DOM,XML实现的web客户端与服务器端的异步通讯技术。 不是什么新东西,老技术,新面孔而已。 对于构建类似桌面应用的web程序来说,Ajax无疑是有效的工具, 处理强交互性做得很突出。 Google是Ajax的先行者, 大名鼎鼎的Google Map则是Ajax的优秀作品。 相信Ajax的广泛运用将进一步改变web程序的面孔,同时过去被认为只有桌面程序更加能满足要求的构架方案如今Ajax可以成为另一种不错的选择。桌面程序则再次面临市场萎缩,与此同时b/s在继续拓宽其领地。 Ajax不是什么新技术, 只要客户端的浏览器支持javascript,支持dom就能完成Ajax的核心工作之一, 而服务器端代码你可以选择3p技术的任何一种, 是极其自由的。以前的web聊天程序, 你或许要常常刷新页面来获知你是否有了新的消息,而一次刷新则意味着一次和页面载入,这显然不符合即时通讯的要求,在这里Ajax则有了发挥的空间,这是我为什么选择它的原因。 如果你熟悉Ajax, 请允许我上面说了这么多废话,因为我无法保证每个读者都熟悉它。当然不乏精通人士,敬请纠正我的错误,如果存在的话。 现在我将发布我的Ajax作品。 请不要误以为我在炫耀什么,这并不是什么高级的作品,事实上我只是想发布它,因为很长时间我的blog没有更新了,当然如果我的行为对你的进步产生了影响,那将会使我感觉到快乐。最后要说的是, 著作权,中国人不太重视这个, 我想说的是,不管这个作品品质如何,只要它是出自某个人辛苦的劳作而且未将它授权给别人,那它就属于作者, 你需要适当限制发生作者不愿看到的行为,特别是商业目的。在这个实例当中客户端我使用了ms的浏览器, 服务器端则采用ms的 jscript一共7个程序文件Ajax.js : Ajax程序的中心库,我希望这是一个通用框架的核心组成部分AjaxApp.js : 本程序响应服务器异步通讯的代码, 负责本程序客户端的大部分工作frmInpCheck.js: 表单输入的控制模块pageCtl.js: 页面元素的控制模块, 集中体现Ajax中DOM的运用util.js: 其他工具模块web-sgn.asp: 客户端页面代码,利用Ajax交互的页面web-server-s......
VB.NET 对 Oracle 数据库的访问策略(2006-12-01 12:57:00)
摘要:关键字:VB.NET, 数据库编程, Oracle, DataSet, DataGrid, DataAdapter, OracleConnection
简介:
VB.NET 同样使用 .NET数据库组件,这和.NET FrameWork支持的其他语言上没有区别。只是语法上的差异。
对Oracle数据库的访问, .NET FrameWork提供了两种方法,一种是使用Ado.Net,另一种是OracleConnection 套件。 类似于微软专门为Sql Server提供的 SqlDataConnection。 两种方法非常类似。下面只介绍 OracleConnection.
1、先创建 OracleConnection对象, 使用连接字符串连接到指定数据库。
2、建立OracleDataAdpter 或者 OracleDataCommand. 构造参数为连接对象,sql语句
3、建立DataSet或者 OracleDataReader 读取OracleDataAdpter和OracleDataCommand采集的数据。 DataSet可以集合多张表。
一下是一个具体的实例程序:
=================================
' Copyright (C) 2006-11 sgpro
Imports System.Data.OracleClient.OracleDataAdapterImports System.Data.DataSet
Public Class OracleSample Inherits System.Windows.Forms.Form
#Region " Windows フォーム デザイナで生成されたコード "
Public Sub New() MyBase.New()
&nb......
帐单导出(2006-10-17 21:50:00)
摘要:
财务管理系统1.2 For SGWINDOW 2.0虽然提供了多帐单操作,但是不能打印帐单报表,因此在财务管理系统1.2 For SGWINDOW2.0版本上做帐单数据的导出功能,帐单数据导出之后可以当作报表打印,暂定版本为1.3。在商用系统当中,有专门的报表管理器。这里的帐单导出,只做HTML表格的生成。导出文件为HTML格式,用浏览器打开。
下面是帐单导出的实现代码
void On_Export()
{
finaitem instance = {0L,"",""};
FILE *fdatabas;
int flag;
int oamt =0,iamt = 0;
char outstr[128] = "";
ChangeReckName();
if (access(User.DatabaseName, 4) == -1)
{
Messagebox(GetAppVersion(false),
"帐单文件不存在,导出失败",
SGMSGBOX_OKONLY,SGMSGBOXICON_critical);
......
财务管理系统1.2(C)(2006-03-29 15:49:00)
摘要:软件下载地址:
http://www.programfan.com/wysoft/showwysoft.asp?id=1430
软件运行画面:
C程序源代码:
/*Copyright (C) 2005-8, 2006-3 SGPRO*/
#include <stdio.h>#include <math.h>#include <ctype.h>#include <dos.h>#include <sgwindow.h> /*SGWINDOW 程序必须的头文件*/#include "savescr.c"
#define VERSIONSTRING "财务管理系统 1.2 For SGWINDOW 2.0\nCopyright (C) 2005-8 - 2006-3 SGPRO"#define APPNAME "财务管理系统 1.2 For SGWINDOW 2.0"#define VERSIONVAL 1#define VERSIONSUBVAL 2
#define ID_ABOUT 10000#define ID_FRMOPRT 10010#define ID_FRMVIEW 10011#define ID_OPTNVIEWALL 10020#define ID_OPTNVIEWOUT 10021#define ID_OPTNVIEWINC 10022#define ID_OPTNVIEWAMT 10023#define ID_OPTNOUTG 10024#define ID_OPTNINC 100025#define ID_LABFINA 10030#define ID_LABCOMMENT 10031#define ID_LABDATETIP 10032#define ID_LABRECKTIP 10033#define ID_LABCURRECK 10034#define ID_TXTFINA 10040#define ID_TXTCOMMENT 10041#define ID_TXTRECKNAME 10042#define......
年度奉献 --- 通讯录管理系统(2005-12-30 23:28:00)
摘要:通讯录管理系统1.0 可以为您方便地,安全地管理你的通讯录, 是您的家庭好帮手.本系统使用Visual C++(MFC)开发, ODBC开放式数据库源下载包里面包含系统所有C++源代码, 没有制作安装程序包, 运行时需要配备VC平台.欢迎C++爱好者参考和提出意见通讯录管理系统的下载地址为:http://upload.programfan.com/upfile/200512302242136.rar ......
