小编And*_*and的帖子

德尔福SAPI Text-To-Speech

首先:这不是Delphi和SAPI的重复.我对"Delphi中的SAPI"主题有一个具体问题.

我在Delphi 2009中使用了优秀的Import Type-Library指南来获取组件面板中的TSpVoice组件.这非常有效.同

var
  SpVoice: TSpVoice;
Run Code Online (Sandbox Code Playgroud)

我可以写

SpVoice.Speak('This is an example.', 1);
Run Code Online (Sandbox Code Playgroud)

获得异步音频输出.

第一个问题

根据文档,我可以写

SpVoice.Speak('This is an example.', 0);
Run Code Online (Sandbox Code Playgroud)

获得同步音频输出,但我获得了EZeroDivide异常.为什么?

第二个问题

但更重要的是,我希望能够动态创建SpVoice对象(我认为这被称为"后期绑定"SpVoice对象),部分原因是我的应用程序的所有会话中只有一小部分会使用它,部分是因为我不想假设最终用户系统上存在SAPI服务器.

为此,我试过了

procedure TForm1.FormClick(Sender: TObject);
var
  SpVoice: Variant;
begin
  SpVoice := CreateOleObject('SAPI.SpVoice');
  SpVoice.Speak('this is a test', 0);
end;
Run Code Online (Sandbox Code Playgroud)

显然什么也没做!(将0替换为0可以获得EZeroDivide异常.)

放弃

我是COM/OLE自动化的新手.对于我在这篇文章中所表现出的任何无知或愚蠢,我感到很抱歉......

更新

为了让每个人遇到与我一样的问题,François的视频解释说SAPI/Windows中存在一个错误(某些地方不兼容),这使得以下代码引发了EZeroDivide异常:

procedure TForm1.FormClick(Sender: TObject);
var
  SpVoice: variant;
begin
  SpVoice := CreateOleObject('SAPI.SpVoice');
  SpVoice.Speak('This is a text.');
end;
Run Code Online (Sandbox Code Playgroud)

视频中提供的解决方案是更改FPU控制字:

procedure TForm1.FormClick(Sender: TObject);
var
  SpVoice: variant;
  SavedCW: Word;
begin
  SpVoice := CreateOleObject('SAPI.SpVoice'); …
Run Code Online (Sandbox Code Playgroud)

delphi sapi text-to-speech createoleobject

10
推荐指数
1
解决办法
1万
查看次数

Delphi:有可能有一个带有禁用项目的组合框吗?

如何让TComboBox包含一些禁用的项目?我需要用户查看这些项目,但无法选择它们.

谢谢!

delphi combobox

10
推荐指数
2
解决办法
1万
查看次数

Delphi,删除带内容的文件夹

当我在文件夹中有子文件夹时 - 此代码不是删除文件夹...是否有任何错误?

procedure TForm.Remove(Dir: String);
var
  Result: TSearchRec; Found: Boolean;
begin
  Found := False;
  if FindFirst(Dir + '\*', faAnyFile, Result) = 0 then
    while not Found do begin
      if (Result.Attr and faDirectory = faDirectory) AND (Result.Name <> '.') AND (Result.Name <> '..') then Remove(Dir + '\' + Result.Name)
      else if (Result.Attr and faAnyFile <> faDirectory) then DeleteFile(Dir + '\' + Result.Name);
      Found := FindNext(Result) <> 0;
    end;
  FindClose(Result); RemoveDir(Dir);
end;
Run Code Online (Sandbox Code Playgroud)

windows delphi delphi-7

10
推荐指数
4
解决办法
2万
查看次数

一些GIF查看器的Delphi TGIFImage动画问题

我发现使用Delphi 2009创建的动画GIF TGIFImage有时在某些 GIF查看器中无法正常播放.问题是动画过早地重新启动.

请考虑以下示例:

program GIFAnomaly;

{$APPTYPE CONSOLE}

uses
  Windows, Types, Classes, SysUtils, Graphics, GIFImg;

var
  g: TGIFImage;
  bm: TBitmap;

procedure MakeFrame(n: integer);
var
  x: Integer;
  y: Integer;
begin
  for x := 0 to 256 - 1 do
    for y := 0 to 256 - 1 do
      bm.Canvas.Pixels[x, y] := RGB((x + n) mod 255,
        (x + y - 2*n) mod 255, (x*y*n div 500) mod 255);
end;

var
  i: integer;

begin

  bm := TBitmap.Create;
  bm.SetSize(256, 256); …
Run Code Online (Sandbox Code Playgroud)

delphi animation gif animated-gif tgifimage

10
推荐指数
1
解决办法
1804
查看次数

基于数学输入生成方程png文件

我想知道哪些选项可以根据输入图形计算器的输入类型生成.png ..所以

(y ^ 2 + 5x + 3)/((3x + 3)+ 5y + 18)

会回来的

替代文字

到目前为止我唯一发现的是mediaviki中的texvc,但是为其中一个模块获取整个mediawiki似乎有些过分.

python math equation

9
推荐指数
1
解决办法
1069
查看次数

Delphi 7中的圆形和标题为"TPanel"

我会在我的应用程序中有一个TPanel,但另外看一下.
对于它我想要一个彩色的标题栏和向上的角落就像在一些用户界面,如 你知道任何组件或库吗?(首选开源但不仅仅是).
我试过TJVCaptionPanel它没关系,但需要四舍五入.

delphi user-interface controls panel

9
推荐指数
2
解决办法
7375
查看次数

无法在文件名末尾复制/移动带空格的文件

真的很疯狂!我使用Far 2.0创建了一个文件(http://www.farmanager.com/,也许你可以使用其他文件管理器); 它的文件名是'C:\ 123.txt' (是的,文件路径末尾有空格).

我正在尝试使用C#程序复制或移动此文件:

File.Copy("C:\\123.txt ", "C:\\456.txt", true);
Run Code Online (Sandbox Code Playgroud)

但它失败了"无法找到文件'C:\ 123.txt'." 例外.但文件存在!

我正在尝试Windows API:

[DllImport("kernel32.dll")]
public static extern int MoveFile(string lpExistingFileName, string lpNewFileName);
MoveFile("C:\\123.txt ", "C:\\456.txt",);
Run Code Online (Sandbox Code Playgroud)

但它也失败了.

我正在尝试xcopy实用程序:

C:\>xcopy "C:\123.txt " "C:\456.txt" /Y
File not found - 123.txt
0 File(s) copied
Run Code Online (Sandbox Code Playgroud)

如何以编程方式重命名文件?为什么会发生这种情况?

我的操作系统:Windows 7 x64

c# winapi filenames

9
推荐指数
1
解决办法
2600
查看次数

Delphi:ListView(vsReport)单列标题标题与自定义字体颜色?

在带有vsReport ViewStyle的ListView中,如何自定义任何单列标题标题的字体颜色?例如(第二列标题标题具有红色字体颜色): 在此输入图像描述

windows delphi listview columnheader delphi-xe2

9
推荐指数
2
解决办法
5089
查看次数

大括号:Ruby&Rails中的[Brackets],(圆括号)和{Curlies}

因此,Ruby 有时候使用大括号而不是要求它们的宽松容忍度导致了很多混乱,因为我正在尝试学习Rails以及何时/何地使用它们以及为什么?

有时参数或值会像(@user, @comment)它们看起来那样传递,而其他时候传递[ :user => comment ]的只是::action => 'edit'

我在谈论[] vs () vs {}的我们

规则是什么?你有什么技巧可以帮助你记住吗?

ruby jrubyonrails curly-braces parentheses square-bracket

8
推荐指数
1
解决办法
6063
查看次数

字符串中有多少个不同的字母

我必须编写程序来计算字符串中有多少个不同的字母.例如"abc"将给出3; 而且"abcabc"也会给3,因为只有3个不同的字母.

我需要使用pascal,但是如果你可以帮助使用不同语言的代码,它也会非常好.

这是我的代码不起作用:

var s:string;
    i,j,x,count:integer;
    c:char;
begin
  clrscr;

  Readln(s);
  c:=s[1];
  x:=1;

  Repeat
  For i:=1 to (length(s)) do
  begin
    If (c=s[i]) then
    begin
      delete(s,i,1);
      writeln(s);
    end;
  end;
  c:=s[1];
  x:=x+1;
  Until length(s)=1;

  Writeln(x);
Run Code Online (Sandbox Code Playgroud)

x是不同的字母计数器; 也许我的algorythm非常糟糕..任何想法?谢谢.

delphi string pascal

8
推荐指数
1
解决办法
3499
查看次数