DEPHI note I

 编译器并非成自动释放所有资源与内存,对于有些是得靠程序员手动去释放的。比如COM组件,
----------------------------
指针类型:
*(定义表示执政,赋值表示取地址)          C++
ref(引用)                               c#
^                                       DEPHI
----------------------------
跳出程序块
retrue                                       c++/c#
exit                                         dephi
----------------------------
方法:
函数function(有返回值)/过程procedure(无)     dephi
函数function                                 c++/c#
----------------------------
函数返回值:
return+返回值                                c++/c#
<函数名>:=<返回值>或 Result:=<返回值>        dephi
dephi声明参数的缺省值 procedure founction(参数名:类型=缺省值)
----------------------------
传址参数:
function(*parameter)                          c++
function(ref parameter)         c#
function(var parameter)         Dephi
----------------------------
模板:
c#    泛型
c++   模板
dephi ··variant??
----------------------------
定义属性://使用这个可以很好的控制输入的值
语言     获取属性值   设置属性值
C#       get          set
dephi    read         write
例:
    private string m_money;
    public string bank  
    {  
        get 
        {  
            return m_money;  
        }  
        set 
        {  
            if (value == "string")  
            {  
                //OnNumberClear(this, new EventArgs());//引发完成事件   
                m_money = "gnirts";  
            }  
        }  
    }
----------------------------

Length():字符串的长度、数组维数等
High(); 求数组的最大下标值.(若值=-1,则表示数据长度为0)  
Low();  求数组的最小下标值.
----
定义动态数组:  
bb:array   of   integer;  
可在程序中动态设定其长度:  
setlength(bb,n);//当然也可以使用动态数据实现
---------------
格式化输出系统时间
FormatDateTime('yyyy-mm-dd   hh:mm:ss  zzz',Now());
----------------
换行符 #10#13
替换字符串中的字符
StringReplace(string,' ','',[rfReplaceAll]):string
截取:copy(str,startindex,count):string;返回子字符串  
查找:pos(substr,str):int;返回起始位置,为0则不存在

----------------
QuotedStr(string);将一个字符串转换成尾首代单引号,并将字符串中的单引号改成双引号
UpperCase(string);字符串转换成大写输出
----------------

NULL是无值无类型   
NIL是空指针型 
----------------
字符串转换16进制
SendBuff[0] := StrToInt('$'+ string);
Round(x) :X四舍五入取整

----------------------

错误处理

try
except
  on e:exception do
  begin
  end
end;
------------------

DCU是由PAS文件编译后生成的,一个PAS文件对应一个DCU文件. DELPHI的一些控件并没有源代码,但您也可以使用,这就是只用的DCU  
X相关文件···--·--·-

扩展名 英文解释                             文件内容HWez
BPG    Borland Project Group      工程项目包, 多个工程文件DPR的集合
DPR    Delphi Project                   应用系统的工程文件&-kyJ
PAS    Pascal File                         单元文件,存放Pascal源代码
DFM    Delphi form File                窗体界面文件, 同PAS文件同名,而且一一对应, 定义了窗体属性和构件的属性
DOF    Delphi Option File             选项文件, 包括编译信息等, 是一个文本文件件,可以看看
CFG    Project Configuration File 编译器可读的配置文件
DSK    Desktop Setting File         保存工程文件的桌面摆布情况, 下次打开时可以恢复上次保存的桌面状态

DSM    ````````````````        集成开发环境IDE的临时保存文件,有时IDE总出错, 可以将这个文件删掉, 系统会重新生成
RES    Resource File                    Windows 的资源文件, 可以定义光标, 位图,图标资源, 可以使用ImageEditor编辑T
DCU   Delphi Compile Unit          编译后的单元文件, 程序连接时需要它
DLL    Dymanic-link libraries        Windows 动态链接库
EXE    Executable File                 编译生成的可执行文件:
DPK    Delphi Packge Source      包文件的源代码
BPL    Borland Package library   包, 是一种特殊的DLL文件, 用于代码重用和减少可执行文件的长度MwMCj

------------------
case语句的选择因子必须是有序类型,而不能用非有序的类型如字符串作为选择

因子。
case语句支持字符串作为分类条件?
一:字符串转为整型
二:字符串转为枚举型
{
//uses TypInfo;   //   记得引用这个单元  
//type TMyStrSel= (Beijing,   Tianjing,   Shanghai,   Chongqing);  
//   注意,上面这个定义不能放在某个函数内部哦,那样的话,它就没有运行类

信息了  
//var strSel:TMyStrSel;  
  str:='Chongqing';  
  strSel:=TMyStrSel(GetEnumValue(TypeInfo(TMyStrSel),   str));  
  case strSel  of  
    Beijing:  ShowMessage('First');  
    Tianjing: ShowMessage('Second');  
    Shanghai: ShowMessage('Third');  
    Chongqing:ShowMessage('Forth');  
    else      ShowMessage('Other');  
  end;  
}
//TStringList 常用方法与属性: 
var 
  List: TStringList; i: Integer;
begin
  List := TStringList.Create; List.Add('Strings1') {添加}; List.Add

('Strings2');
  List.Exchange(0,1);{置换}  List.Insert(0,'Strings3');{插入} 
  i:= List.IndexOf('Strings1');  {第一次出现的位置}  
  List.Sort;   {排序}  List.Sorted := True;   {指定排序}
  List.Count;  {总数}  List.Text;             {文本集合}  
  List.Delete(0);{删除, 0是第一个数据}
  List.LoadFromFile('c:/tmp.txt'); {打开}
  List.SaveToFile('c:/tmp.txt');   {保存}  
  List.Clear;{清空}  List.Free;    {释放}
end;
------------------------------------
//读入字符串
  List.CommaText := 'aaa,bbb,ccc,ddd';  
  //相当于: List.Text := 'aaa' + #13#10 + 'bbb' + #13#10' + 'ccc' +

'#13#10' + 'ddd';
  ShowMessage(IntToStr(List.Count));--4  ShowMessage(List[0]);--aaa
//置换分隔符  
  List.Delimiter := '|';
  List.DelimitedText := 'aaa|bbb|ccc|ddd';
  ShowMessage(IntToStr(List.Count));//4  ShowMessage(List[0]); //aaa
//类似的哈希表操作法
  List.Add('aaa=111'); List.Add('bbb=222');List.Add('ccc=333');

List.Add('ddd=444'); ,      ShowMessage(List.Names[1]);//bbb  

ShowMessage(List.ValueFromIndex[1]);  //222 
  ShowMessage(List.Values['bbb']);  //222
  //ValueFromIndex 可以赋值:
  List.ValueFromIndex[1] := '2';
  ShowMessage(List[1]);  //bbb=2 
  //可以通过 Values 赋值: 
  List.Values['bbb'] := '22';
  ShowMessage(List[1]);  //bbb=22 
//避免重复值 
  List.Add('aaa'); List.Sorted := True;  //需要先指定排序
  List.Duplicates := dupIgnore;  //如有重复值则放弃
  List.Add('aaa');
  ShowMessage(List.Text);  //aaa
  //Duplicates 有3个可选值: 
  //dupIgnore: 放弃;  
  //dupAccept: 结束; 
  //dupError: 提示错误.
//排序与倒排序
  ShowMessage(List.Text);  //bbb ccc aaa   //未排序 
  List.Sort;  //排序
  ShowMessage(List.Text);  //aaa bbb ccc   //倒排序 
  List.CustomSort(DescCompareStrings);     //调用排序函数
  ShowMessage(List.Text);  //ccc bbb aaa   
------------------------------------
//dephi调用webservece
function TWdUpdateWeb.GetWebServiceValues(sWebUrl, sFileName: String;
  var sXmlVal: String): Boolean;
var
  tmpHTTPRIO:THTTPRIO;   //引用自单元--unit WdUpdateWebImpl1;
  sp:ServiceSoap;        //web代理类单元
  sUrlVal:String;        //url
begin
  Result:=False;
  try
    sUrlVal:=Trim(sWebUrl);
    if Copy(sUrlVal,length(sUrlVal),1)='/' then
      sUrlVal:=copy(sUrlVal,1,length(sUrlVal)-1);
    if Copy(sUrlVal,length(sUrlVal),1)='/' then
      sUrlVal:=copy(sUrlVal,1,length(sUrlVal)-1);
    sUrlVal:=sUrlVal+' rvice.asmx';
    tmpHTTPRIO:=THTTPRIO.Create(nil);
    tmpHTTPRIO.URL:=sUrlVal;
    tmpHTTPRIO.HTTPWebNode.UseUTF8InHeader :=true;
    sp:=tmpHTTPRIO as ServiceSoap;
    sXmlVal:=sp.Text_Reader(sFileName);
    Result:=True;
  except
    on E:Exception do
    begin
      ShowMessage(pchar('错误提示:'+e.Message));
      Exit;
    end;
  end;
end;

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用,可以了解到GDI+是一种图形设备接口,它是微软公司开发的一种图形设备接口,用于在Windows操作系统上呈现二维图形。GDI+支持半透明窗体和PNG图片,可以实现漂亮、个性化的窗体效果。而Delphi是一种基于Pascal语言的集成开发环境,可以用于开发Windows应用程序。因此,可以使用Delphi和GDI+技术来实现半透明窗体和PNG图片的效果。 关于如何使用Delphi和GDI+技术实现半透明窗体和PNG图片的效果,可以参考以下步骤: 1.在Delphi中创建一个新的VCL Forms应用程序。 2.在Form的OnCreate事件中添加以下代码,以启用窗体的半透明效果: ```delphi AlphaBlend := True; AlphaBlendValue := 200; // 设置透明度 ``` 3.在Form的OnPaint事件中添加以下代码,以绘制PNG图片: ```delphi var png: TPngImage; begin png := TPngImage.Create; try png.LoadFromFile('image.png'); Canvas.Draw(0, 0, png); finally png.Free; end; end; ``` 4.在Form的OnMouseDown事件中添加以下代码,以实现右键菜单: ```delphi if Button = mbRight then begin PopupMenu1.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y); end; ``` 5.在Form的OnCreate事件中添加以下代码,以将窗体置顶: ```delphi FormStyle := fsStayOnTop; ``` 6.在Form的OnDestroy事件中添加以下代码,以释放GDI+资源: ```delphi GdiplusShutdown(gdiplusToken); ``` 关于引用中的问题,可能是由于保存的文件路径不正确或没有写入文件的权限导致的。可以检查文件路径是否正确,并确保程序有写入文件的权限。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值