zoukankan      html  css  js  c++  java
  • 日常注意点

    一:关于类

             TfrmFAModule = class;

             TfrmFAModuleClass = class of TfrmFAModule;   关于此申明的作用,可以传递一个类参数,比如

             function ShowModule(AModuleClass: TfrmFAModuleClass;AnModuleNo: integer; const AsName: string = '';

      const bAutoCreate: boolean = True; const bBrintToFront: boolean = True): TfrmFAModule; //显示界面

     二:关于try

             try    。。。。finally  。。。end;  语句  对象在try语句之前创建,不然finally中的对象释放可能不存在。

    三:直接操作数据库的sql不要在界面单元写,而要在obj中写

    四:关于过程指针

                //指向显示明细模块过程的指针。Params 传入参数     此函数作用:在基类中申明与执行过程,在子类中给定指针的值,有利于基类的设计统一

              PShowDetail: procedure (Sender: TObject; Params: TPKValueList);

              PShowDetail := LoadLSSalesMan;  //给指针过程赋值

              if Assigned(PShowDetail) then       //执行指针过程

              begin

                    ValueList := TPKValueList.Create;

                    try

                        FetchParamsForShowDetail(ValueList);

                        PShowDetail(self, ValueList);

                    finally

                        ValueList.Free;

                  end;

            end;

    五:关于方法继承

            父类方法有abstract标识,子类没声明且没实现,如果子类的子类要实例化的话,则子类的子类必须声明以及实现该方法 

            如果子类与父类指向同一个对象,当释放掉父类对象后,不能再释放掉子类对象

    JSON之SuperObject  

                 万一博客:http://www.cnblogs.com/del/category/215158.html

           类方法作用:

                 不用创建对象就能用,避免内存泄露

           delphi关闭应用程序

                function KillTask(ExeFileName:string):boolean;

                const

                     PROCESS_TERMINATE = $0001;

                var

                    ContinueLoop: BOOLean;

                    FSnapshotHandle: THandle;

                    FProcessEntry32: TProcessEntry32;

               begin

                   Result := False;

                   FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);  通过获取进程信息为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程建立一个快照。0:表示当前进程

                   FProcessEntry32.dwSize := SizeOf(FProcessEntry32);

                   ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);

                   while Integer(ContinueLoop) <> 0 do

                   begin

                      if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then

                          Result := TerminateProcess(

                            OpenProcess(PROCESS_TERMINATE,

                                        BOOL(0),

                                        FProcessEntry32.th32ProcessID),

                                        0);

                     ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);     //进程的依次循环来找正确的进程关闭

                  end;

                  CloseHandle(FSnapshotHandle);

             end;

         异常问题

            数据类型转型时可能要抛出异常,比如字符串转型成浮点型等,必须要抛出异常

            截取字符串 Trunc在有必要的情况下也要抛出异常

                         对于异常处理要特别注意

          杂录

             initialization ------ 在单元中放在文件结尾前,包含用来初始化单元的代码,它在主程序运行前运行并且只运行一次。

             finalization ------ 在单元中放在 initialization 和 end. 之间,包含了单元退出时的代码。在程序退出时运行并且只运行一次。

             前台程序尽量用FreeAndNil来释放资源

         前台InitDevice中关于互斥量与信号量运用

            理解互斥量与信号量

                    http://blog.chinaunix.net/uid-10008293-id-2972285.html

    动作系统 Win32 Linyx Solaris
    创建 CreateMutex pthread_mutex_init mutex_init
    加锁 WaitForSingleObject pthread_mutex_lock mutex_lock
    解锁 ReleaseMutex pthread_mutex_unlock mutex_unlock
    销毁 CloseHandle pthread_mutex_destroy mutex_destroy

             摘要:

                    1. 互斥量用于线程的互斥,信号线用于线程的同步。

                       这是互斥量和信号量的根本区别,也就是互斥和同步之间的区别。

                        互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。

                        同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允                许多个访问者同时访问资源

                   互斥量值只能为0/1

  • 相关阅读:
    二、网络基础
    Ado.net
    LINQ
    C#[抽象类,接口]
    自定义类库,并引用
    c#重点[封装,继承,多肽]
    c#重点[集合类型]异常,数组,集合ArrayList,List<>,hashTable,hashtable泛型(Dictionary)
    c#重点[数据类型,构造方法,变量,变量,运算符,装箱,拆箱]
    .net reflector激活
    sqlsever备份,还原和导入导出方法
  • 原文地址:https://www.cnblogs.com/lodor/p/4744884.html
Copyright © 2011-2022 走看看