TStringStream 怎样转换String

procedure TForm1.Button1Click(Sender: TObject);
var
ss:TStringStream;
str:String;
begin
ss:=TStringStream.Create('');
for i:= to do
begin
ssThickness.WriteString(Floattostr(i+)+',');
end; str:= SS;//此处怎样转换到字符串? end;
分享到:
-- :网友采纳
str:=ss.DataString; 这样就是将TstringStream转换成String

函数参数修饰中的var 、out和const

(1)var修饰符

添加var 是地址传递,会修改原有的变量

var

s: string;

begin

S := 'Hello';

ChangeSVar(s);

ShowMessage(S);

end;

// ChangeSVar 定义

procedure TForm1.ChangeSVar(var A: string);

begin

A := A + 'World';

end;

以上会输出Hello World,因为是传址,修改的是原来的A

(2)无任何修饰符

var

s: string;

begin

S := 'Hello';

ChangeS(s);

ShowMessage(S);

end;

// ChangeS定义

procedure TForm1.ChangeS(A: string);

begin

A := A + 'World';

end;

以上会输出Hello,因为方法ChangeS其实是创建了一个新的A,而输出的还是原来的A,值并没有改变

(3)out修饰符

var

s: string;

begin

S := 'Hello';

ChangeSOut(s);// 此时S的值是'Hello,'而非'Hello,World'!,在过程Hello中的S的原始值被丢弃了

ShowMessage(S);

end;

// ChangeSOut定义

procedure TForm1.ChangeSOut(out A: string);

begin

A := A + 'World';

end;

以上会输出World,out仅仅接受返回的值,对out的任何输入都会被忽略。同时out传递给过程的实际参数不必进行初始化,比如对ChangeSOut的调用:

Var

Tmp: string;

Begin

ChangeSOut(Tmp);//编译也可以通过

End;

(4)Const修饰符

Const修饰的参数传入之后不允许修改

如果在过程中修改参数会报错,比如:

Procedure xxxx.TestConst(const A: String);

Begin

A := ’ss’; //企图修改const修改的参数,会报错

End;

使用LeftStr,RightStr,MidStr截取字符串

如果要使用LeftStr,RightStr,MidStr必需引用系统单元StrUtils; 声明变量Str:string; Str:=HelloWorld; 1,LeftStr(Str,2)=He;//从Str字符串变量的最左边(第一个字符包括第一个字符)开始截取2个字符; 2,RightStr(Str,2)=ld;//从Str字符串变量的最右边(第一

如果要使用LeftStr,RightStr,MidStr必需引用系统单元StrUtils;

声明变量Str:string;

Str:=HelloWorld;

1,LeftStr(Str,2)=He;//从Str字符串变量的最左边(第一个字符包括第一个字符)开始截取2个字符;

2,RightStr(Str,2)=ld;//从Str字符串变量的最右边(第一个字符包括第一个字符)开始截取2个字符;

3,MidStr(Str,2,2)=el;//从Str字符串变量的中第2个字符开始取长度为2个字符的字符串;

另外有一个函数Copy

4,Copy(Str,2,2)=el;//从Str字符串变量的中第2个字符开始取长度为2个字符的字符串;(类似于MidStr);

Delphi中String与PAnsiChar转换

在application.messagebox()函数中的第一个参数要用到PAnsiChar。
所有的原生字符串类型String转PAnsiChar都需要经过AnsiString过渡
strAnsi:= PAnsiChar(AnsiString(str));

PChar与String互转

Delphi PChar与String互转
.String转化成PChar 例: var str: string; pStr:PChar; ... pStr := PChar(str);
PChar := PChar(string); .PChar转String 例: var pStr:PChar; str:string; ... str := strPas(pStr);
string := strPas(PChar);

delphi String 与 Stream的互转

stream1   :=   TStringStream.create(str);   

str   :=   TStringStream(stream1).DataString;

Stream 是抽像类,需要转换成TMemoryStream才能进行操作

英文字母大小写转换

function UpperCase(const S: string): string;转大写

function LowerCase(const S: string): string;转小写

delphi中double或float转Integer实践

var

   d :double;

.用int(d)或integer(d)强制转换,均无法编译

.先FloatToStr,再StrToInt时,当有小数的情况就会发生错误

可行的方法是:先去掉小数部分,再强制转换

integer(Trunc(d));

注:Trunc不会进位。

delphi字符串内多个空格合为一个空格

//delphi字符串内多个空格合为一个空格
Function More2OneSpace(aStr: String): String;
Var
i: Integer;
AWideStr: WideString;
Begin
AWideStr := Trim(aStr);
Result := Copy(AWideStr, , );
//目标串的最后一个字符,利用栈来消除多余的空格
For i := To Length(AWideStr) Do//www.delphitop.com
Begin
If (AWideStr[i] <> ' ') Or (RightStr(Result, ) <> ' ') Then
Begin
Result := Result + AWideStr[i];
End;
End;
End;

将string转化为pwidechar,怎样给pwidechar分配空间,怎样删除pwidechar所占用的空

-----------------乱写的,呵呵
var
S: string
P: PWideChar;
begin
S := 'Hello world';
P := PWideChar(PChar(S));
end;
---------------------------
var
S:string;
P:pwidechar;
begin
S:='hello world';
copymemory(P,@string[],length(string)); end;
----------------------
pName,pPassWord,pGroup,pMemo:PWideChar;
begin
Result:='其它错误';
getmem(pName,);
getmem(pPassWord,);
getmem(pMemo,);
StringToWideChar(name,pname,);
StringToWideChar(Password,pPassWord,);
StringToWideChar(Memo,pMemo,);
//我写的一段程序。正确运行通过。 ?
freemem(parm_err,);
freemem(pName,);
freemem(pPassWord,);
freemem(pMemo,);
//删除pwidechar所占用的空间?
-------------------------
var
s,s1: string;
pw: PWideChar;
begin
s:='hello world';
GetMem(pw,*length(s)+);
pw:=StringToWideChar(s,pw,length(s)+);
s1:=WideCharToString(pw);
edit1.Text:=s1;
freemem(pw);
end;
----------------------
标准做法:
var
s:sting;
pwc:PWidechar;
len:integer;
begin
s:='abcdefg';
len:=length(s)+;
pwc:=AllocMem(len*sizeof(widechar));
stringtowidechar(s,pwc,len);
showmessage(widechartostring(pwc));
FreeMem(pwc);
end;
----------------正确的做法------
大家对STRINGTOWIDECHAR函数有理解上的错误。
STRINGTOWIDECHAR(S,PW,此处应为PW的空间大小除以2:也就是length(s)+。)

字符串string和内存流MemoryStream及比特数组byte[]互转比较

定义string变量为str,内存流变量为ms,比特数组为bt
1.字符串转比特数组
(1)byte[] bt=System.Text.Encoding.Default.GetBytes("字符串");
(2)byte[] bt=Convert.FromBase64String("字符串");
2.字符串转流
(1)MemoryStream ms=new MemoryStream(System.Text.Encoding.Default.GetBytes("字符串"));
(2)MemoryStream ms=new MemoryStream(Convert.FromBase64String("字符串"));
3.流转比特数组
(1)byte[] bt=ms.ToArray();
(2)MemoryStream ms=new MemoryStream();ms.Write(bt,0,ms.Length);
4.流转字符串
(1)string str=Convert.ToBase64String(ms.ToArray());
(2)string str=System.Text.Encoding.Default.GetString(ms.ToArray());
5.比特数组转字符串
(1)string str=System.Text.Encoding.Default.GetString(bt);
(2)string str=Convert.ToBase64String(bt);
6.比特数组转流
(1)MemoryStream ms=new MemoryStream(bt);
(2)MemoryStream ms=new MemoryStream();ms.Read(bt,0,bt.Lenght);
可以看出byte[]比较活跃在string和流转化时是个重要的桥梁

incompatible types

不相容类型

incompatible: [ ,inkəm'pætəbl ]
a. 不相容的,不能并存的,矛盾的
[名词incompatibleness 副词incompatibly]

字符串string和内存流MemoryStream及比特数组byte[]互转比较

定义string变量为str,内存流变量为ms,比特数组为bt
.字符串转比特数组
()byte[] bt=System.Text.Encoding.Default.GetBytes("字符串");
()byte[] bt=Convert.FromBase64String("字符串");
.字符串转流
()MemoryStream ms=new MemoryStream(System.Text.Encoding.Default.GetBytes("字符串"));
()MemoryStream ms=new MemoryStream(Convert.FromBase64String("字符串"));
.流转比特数组
()byte[] bt=ms.ToArray();
()MemoryStream ms=new MemoryStream();ms.Write(bt,,ms.Length);
.流转字符串
()string str=Convert.ToBase64String(ms.ToArray());
()string str=System.Text.Encoding.Default.GetString(ms.ToArray());
.比特数组转字符串
()string str=System.Text.Encoding.Default.GetString(bt);
()string str=Convert.ToBase64String(bt);
.比特数组转流
()MemoryStream ms=new MemoryStream(bt);
()MemoryStream ms=new MemoryStream();ms.Read(bt,,bt.Lenght);
可以看出byte[]比较活跃在string和流转化时是个重要的桥梁

E2010 Incompatible types 'Char' and 'AnsiChar' 错误的处理

E2010 Incompatible types: 'Char' and 'AnsiChar' 错误的处理
在网上搜了一个ping函数,用到pchar(string),编译时出现这个错误,其实以前也碰到这个问题:
delphi7版本中的Pcharh函数在delphi2010中使用时,编译时出现错误:E2010 Incompatible types: 'Char' and 'AnsiChar'
这时可以这样使用: PAnsiChar(AnsiString(string));

说明:
在delpin中之前,Char对应的是AnsiChar,PChar对应PAnsiChar,string(未映射成老的ShortString)对应AnsiString;而在delphi2010里,对应的是WideChar,PChar对应PWideChar,string对应UnicodeString
UnicodeString是delphi2010中出现的新字符串类型,之前没有对应版本;delphi2010中的AnsiString也和之前版本的AnsiString类型有差别(多了两个word,一个表示code page,另一个表示element size),但基本上可以一样用,它与UnicodeString使同相同的管理。如果在delphi2010之前用过tntware套件的话,从没有引用计数的WideString过渡到delphi2010的UnicodeString完全没难度。

delphi 数据处理的更多相关文章

  1. Delphi FrieDAC 大数据处理

    Delphi FrieDAC 大数据处理 大数据处理, 要用到Array DML 插入数据 先要设置插入的数据量 FQuery1.Params.ArraySize := 1000; for index ...

  2. Delphi中ComPort通信中的数据处理

    源: Delphi中ComPort通信中的数据处理

  3. delphi.指针.PChar

    此文是delphi.指针.应用姊妹篇,想细化一下PChar应用,所以有了此文. 注意: 1:此文讲的是PChar与字符串相关操作,其它方法暂不多讲. 2:由于D分开Ansi/Unicode的两种完全不 ...

  4. Delphi 时间耗时统计

    处理事情: 数据处理过程中,速度很慢,无法准确定位分析是DB问题还是客户端处理问题,所以增加计时统计日志: Delphi计时首次使用,查阅资料,予以记录: var BgPoint, EdPoind: ...

  5. [原创]DELPHI木马DIY之生成服务端

    文章作者:上帝的禁区信息来源:邪恶八进制信息安全团队(www.eviloctal.com)DELPHI木马DIY之生成服务端   我在这里就生成简单的服务端,为什么不先讲服务端的隐藏?因为我觉得生成服 ...

  6. 基于Delphi的三层数据库系统的实现方法

    基于Delphi的三层数据库系统的实现方法   1  引言 当前的数据库应用系统中,按其结构划分为两类,一类是两层结构的数据库应系统,另一类是多层结构的数据库应用系统. 两层结构的数据库应用系统包括客 ...

  7. DELPHI下的SOCK编程(转)

    DELPHI下的SOCK编程      本文是写给公司新来的程序员的,算是一点培训的教材.本文不会涉及太多的编程细节,只是简单讲解在DELPHI下进行Winsock编程最好了解的知识. 题外话:我认为 ...

  8. delphi关于文件操作集锦

        关于文件操作集锦 取得该快捷方式的指向EXE关键词:快捷方式 LNK unit Unit1; interface usesWindows, Messages, SysUtils, Varian ...

  9. DELPHI下的SOCK编程

     DELPHI下的SOCK编程(转自http://www.cnblogs.com/devcjq/articles/2325600.html) 本文是写给公司新来的程序员的,算是一点培训的教材.本文不会 ...

随机推荐

  1. 使用node-static运行vue打包文件dist

    vue打包后的文件dist,如果想上线之前查看效果,方法如下: npm install -g node-static 进入到dist文件夹,运行static命令 打开上面地址

  2. [CSP-S模拟测试]:影魔(树状数组+线段树合并)

    题目背景 影魔,奈文摩尔,据说有着一个诗人的灵魂.事实上,他吞噬的诗人灵魂早已成千上万.千百年来,他收集了各式各样的灵魂,包括诗人.牧师.帝王.乞丐.奴隶.罪人,当然,还有英雄.每一个灵魂,都有着自己 ...

  3. PHP【Laravel】delayer基于redis的实现订单超时改变状态

    实现这个功能前你需要知道以下,不然可能会比较吃力:1.服务器的计划任务,shell脚本,或者你有宝塔自带的计划任务会方便很多.2.有所了解Redis.3.会写PHP业务逻辑. 好了进入在正题,这里使用 ...

  4. python locust-事件顺序

    from locust import HttpLocust,TaskSet,task ''' 点击STOP,会停止测试,并调用所有当前执行的TaskSet的on_stop,但不会调用teardown函 ...

  5. CTO 技能图谱skill-map

    # CTO 技能图谱 ### 岗位职责* 建立技术团队文化* 规划技术发展路线* 落地产品研发成果* 宣传公司技术品牌* 吸引优秀技术人才 ### 基本素质* 正直诚实的道德修养* 谦虚谨慎的工作态度 ...

  6. 运放参数的详细解释和分析-part1,输入偏置电流和输入失调电流【转】

    一般运放的datasheet中会列出众多的运放参数,有些易于理解,我们常关注,有些可能会被忽略了.在接下来的一些主题里,将对每一个参数进行详细的说明和分析.力求在原理和对应用的影响上把运放参数阐述清楚 ...

  7. Leetcode 最长连续序列

    题目链接:https://leetcode-cn.com/problems/longest-consecutive-sequence/ 题目大意: 略. 分析: 注意有重复值,序列为空等情况. 代码如 ...

  8. 树的重心(DFS)

    ;vector< ; i < v[node].size() ; i++){ , ; i <= n- ; i++){ cin >> a >> b; v[a].p ...

  9. 转 jmeter 关联

    jmeter(十二)关联之正则表达式提取器   如果有这样的情况:一个完整的操作流程,需要先完成某个操作,获得某个值或数据信息,然后才能进行下一步的操作(也就是常说的关联/将上一个请求的响应结果作为下 ...

  10. CentOS MySQL 5.7编译安装

    CentOS MySQL 5.7编译安装 MySQL 5.7 GA版本的发布,也就是说从现在开始5.7已经可以在生产环境中使用,有任何问题官方都将立刻修复. MySQL 5.7主要特性: 更好的性能: ...