随笔 - 110  文章 - 28 评论 - 26 

留言簿(1)

随笔分类(103)

随笔档案(110)

文章分类(25)

文章档案(28)

新闻档案(3)

友情连接

  • 小蜜蜂
  • 马氏膏药网
  • 淋巴结肿大,淋巴结核,淋巴结炎 乳腺增生,小叶增生 颈椎病,腰椎病,腰间盘突出 马氏淋巴消炎贴,马氏增生散结贴,马氏关节肌肉贴
  • 黑客基地
  • 全球最大的黑客门户网站

最新随笔

积分与排名

  • 积分 - 143651
  • 排名 - 44

最新评论

阅读排行榜

评论排行榜

var
  ico: TIcon;
begin
opendialog1.Execute;
ico := TIcon.Create;
ico.Handle:=ExtractIcon(HInstance, PChar(opendialog1.FileName), 0);
ico.SaveToFile('c:\123.ico');
ico.Free;

end;


上面是保存下来,如果你显示在image组件上:
var
  ico: TIcon;
begin
if opendialog1.Execute then
begin
Image1.picture.Assign(nil);
ico := TIcon.Create;
ico.Handle:=ExtractIcon(HInstance, PChar(opendialog1.FileName), 0);
DrawIcon(self.Image1.Canvas.Handle,33,33,ico.Handle);
ico.Free;
end;
end;

posted @ 2009-01-14 00:22 小叶子 阅读(464) | 评论 (0)编辑 收藏
得到系统路径
var
s:pchar;
begin
getmem(s,100);
GetSystemDirectory(s,100) ;
showmessage(s);
end;
posted @ 2009-01-13 19:42 小叶子 阅读(1463) | 评论 (0)编辑 收藏
判断一个可执行文件或DLL中是否有图标存在,并将其提取出来
function ExtractIcon; external shell32 name 'ExtractIconA';
返回integer;
posted @ 2009-01-13 18:48 小叶子 阅读(417) | 评论 (0)编辑 收藏
function FileExists(const FileName: string): Boolean;
用于判断     文件      是否存在(使用时请带有文件后辍名)
function DirectoryExists(const Directory: string): Boolean;
用于判断     文件夹   是否存在
posted @ 2009-01-13 18:42 小叶子 阅读(2740) | 评论 (0)编辑 收藏
forcedirectories和CreateDirectory都能创建文件
ForceDirectories可以创建多层目录.
如果你创建一个目录为c:\mymusic\music
如果你的C盘不存在一个叫mymusic的文件夹
的话程序会自动创建,函数执行的结果是,
创建了两个文件夹,mymusic和music,music为
mymusic的子文件夹.

CreateDirectory只能创建一个文件夹,如果
mymusic不存在,则反回创建music文件夹失败!
posted @ 2009-01-13 18:37 小叶子 阅读(4427) | 评论 (1)编辑 收藏
返回指定文件的文件名及扩展名

var
s:string;
begin
s:=ExtractFileName('D:\Program Files\Borland\Delphi7\Projects\Unit1.dcu');
showmessage(s);\\显示:Unit1.dcu
end;

var
s:string;
begin
s:=ExtractFilepath('D:\Program Files\Borland\Delphi7\Projects\Unit1.dcu');
showmessage(s);\\显示:'D:\Program Files\Borland\Delphi7\Projects
end;
posted @ 2009-01-13 18:34 小叶子 阅读(2966) | 评论 (0)编辑 收藏
函数说明 更改指定文件的扩展名,函数原型如下:
delphi中源码
function ChangeFileExt(const FileName, Extension: string): string;
var
  I: Integer;
begin
  I := LastDelimiter('.' + PathDelim + DriveDelim,Filename);
  if (I = 0) or (FileName[I] <> '.') then I := MaxInt;
  Result := Copy(FileName, 1, I - 1) + Extension;
end;

比如:
s:=changefileext('f:\123.txt','.ini');
showmessage(s);//f:\123.ini
posted @ 2009-01-13 18:07 小叶子 阅读(3125) | 评论 (0)编辑 收藏

上节说了strings,而他去用tstringlist.creat去创建

TStringList是由TStrings派生,TStrings不能实例化,但TStringList却可以

一般Tstrings用作定义,TStringList用来实例化
  var  
          tsList:TStrings;  
  begin  
          tsList:=TStringList.Create();  
          ....  
          tsList.Free;//有时我们不去释放,但最好去释放

方法:add()
var
ps:strings;

ps:=tstringlist.creat;
ps.add('aaa  bbb');
这里加的是'aaa  bbb',还不是'aaa ' 和'bbb'
也就是ps.count=1,不是2

 

 

posted @ 2009-01-08 18:56 小叶子 阅读(1516) | 评论 (0)编辑 收藏
TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的。
常规的用法大家都知道,现在来讨论它的一些高级的用法。
先把要讨论的几个属性列出来:
1、CommaText
2、Delimiter & DelimitedText
3、Names & Values & ValueFromIndex
先看第一个:CommaText。怎么用呢?用代码说话:
const
constr :String = 'aaa,bbb,ccc,ddd';
var
strs :TStrings;
i :Integer;
begin
strs := TStringList.Create;
strs.CommaText := constr;
for i := 0 to Strs.Count-1 do
    ShowMessage(Strs[i]);
end;
执行了这段代码后,可以看到ShowMessage显示出来的分别是:aaa bbb ccc ddd。
也就是说,strs.CommaText := constr这一句的作用,就是把一个字符串以','为分割符,分段添加到TStrings中。
那么如果不是以','来分割,又该怎么做呢?现在看第二个例子。使用Delimiter和DelimitedText。
const
constr :String = 'aaa\bbb\ccc\ddd';
var
strs :TStrings;
i :Integer;
begin
strs := TStringList.Create;
strs.Delimiter := '\';
strs.DelimitedText := constr;
for i := 0 to Strs.Count-1 do
    ShowMessage(Strs[i]);
end;
可以看到, 显示的效果和第一个例子是一模一样的。解释一下:
Delimiter为分隔符,默认为:','。DelimitedText就是按Delimiter为分隔符的一个串,得到赋值后回把这个字符串按Delimiter的字符添加到TStrings中。
说到这里,有想起一个属性,QuoteChar。其默认值为:'"'(不包括单引号)
有何用呢?看例子:
const
constr :String = '"aaa"\"bbb"\"ccc"\"ddd"';
var
strs :TStrings;
i :Integer;
begin
strs := TStringList.Create;
strs.Delimiter := '\';
strs.DelimitedText := constr;
for i := 0 to Strs.Count-1 do
    ShowMessage(Strs[i]);
end;
显示出来的仍然是aaa bbb ccc ddd。为什么不是:"aaa" "bbb" "ccc" "ddd"呢?
再来看一个例子:
const
constr :String = '|aaa|\|bbb|\|ccc|\|ddd|';
var
strs :TStrings;
i :Integer;
begin
strs := TStringList.Create;
strs.Delimiter := '\';
strs.QuoteChar := '|';
strs.DelimitedText := constr;
for i := 0 to Strs.Count-1 do
    ShowMessage(Strs[i]);
end;
显示出来的又是aaa bbb ccc ddd。对比一下,应该不难明白吧?这个就不多说了,用得也不多。
但是还要多说一句,当Delimiter为:','而QuoteChar为:'"'时,DelimitedText和CommaText是同等的。
最后要说的三个是:Names & Values & ValueFromIndex。
看看下面的代码:
const
constr :String = '0=aaa,1=bbb,2=ccc,3=ddd';
var
strs :TStrings;
i :Integer;
begin
strs := TStringList.Create;
strs.CommaText := constr;
for i := 0 to strs.Count-1 do
begin
    ShowMessage(strs.Names[i]);
    ShowMessage(strs.Values[strs.Names[i]]);
    ShowMessage(strs.ValueFromIndex[i]);
end;
end;
通过这个例子不难看出:
这个时候strs中的内容是:
0=aaa
1=bbb
2=ccc
3=ddd
而Names中则是:
0
1
2
3
在Values中则是:
aaa
bbb
ccc
ddd
posted @ 2009-01-08 18:49 小叶子 阅读(2593) | 评论 (0)编辑 收藏
引数:
1. Text:要显示的讯息
2. Caption:讯息视窗的标题列文字
3. Flags:讯息旗标
     3.1. 可指定讯息视窗上的图示
     3.2. 可指定讯息视窗出现的按钮
     3.3. 可指定预设Focus在哪一个按钮
     3.4. 可指定是否 Modal
     3.5. 其他

引数说明:
Text、Caption 引数为 PCahr 型态,字串型态的变数可用 PChar()
转换,若直接传入一个字串的话,就不用转型。
例如:
var s: string;
....
s := '存档失败';
Application.MessageBox(PChar(s), '错误', MB_ICONERROR);

Flag 引数为 Longint 型态,可用的传入值有:
1. 指定讯息视窗上的图示
1.1 MB_ICONEXCLAMATION 或 MB_ICONWARNING
      出现「黄三角形内有一个惊叹号」图示
1.2 MB_ICONINFORMATION 或 MB_ICONASTERISK
      出现「白色椭圆内有一个蓝色小写 i」图示
1.3 MB_ICONQUESTION
      出现「问号」图示
1.4 MB_ICONSTOP 或 MB_ICONERROR 或 MB_ICONHAND
      出现「红色X」图示

2. 指定讯息视窗出现的按钮
2.1 MB_ABORTRETRYIGNORE
      出现「Abort」「Retry」「Ignore」三个按钮
2.2 MB_OK
      出现「Ok」按钮,为预设值。
2.3 MB_OKCANCEL
      出现「Ok」「Cancel」两个按钮
2.4 MB_RETRYCANCEL
      出现「Retry」「Cancel」两个按钮
2.5 MB_YESNO
      出现「Yes」「No」两个按钮
2.6 MB_YESNOCANCEL
      出现「Yes」「No」「Cancel」三个按钮

3. 可指定预设Focus在哪一个按钮
3.1 MB_DEFBUTTON1
      指定focus在左边第一个按钮,这是预设值。
3.2 MB_DEFBUTTON2、MB_DEFBUTTON3、MB_DEFBUTTON4
      以此类推,指定focus在左边第二、三、四个按钮

4. 可指定是否 Modal
4.1 MB_APPLMODAL
      对于应用程式而言,是 modal form
4.2 MB_SYSTEMMODAL
      对于作业系统而言,是 modal form
4.3 MB_TASKMODAL
      对于 task 而言,是 modal form
      一般来说,这跟 MB_APPLMODAL 是等效的,但是当应用程式中的所有
     form 都隐藏的时候,就必须使用这个,才能达到 modal 的目的

5. 其他
5.1 MB_TOPMOST
      将讯息视窗提至最前面
5.2 MB_RIGHT
      将讯息文字向右对齐

在一个 Flag 要指定这么多的东西,要如何使用呢?
只要把要用的引数组合 or 起来就可以了。例如:

Application.MessageBox(PCahr(sMsg), PChar(sCap), MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2)
这样会出现「问号」图示,「Yes」「No」两个按钮,而且 focus 在 No 按钮上

回传值:
1. IDABORT:使用者按了「Abort」按钮
2. IDCANCEL:使用者按了「Cancel」按钮
3. IDIGNORE:使用者按了「Ignore」按钮
4. IDNO:使用者按了「No」按钮
5. IDOK:使用者按了「Ok」按钮
6. IDRETRY:使用者按了「Retry」按钮
7. IDYES:使用者按了「Yes」按钮

顺带一提,按钮上的文字是会随着作业系统的语系而改变的,用中文版的 Windows,按钮上的文字就出现中文。

posted @ 2009-01-08 18:23 小叶子 阅读(3961) | 评论 (0)编辑 收藏
仅列出标题
共11页: First 3 4 5 6 7 8 9 10 11 

笔记和文章,可能抄袭,只为学习,请原谅