读“Delphi2010,DELPHI的希望?”有感
原文:http://www.gowjq.com/forum-29-1.html
1) 盛大的主要开发工具是Delphi, 详见: http://act.sdo.com/Delphi/, 游戏是一种复杂交互界面的开发,Delphi可以胜任。同样作为企业应用的前端,用DELPHI开发也是很好的选择。
2) 以下是关于Delphi发展方向文章,可以看到Delphi与JavaDotNet是两个不同的方向。Delphi是通过“数据封装”实现企业级应用后端开发(DBX, DataSnap),而Java与DotNet是通过序列化对象方法实现企业级后端开发。“数据封装”虽然高效,但不是后端开发的主流。David I的方向有问题。
3) 我认为Delphi的方向应是:
1)企业级应用的前端开发的利器。移动开发是企业级应用的前端,Delphi应支持。
2)为访问企业级后端应用提供丰富接口。不应集中在dBx或datasnap上,应多支持sdo, json, soap等。 ......
var
Form1: TForm1;
a, b, c: Integer;
implementation
{$R *.dfm}
procedure test1(x, y, z: integer);
asm
mov a,eax
mov b,edx
mov c,ecx
end;
procedure test2(x, y, z: integer);
var
i,j,k: integer;
asm
mov i,eax
mov j,edx
mov k,ecx
mov eax,[esp+8]
mov a,eax
mov eax,[esp+4]
mov b,eax
mov eax,[esp+0]
mov c,eax
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
test2(1,2,3);
ShowMessage(Format('%d,%d,%d', [a, b, c]));
end;
end.
new
var
Form1: TForm1;
a,b,c,d,e: Integer;
implementation
{$R *.dfm}
procedure test1(p1,p2,p3,p4,p5: integer);
asm
mov a,eax
mov b,edx
mov c,ecx
mov eax,[esp+$0c]
mov d,eax
mov eax,[esp+8]
mov e,eax
end;
procedure test2(p1,p2,p3,p4,p5: integer);
var
i,j,k: integer;
asm
mov i,eax
mov j,edx
mov k,ecx
mov eax,[esp+8]
mov a,eax
mov eax,[esp+4]
mov b,eax
mov eax,[esp+0]
mov c,eax
mov eax,[esp+$0c+$8+4]
mov d,eax
mov eax,[esp+$0c+$ ......
Delphi第三方控件安装卸载指南
基本安装
1、对于单个控件,Componet-->install component..-->PAS或DCU文件-->install;
2、对于带*.dpk文件的控件包,File-->Open(下拉列表框中选*.dpk)-->install即可;
3、对于带*.bpl文件的控件包,Install Packages-->Add-->bpl文件名即可;
4、如果以上Install按钮为失效的话,试试Compile按钮;
5、是run time lib则在option下的packages下的runtimepackes加之。如果编译时提示文件找不到的话,一般是控件的安装目录不在Delphi的Lib目录中,有两种方法可以解决: 1、反安装的源文件拷入到Delphi的Lib目录下; 2、或者Tools-->Environment Options中把控件源代码路径加入到Delphi的Lib目录中即可。注意:所安装的控件是否与你所用的Delphi版本相适应。控件删除在Component/Install Packages中删除。 选Component/configure Palette… 有pages和components两个区域双击components区域,选中要删除得控件,下面有得Delete按钮但系统提供的控件只能Hide,不能delete。打开控件所在的包文件(*.dpk),从中删除控件那个文件,再重新编译该包即可如果是整个控件包都要删除的话,project->Option ......
Delphi中截取文件名不含后缀部分 收藏
当文件名含有中文时,不能直接用LeftStr(FileName, Length(FileName - 4))或者用Pos来定位"."的位置来获取。因为中文一个字符相当与两个英文字符。这样截取往往还是把整个FileName都截下来了。
应当使用Copy函数,如下:
TmpFileLength := Pos(extFile, FileName); TmpFileName := Copy(FileName, 1, TmpFileLength-1);
FileName为AA.txt之类,如果是包含path,可以先用ExtractFileName截取包含后缀的文件名。
发表于 @ 2008年06月23日 16:54:00 | 评论( 2 ) | 编辑| 举报| 收藏
旧一篇:Delphi中类似Map的HashTable | 新一篇:国务院参事:房产商操控舆论逼宫政府
相关文章 SmallHand 发表于2008年12月12日 10:10:24 IP:举报删除
试试这个
procedure TForm1.Button9Click(Sender: TObject);
begin
button9.Caption := ChangeFileExt('我的a文件.txt','');
end;SmallHand 发表于2008年12月12日 10:11:15 IP:举报删除
试试这个
procedure TForm1.Button9Click(Sender: TObject);
begin
button9.Caption := ChangeFileExt('我的a文件.txt','');
end;
本文来自CSDN博客,转载请标明出处:http://blog.csdn.n ......
1.防止刷新时闪烁的终极解决办法
{ 防止刷新时闪烁的终极解决办法(对付双缓冲无效时) }
Perform($000B, 0, 0); //锁屏幕 防止闪烁
// 做一些会发生严重闪烁的事情..
//解锁屏幕并重画
Perform($000B, 1, 0);
RedrawWindow(Handle, nil, 0, RDW_FRAME + RDW_INVALIDATE + RDW_ALLCHILDREN + RDW_NOINTERNALPAINT);
2.图片上显示透明文字
//图片上显示透明的文字
//直接用.Canvas.Brush.Style:=bsClear;
//然后.Canvas.TextOut(x,y,'文字显示透明');
procedure TForm1.Button1Click(Sender: TObject);
var
bitBuf:TBitmap;
begin
bitBuf := TBitmap.Create;
try
bitbuf.LoadfromFile('测试图片.bmp');
Self.Canvas.Draw(0,0,bitbuf);
bitbuf.Transparent := True;
bitbuf.TransparentColor := clWhite; //文字显示透明
bitbuf.Canvas.font.color := clBlue; //文字颜色
bitbuf.Canvas.TextOut(10,10,'这样就是透明的字 ......
为了加快硬件的访问速度, 编译器通常要使用"数据对齐", 譬如:
//下面结构中: SizeOf(TRec) = 6; 因为 b 在这里也要占 2 字节.
TRec = record
a: Word;
b: Byte;
c: Word;
end
;
//下面结构中: SizeOf(TRec) = 16; 这里的 a 和 b 共占了 8 个字节.
TRec = record
a: Byte;
b: Byte;
c: Double;
end
;
//下面结构中: SizeOf(TRec) = 8; 这里的 a 和 b 共占了 4 个字节.
TRec = record
a: Byte;
b: Byte;
c: Integer;
end
;
//下例使用了结构压缩(压缩后就对不齐了), 它们的大小会分别是: 2、1、8 字节
TRec = packed
record
a: Word;
b: Byte;
c: Double;
end
;
下面是一个测试:
unit
Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class
(TForm)
Memo1: TMemo;
procedure
FormCreate(Sender: TObject);
end
;
var
Form1: TForm1;
implementation
{$R *.dfm}
type
rec1 = record
x: Integer;
y: Integer;
z: Integer;
end
;
rec2 = record
x: ......