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:TDDownloadfa', true);
end;
true时可以删除非空文件夹
 
好的代码像粥一样,都是用时间熬出来的
原文地址:https://www.cnblogs.com/jijm123/p/14124274.html