小编Fra*_*ois的帖子

将Hi-Ansi字符转换为等效的Ascii(é - > e)

在Delphi 2007中是否有例程可以根据区域设置(代码页)将ANSI表(> 127)的高范围内的字符转换为纯ASCII(<= 127)中的等效字符?

我知道有些字符不能很好地翻译,但大多数字符都可以,尤其是.在192-255范围内:

  • ÀA
  • àa
  • ËE
  • ëe
  • ÇC
  • çc
  • - (简称)- (连字符 - 可能比较棘手)
  • - (em dash)- (连字符)

delphi ascii character-encoding delphi-2007 non-ascii-characters

23
推荐指数
2
解决办法
7817
查看次数

是否可以在TSQL查询中定义本地函数?

我有一个复杂的表达式来计算我必须在多个日期列上使用的日期的值.
我可以在查询中定义临时本地函数,以避免复制和粘贴此表达式.?

喜欢:

create MyLocalFunc(@ADate datetime) 
returns int as
begin
  blablabla
end

select
  MyLocalFunc(col1), col2, MyLocalFunc(col3), col4, MyLocalFunc(col5)
from
  mytable
Run Code Online (Sandbox Code Playgroud)

作为一种解决方法,我知道我可以做一个CREATE FUNCTION // DROP FUNCTION,但我宁愿避免它.

t-sql sql-server user-defined-functions

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

如何在安装而不是每次启动时一次性地将参数传递给Windows服务

我们有一个Windows服务应用程序,可以接受命令行参数,如:

MyService -option 
Run Code Online (Sandbox Code Playgroud)

到目前为止,当我们想要使用参数启动服务时,我们可以从"服务属性"对话框(在"启动参数"框中)或使用命令手动执行此操作

sc start MyService -option  
Run Code Online (Sandbox Code Playgroud)

我们想要的是一种使用此参数"永久"安装服务的方法,这样用户只需每次都可以启动/停止它而无需设置参数.

顺便说一句,在ImagePath注册表项中添加参数不起作用,也没有像这样安装:

MyService -option /install
Run Code Online (Sandbox Code Playgroud)

更新:感谢您到目前为止的答案,这有助于我完善问题.
我想要实现的是在同一个可执行文件中有多个服务的情况下,将参数设置为服务级别本身(与属性一样).binpath配置选项仅仅是更新注册表中的ImagePath条目.这不是特定于服务的.

windows parameters service command-line install

19
推荐指数
2
解决办法
6万
查看次数

如何在运行时切换主题和非主题之间的应用程序?

非常类似于"项目|选项|应用程序|启用运行时主题"CheckBox,而是在运行时动态生成.
[Delphi XE目标Win XP或Win 7]

我试过玩uxTheme.SetWindowTheme到目前为止没有成功....

delphi themes xp-theme windows-7 delphi-xe

17
推荐指数
1
解决办法
7868
查看次数

Delphi 7形式,不在Vista中工作

该软件基于Delphi 7构建.

在我的XP机器上,表单按照我的预期调整大小.但是,在两台Vista机器上,我的组件的锚点设置为[akLeft,akTop,akRight,akBottom],但是当我调整表单大小时,组件不会随表单一起拉伸,在右边缘和底边留下空白.在XP机器上,组件正确地与表单一起拉伸.

所以,似乎Vista机器忽略了锚属性.是什么导致了这个以及如何解决这个问题?

重要更新(François):
我们的D2007应用程序和所有x64窗口都存在同样的问题.
安德烈亚斯的回答确实是解决方案.所以它不是D7也不是Vista相关的.

forms windows delphi anchor 64-bit

14
推荐指数
1
解决办法
5270
查看次数

在D2009中改变TStringStream.ReadString的行为?

我今天注意到在D2009(更新1)中,TStringStream.ReadString不再像以前那样在D2007中移动流中的位置.
因此,在MyStringStream.ReadString(10)上循环将始终读取流的前10个字符而不是移动并获得10个字符的所有流10个字符.我检查了文档,它仍然说ReadString应该移动位置...
任何人都可以确认它是否是D2009代码中的错误或者是否有设计更改(以及为什么)并且文档已过时?
谢谢...

更新:QC#68582中报告的问题

delphi

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

Delphi 7 GIF图片对话框

我正在使用Delphi 7和OpenPictureDialog来打开/预览各种图像.这在打开bmp,jpg等时工作正常; 但是,如果我尝试使用gif执行相同操作,则会出现以下错误.任何人都知道为什么或有一个修复它?

谢谢

科林

替代文字

delphi gif

7
推荐指数
1
解决办法
4233
查看次数

谁将TCP窗口大小设置为0,Indy或Windows?

我们有一个应用程序服务器,当网络拥塞时(在客户端的站点),已经观察到发送带有TCP窗口大小为0的标头.

我们想知道是否是Indy或底层Windows层负责根据标称64K调整TCP窗口大小以适应可用吞吐量.
而且我们可以在它变为0时动作(没有任何东西被发送,用户等待=>没有好处).

因此,欢迎任何信息,链接,指向Indy代码的指针......

免责声明:我不是网络专家.请保持答案可以理解为平均我;-)
注意:它是Windows Server 2003 SP2上的Indy9/D2007.

更多详细信息:
TCP零窗口案例发生在与数据库服务器通信的中间层上.
它发生在最终用户抱怨客户端应用程序速度减慢的同一时刻(这是触发网络调查的原因).
已确定2个导致瓶颈的主要网络问题.
TCP零窗口发生在网络拥塞时,但可能是也可能不是由它引起的.
我们想知道什么时候发生,并且有办法在我们的代码中做一些事情(至少记录日志).

所以核心问题是谁将窗口大小设置为0以及在哪里?
在哪里挂钩(在Indy?)以了解何时发生这种情况?

delphi tcp delphi-2007 indy-9

6
推荐指数
1
解决办法
6377
查看次数

是否可以使用start从cmd文件中使用输出重定向?

我想要一个cmd文件,例如:

:one
start /wait (blabla1.exe -q -m 1>blabla1.log 2>&1)

:two
start /wait (blabla2.exe -q -m 1>blabla2.log 2>&1)
Run Code Online (Sandbox Code Playgroud)

我想要blabla应用程序的输出而不是start命令的输出.

甚至可以在start命令中使用"local"重定向吗?

我是否必须创建包含1行cmd
blabla1.exe -q -m 1>blabla1.log 2>&1
并将其传递给start命令?

更新:我需要在启动第二个(blabla2.exe)之前完成第一个(blabla1.exe).这就是使用的原因start /wait.

(Windows XP及更高版本)

windows shell command-line cmd

6
推荐指数
2
解决办法
7784
查看次数

如何使用D2007从异常块中使用Halt(n)返回错误代码?

更新:似乎特定于D2007.它在D2010中工作,就像它在旧版本中工作一样.

我想返回一个退出代码,具体取决于Eception Handler块中捕获的异常类型,如:

program test;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  Exitcode: Integer;
begin
  Writeln('Enter error code:');
  Readln(Exitcode);
  try
    raise EExternal.Create('sdsdkfjh');
  except
    on E:EExternal do
    begin
      Writeln(E.Classname, ': ', E.Message);
      Halt(Exitcode);
    end;
  end;
end.
Run Code Online (Sandbox Code Playgroud)

不幸的是,在D2007中,从异常块调用Halt(n)总是返回退出代码1,无论你传递给Halt().

显然,因为退出Exception处理程序调用Finalize,它会清除挂起(非Abort)异常,调用SysUtils.ExceptHandler:

procedure ExceptHandler(ExceptObject: TObject; ExceptAddr: Pointer); far;
begin
  ShowException(ExceptObject, ExceptAddr);
  Halt(1); // <= @#$##@#$!
end;
Run Code Online (Sandbox Code Playgroud)

无论我想要什么退出代码,我都能得到它Halt(1)!

所以问题是:
我怎样才能简单地返回所需的退出代码,具体取决于引发的异常?

delphi exception halt exit-code delphi-2007

6
推荐指数
1
解决办法
4614
查看次数