IDES4.7,我很早就安装完了,由于经常在SAP的论坛里溜达,就知道这个IDES不能使用ABAP功能,因为我没破解这个ABAP的access key,虽然不懂ABAP,也没开始学ABAP,但还是知道没有这个key是不能用ABAP的。因为不会ABAP,所以也就没着急破解它。
前几天,有个QQ上的好友来问个问题,我就进我的IDES中看,虽然这道问题我也不会,但突然有了想把ABAP的这个key给解决了吧的冲动。
说干就干,找出以前就已经下载了的ZAPGUI,画面如下。
这些参数怎么填啊?看看当时同时下的简要说明,也没看太明白。唉,又是一层窗户纸。
正好在QQ上看到杨SIR在线,问他会不会。他说会,发给我一个软件,我一看和我的是一样的。但我算的key怎么就不正确呢?
他让我告诉他我的IDES的Installation number等参数,他要帮我算。我截了个System->Status的图给他,他说,你的IDES还没破解,不能算ABAP的key。
我这就奇怪了,IDES还要破解?我的IDES在安装时已经调过时间了,可以用到2029年!
杨SIR随后发给我一个文档,要我看看,按其说明操作就可以了。
这一看,我才明白,原来IDES安装完成后,真的需要破解的。窗户纸终于破了。感谢杨SIR。
原来IDES安装完成后,其Installation number为INI ......
当了个wxsqlite3的加密库,然后在网上找了好几个工具,貌似用该库去执行加密后的库就不行,要么是不支持加密,要么是支持加密,但是用该库创建的文件打不开!于是花了一个星期做这么个玩意(一般都是晚上,白天要上班,辛苦中)。因为是为仓促之作,所以细化方面没有深入,另外因为时间原因,还有好些个东西没有来得及实现(比如一些例外的小工具,视图,多编码格式的支持)。时间空闲多时,再做后续开发,目前能支持一般的数据库功能了,新建库,新建表,修改表,查询等,一般需要应该是满足了。
......
/// <summary>
/// 数据访问基础类(基于SQLServer)
/// Copyright (C) 2008-2009 小笨蛋
/// </summary>
public class DbHelperSQL
{
//数据库连接字符串(web.config来配置)
public static string connectionString = PubConstant.ConnectionString;
public DbHelperSQL()
{
}
#region 公用方法
/// <summary>
/// 判断是否存在某表的某个字段
/// </summary>
/// <param name="tableName">表名称</param>
/// <param name="columnName">列名称</param>
/// <returns>是否存在</returns>
public static bool ColumnExists(string tableName, string columnName)
{
string sql = "select count(1) from syscolumns where [id]=object_id('" + tableName + "') and [name]='" + columnName + "'";
object res = GetSingle(sql);
if (res == null)
{
......
SELECT CASE WHEN a.colorder = 1 THEN d.name ELSE '' END AS 表名,
CASE WHEN a.colorder = 1 THEN isnull(f.value, '') ELSE '' END AS 表说明,
a.colorder AS 字段序号, a.name AS 字段名, CASE WHEN COLUMNPROPERTY(a.id,
a.name, 'IsIdentity') = 1 THEN '√' ELSE '' END AS 标识,
CASE WHEN EXISTS
(SELECT 1
from sysobjects
WHERE xtype = 'PK' AND name IN
(SELECT name
from sysindexes
WHERE indid IN
&n ......
注意点:LPTSTR 对应的是PAnsiChar 或者PWideChar 你问问他的编译选项,要是定义了unicode就是PWideChar 否则是PAnsiChar
这里我是用UNICODE编程的,所以用到的是PWideChar
在VC写的A.dll里添加一个函数为
extern "C" __declspec(dllexport) LPTSTR WINAPI Do(LPTSTR i)
{
return i;
}
在DELPHI调用为
type
TDoFunc=function(str:PWideChar) :PWideChar;stdcall;
var
Th:Thandle;
TDo:TDoFunc;
Tp:TFarProc;
str:PWideChar;
strA,strB:PWideChar;
begin
Th:=LoadLibrary('A.dll'); {装载DLL}
if Th>0 then
try
Tp:=GetProcAddress(Th,PChar('_Do@4'));
if Tp<>nil
then begin
TDo:=TDoFunc(Tp);
strA:='bread';
str:=TDo(strA);
ShowMessage(str);
end
else
ShowMessage('没有找到函数');
finally
FreeLibrary(Th); {释放DLL}
end
else
ShowMessage('dll文件没找到');
end;
这样就OK了,(*^__^*) 嘻嘻
好开心哦,又解决了一个问题 ......
1、请列举VCL类库中以TObject为根的对象体系(可以只类主干)
2、请列举VCL数据库方面的核心类
3、Delphi中override和overload的作用分别是什么?
4、Delphi中RTTI是什么?有什么作用?
5、如果一个刚部署的Web服务器不能访问,列举出可能存在的原因?
6、在SQL中左连接时什么?它能实现的数据结果集的特点是什么?
7、请问在Oracle和Mssql中如何只取select语句结果集中的前100条?
Oracle:select top 100 * from tablename
Mssql:select * from tablename where rownum < 101
8、二叉树
type
TBTreeNode = class
Data: string;
Left: TBTreeNode;
Right: TBTreeNode;
end;
function NewNode(const Data: string; Left, Right: TBTreeNode): TBTreeNode;
begin
Result := TBTreeNode.Create;
Result.Data := Data;
Result.Left := Left;
Result.Right := Right;
end;
var Root: TBTreeNode;
procedure Init;
begin
{ 建树:
=
&n ......