delphi中流stream的操作.(个人笔记)

2005年10月25日,今天在做一个自己用的小程序. 需要用到流把一些字符符和文件连接起来.使用过程中出现了不少问题. 这些问题需小,但也浪费了我不少时间去解决.现在把问题记录下来以方便我将来查阅:

流的操作不外乎"读"Write, "写"Read,定位Seek:

把信息读入流里是使用.TStream.Write(var buf ;count:integer)方法.

而把信息从流里读给变量则用TStream.Read(var buf;count:integer)方法.

这两个方法在我刚学使用流整天搞乱,需然现在已尼很清楚了但还是写下来.

如果一个流想把另一个流读入自己,应该写成这样.

s1.Write(s2.Memory^,s2.size); //写成s1.Write(s2,s2.size);是错误的.

如果想让流读入一个字符串应该这样写:

var

s:string;

s1:TMemoryStream;

begin

s:='你要的字符串';

s1.Write(s[1],length(s)-1);//s1.write(s,length(s));是错误的,因为在delphi里,字符的第一位s[0]用来保存了字符的长度.这样写读入的信息也是错误的.这是我的理解,不过为什么length(s)要减一,我不是搞不懂.

........

流的信息读完了,是时候作其它处理了,我现在要把他保存在一个数组里.应该这样做:

var

b:ansistring;

begin

    setLength(b,s.size);
    s.Seek(0,soFromBeginning);
    s.Read(b[1],s.Size);//这里也要注意写成了s.Read(b,s.size)也是错的.

Delphi英文语音朗读程序(控件及源码)调试OK 先安装Microsoft Speech SDK 5.1,这是微软的声音支持控件 前面安装不多做介绍,一步一步安装即可 安装完成后,需要加载Delphi控件 在Delphi IDE选择菜单Project,Import Type Library—点击按钮Add(C:\Program Files\Common Files\Microsoft Shared\Speech\ sapi.dll)—点击按钮Install-在Install对话框点击按钮OK—在Confirm对话框点击按钮Yes—在对话框点击按钮OK。至此,共19个控件被添加到Delphi组件板ActiveX页上。其spvoice控件是我们要使用的 Microsoft Speech SDK 5.1下载地址:http://intraweb.5d6d.com/thread-280-1-1.html SpVoice详解 属性 描述 AlertBoundary 取得或设置停顿分界线。 AllowAudioOutputFormatChangesOnNextSet 设置是否允许声音自动调整到合适状态以适应其音频输出。 AudioOutput .取得或设置当前声音使用的的音频输出对象 AudioOutputStream 取得或设置当前声音使用的的音频输出流对象。 EventInterests 取得或设置当前声音返回的事件类型。 Priority 取得或设置声音的优先级。 Rate 取得或设置阅读的速度。 Status 返回一个ISpeechVoiceStatus 对象用于显示当前阅读和事件的状态 SynchronousSpeakTimeout 取得或设置一个时间间隔,用于标识多久未获得一个输出设备后,一个同步的Speak 和SpeakStream将终止,以毫秒计算。 Voice 取得或设置发音对象。 Volume 取得或设置声音的大小 。 方法 描述 DisplayUI 是否在控制面板展示详细设置。 GetAudioOutputs 返回一个可用的音频输出标记。 GetVoices 返回一个可用的发音对象。 IsUISupported 决定是否能通过控制棉板的音频设置来控制。 Pause 暂停朗读。. Resume 恢复暂停,继续播放。 Skip 在当前输入的文本流向前或向后跳一定距离再播放。 Speak 阅读一个字符串。 SpeakCompleteEvent 得到一个朗读完毕的时间句柄 SpeakStream 朗读一个文本流或一个声音文件。 WaitUntilDone 阻塞进程,直到声音播放完毕或者超时。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值