DELPHI无类型参数

有不少Delphi新手对过程(函数)的无类型参数感到困惑,不知该传递什么类型。其实,Delph中有不少这类无类型参数,如常用的Move过程,只要把它当着一个Byte类型的数组看待就行了。

当使用string类型作实参传递给无类型形参时,要把s[1]作为参数传递(string类型下标是从1开始的),或者用指针转换,如PChar(s)^。

如果是Delphi2009及以上版本,string类型作实参传递给无类型形参时,要注意不能简单的将Length(s)传递给SourceSize,而应该是Length(s) * Sizeof(char),因为Length(s)是字符串的长度,而不是实际缓冲区的长度,Delphi2009及以上版本中默认的string是WideString,

char也等于WideChar,每个char占2字节。

当然用string类型传递给无类型参数计算的是Unicode字符串的Base64编码,只有用AnsiString类型传递给无类型参数,或者使用StrToBase64过程(会自动转换string为AnsiString),才可能是你需要的Base64编码.

DELPHI无类型参数的更多相关文章

  1. Delphi无边框Form拖动

    用Delphi做登陆窗口,如果使用无边框Form,想要拖动窗口,可以在某个控件的OnMouseDown事件中写下以下代码 ReleaseCapture; Perform(WM_SYSCOMMAND, ...

  2. delphi 无边框窗体常见问题

    实现无边框窗体很简单,直接将窗体的BorderStyle属性设置为bsNone即可.但是这样会引起2个问题: 1.在xp系统下,任务栏鼠标右键点击无法弹出菜单 解决办法:在FormShow中加入这个过 ...

  3. Java 从无类型参数Map到有类型参数Map传值的一个问题

    import java.util.HashMap; import java.util.Map; public class MapTest { public static void main(Strin ...

  4. delphi无边框可拖动窗体

    unit UFrmModless; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, ...

  5. [Delphi]无边框窗口最大化不挡任务栏方法

    procedure WMGetMinMaxInfo(var mes: TWMGetMinMaxInfo); message WM_GetMinMaxInfo; procedure TfrmMain.W ...

  6. Delphi 无类型文件

  7. Delphi_08_Delphi_Object_Pascal_基本语法_06_函数参数

    发现Delphi中关于函数参数部分的内容还是比较多的,暂时说到这篇随笔为止吧,以后再继续讨论一下函数的参数部分的内容. 一 工程文件 program DefaultParameter; {$APPTY ...

  8. delphi.指针.应用

    注:初稿...有点乱,可能增删改... 因为指针应用,感觉不好写,请大家指出错误,谢谢. 注意: 本文着重点讲的是指针的各类型的应用或使用,而不是说这种方法不应该+不安全+危险+不提倡使用. 其它:本 ...

  9. Delphi的文件操作

    参考自:http://www.cnblogs.com/railgunman/articles/1800318.html Delphi 中默认有input 和 output 两个文件变量,使用可以不用定 ...

随机推荐

  1. JavaWeb 之 Filter 敏感词汇过滤案例

    需求: 1. 对day17_case案例录入的数据进行敏感词汇过滤 2. 敏感词汇参考 src路径下的<敏感词汇.txt> 3. 如果是敏感词汇,替换为 *** 分析: 1. 对reque ...

  2. kube-controller-manager日志报watch of *v1beta1.Event ended with: The resourceVersion for the provided watch is too old

    1.14.2的k8s版本kube-controller-manager日志报watch of *v1beta1.Event ended with: The resourceVersion for th ...

  3. 多代理切换 MultiProxy

    配置代理选项 添加代理列表 ie配置代理 开始使用

  4. robotframework Run keyword if ELSE 用法

    1.Run keyword if    后面必须跟 关键字 ,可以是你自己的, 也可以是 框架自带的 2.ELSE 必须是大写,

  5. angularcli 第八篇(router 路由)

    更多详细:https://segmentfault.com/a/1190000009265310 一.标题:页面有两个按钮(test1.test2),点击这两个按钮,跳转相应页面~ 注:可直接创建一个 ...

  6. Android init介绍(下)

    上一篇请参考<Android init介绍(上)> 5. AIL 在init启动过程中,系统服务等均是通过解析rc文件来启动,而rc文件则是由Android初始化语言(Android In ...

  7. Python开发AI应用-国际象棋应用

    AI 部分总述     AI在做出决策前经过三个不同的步骤.首先,他找到所有规则允许的棋步(通常在开局时会有20-30种,随后会降低到几种).其次,它生成一个棋步树用来随后决定最佳决策.虽然树的大小随 ...

  8. 6、Python基础语法

    一.Python输出 print是python输出的关键字,默认是输出内容后换行. 如果不想换行,需要在变量末尾加上 end="" . a = 'hello' b = 'world ...

  9. linux 查看某个目录下文件的数量

    今日思语:时间是个庸医,却自称能包治百病~ 在linux环境下,经常需要查看某个文件目录下的文件数有多少,除了进入当前目录下查看,还可以使用命令: ls -l | grep "^-" ...

  10. 决策树——C4.5

    -- coding: utf-8 -- """ Created on Thu Aug 2 17:09:34 2018 决策树ID3,C4.5的实现 @author: we ...