DELPHI自己整理的笔记

1:如果编译的时候,经常出现类似这种警告

    warning W1005: W1005 Unit 'FileCtrl' is specific to a platform 

    warning W1002: W1002 Symbol 'FindData' is specific to a platform

    就在Interface 与 Users 之间,也就是Users之前

    加上{$WARN  UNIT_PLATFORM OFF}

          {$WARN SYMBOL_PLATFORM OFF}

2:查看一个字符串中有多少个汉字,同时用这种方法,可以得到多少汉字,多个英文

var
  ans: AnsiString;
  wis: WideString;
  sub: Integer; // 汉字的个数
Begin
  ans := '盗版delphi';
  wis := WideString(ans);
  sub := Length(ans) - Length(wis);

3:树上定位到了结点, 但滚动条没有下拉,看不到, 这以加上

   Node.MakeVisible; 

   这样就会定位到,并且显示当前行,

 4:Delphi 中, 取颜色的  RGB 值

    Form1.Canvas.Pen.Color := clBtnFace;

    mmo1.Lines.Add('Red   :=   ' + IntToStr(GetRValue(Form1.Canvas.Pen.Color)));

    mmo1.Lines.Add('Green   :=   ' + IntToStr(GetGValue(Form1.Canvas.Pen.Color)));

    mmo1.Lines.Add('Blue   :=   ' + IntToStr(GetBValue(Form1.Canvas.Pen.Color)));

5:判断一个控件,是否有该属性.

    function HaveProperty(const AComponent: TObject; AProperty: string): boolean;

    begin

      Result := IsPublishedProp(AComponent, AProperty);

    end

   测试:

    if HaveProperty(btn1, 'Font') then
    ShowMessage('存在')
    else
    ShowMessage('不存在');

    ------

    if HaveProperty(btn1.Font, 'ddda') then
    ShowMessage('存在')
    else
    ShowMessage('不存在');

 

6:DELPHI对象赋值  

  Delphi的对象之间赋值主要要注意几个方面的问题:

  1.对象之间的 :=赋值只是地址赋值,即是将当前对象的地址赋值到变量中,定义的变量可以是不用初始化的,在内存中两个变量指向的是同一地址空间;
  2.对象值赋值,主要是在内存中再开避新的地址空间,在赋值时是赋值相同的内存副本,一般如采用TPersistent继承的类都有Assign方法,可以重载此方法,它的主要作用即是对于对象中的变量进行相应的赋值操作。继承的对象如没有重载此方法在应用此方法时会提示不能对相同类的对象进行此赋值操作的错误!
 

 7: 怎样删除一个里面有文件的文件夹   连文件一起删掉   求具体代码 谢谢

 function DeleteDirectory(const DirName: stringconst UI: Boolean False): Boolean;

{
   删除目录
}
var
  fo: TSHFILEOPSTRUCT;
begin
  FillChar(fo, SizeOf(fo), 0);
  with fo do
  begin
    Wnd := GetActiveWindow;
    wFunc := FO_DELETE;
    pFrom := PChar(DirName + #0);
    pTo := #0#0;
    fFlags := FOF_NOCONFIRMATION + FOF_SILENT;
  end;
  Result := (SHFileOperation(fo) = 0);
end;
 
function ClearDirectory(const DirName: stringconst IncludeSub, ToRecyle: Boolean): Boolean;
{
  清除目录
}
var
  fo: TSHFILEOPSTRUCT;
begin
  FillChar(fo, SizeOf(fo), 0);
  with fo do
  begin
    Wnd := GetActiveWindow;
    wFunc := FO_DELETE;
    pFrom := PChar(DirName + '\*.*' + #0);
    pTo := #0#0;
    fFlags := FOF_SILENT or FOF_NOCONFIRMATION or FOF_NOERRORUI
      or (Ord(not IncludeSub) * FOF_FILESONLY)
      or (ORd(ToRecyle) or FOF_ALLOWUNDO);
  end;
  Result := (SHFileOperation(fo) = 0);
end;
-----
2010中的用法 更简单

uses
  IOUtils;

procedure TForm1.Button1Click(Sender: TObject);
begin
  TDirectory.Delete('D:\TDDownload\fa', true);
end;
true时可以删除非空文件夹
 

posted on   癫狂编程  阅读(224)  评论(0编辑  收藏  举报

编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
历史上的今天:
2019-12-12 Delphi连接Oracle控件ODAC的安装及使用

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
好的代码像粥一样,都是用时间熬出来的
点击右上角即可分享
微信分享提示