• 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时可以删除非空文件夹
     
    好的代码像粥一样,都是用时间熬出来的
  • 相关阅读:
    (转)SQL Server索引进阶第四篇:页和区
    (转)SQL Server索引进阶第五篇:索引包含列
    CentOS虚拟化服务的配置(转)
    ubuntu 9.04安装xen(转)
    Linux的mount命令详解
    Linux环境下高级文件系统(转)
    安装和使用xenshell(转)
    (转)介绍ice 代理 不错的文章
    mapreduce介绍
    (转)Ubuntu Server Editon 时区设置
  • 原文地址:https://www.cnblogs.com/jijm123/p/14124274.html
Copyright © 2020-2023  润新知