Z
zzsczz
Unregistered / Unconfirmed
GUEST, unregistred user!
https://sourceforge.net/projects/dunit/
下载decal
更正
在编译decal自带的工程文件"RegressDeCAL.dpr"时
1 新建C:/redblack/delphi/put目录
2 在程序最前加入"{$APPTYPE CONSOLE}"指明程序类型
例子
1行代码完成排序
1行代码完成颠倒容器元素
50行完成数组输出,排序,颠倒容器元素
program Project1;
{$APPTYPE CONSOLE}
uses
decal;
var a: DArray;
i: integer;
//向屏幕输出容器的元素
procedure PrintContainer(con: DContainer);
begin
writeln('container: ', con.classname, ' size:', con.size);
ForEach(con, MakeApply(ApplyPrintLN));
writeln;
end;
//以上是从SuperStream.pas单元copy出来得函数
function RandomNumber(ptr: Pointer): DObject
//generator 函数,类方法, ptr为self指针
begin
Result := Make([Random(1000)])
// 构造数组的元素,把随机数"boxing"成类 ,象c#吧?? a object:=integer
end;
//主程序
begin
A := DArray.Create
//构造数组
Generate(a, 10, MakeGenerator(RandomNumber))
//填充数组 ,10个元素 ,随便改吧
//以上一行可写成如下注释里的代码
{
for i := 1 to 10 do
begin
a.add([Random(1000)])
end;
}
writeln('数组的元素');
PrintContainer(a)
// 向屏幕输出数组的元素
readln
//看一下结果
reverse(a)
// 颠倒容器元素
writeln('颠倒后数组的元素');
PrintContainer(a)
// 向屏幕输出数组的元素
readln
//看一下结果
sort(a)
//不稳定排序 ,快速排序
writeln('不稳定排序后数组的元素');
PrintContainer(a)
// 向屏幕输出数组的元素
readln
//看一下结果
end.
我看了一下DTL的文档 到书店翻了一下stl的书
decal是模仿sdl的,而dtl是模仿stl的
完善的decal之于object pascal,就像stl之于CPP
或者decal之于vcl,就像stl之于mfc
decal有点不好,2年了都不升级,不知是不是怕sdl的作者告侵权??。
我想试一试sdl,下载http://delphi.icm.edu.pl/ftp/d40share/sdltrld4.zip
发现是for delphi4的,我用的是d5,sdl没有源码不能用。
decal 使用了 array of const 的特性,非常独特。
c#的boxing技术的思想在decal中使用了很多次,源代码都有,"ms又在炒概念"。
decal提供了基于红黑数的容器的实现,而stl与.net的collection库只提供了基于哈希表的容器的实现
下载decal
更正
在编译decal自带的工程文件"RegressDeCAL.dpr"时
1 新建C:/redblack/delphi/put目录
2 在程序最前加入"{$APPTYPE CONSOLE}"指明程序类型
例子
1行代码完成排序
1行代码完成颠倒容器元素
50行完成数组输出,排序,颠倒容器元素
program Project1;
{$APPTYPE CONSOLE}
uses
decal;
var a: DArray;
i: integer;
//向屏幕输出容器的元素
procedure PrintContainer(con: DContainer);
begin
writeln('container: ', con.classname, ' size:', con.size);
ForEach(con, MakeApply(ApplyPrintLN));
writeln;
end;
//以上是从SuperStream.pas单元copy出来得函数
function RandomNumber(ptr: Pointer): DObject
//generator 函数,类方法, ptr为self指针
begin
Result := Make([Random(1000)])
// 构造数组的元素,把随机数"boxing"成类 ,象c#吧?? a object:=integer
end;
//主程序
begin
A := DArray.Create
//构造数组
Generate(a, 10, MakeGenerator(RandomNumber))
//填充数组 ,10个元素 ,随便改吧
//以上一行可写成如下注释里的代码
{
for i := 1 to 10 do
begin
a.add([Random(1000)])
end;
}
writeln('数组的元素');
PrintContainer(a)
// 向屏幕输出数组的元素
readln
//看一下结果
reverse(a)
// 颠倒容器元素
writeln('颠倒后数组的元素');
PrintContainer(a)
// 向屏幕输出数组的元素
readln
//看一下结果
sort(a)
//不稳定排序 ,快速排序
writeln('不稳定排序后数组的元素');
PrintContainer(a)
// 向屏幕输出数组的元素
readln
//看一下结果
end.
我看了一下DTL的文档 到书店翻了一下stl的书
decal是模仿sdl的,而dtl是模仿stl的
完善的decal之于object pascal,就像stl之于CPP
或者decal之于vcl,就像stl之于mfc
decal有点不好,2年了都不升级,不知是不是怕sdl的作者告侵权??。
我想试一试sdl,下载http://delphi.icm.edu.pl/ftp/d40share/sdltrld4.zip
发现是for delphi4的,我用的是d5,sdl没有源码不能用。
decal 使用了 array of const 的特性,非常独特。
c#的boxing技术的思想在decal中使用了很多次,源代码都有,"ms又在炒概念"。
decal提供了基于红黑数的容器的实现,而stl与.net的collection库只提供了基于哈希表的容器的实现