我有一个带有smallint列的表,其中包含百分比作为整数(即50,75,85等)
当我将此列除以100时,如
SELECT MY_COLUMN/100 AS PCT_AS_FRACTION
FROM MY_TABLE
Run Code Online (Sandbox Code Playgroud)
结果四舍五入到最接近的整数.例如,对于包含数字"50"的行,我的结果为零.
我可以用一个简单的声明复制它:
SELECT 50 / 100 AS TEST_VALUE
Run Code Online (Sandbox Code Playgroud)
为什么会这样,我怎样才能在结果中获得更高的精确度?
我有一个带有"清除"按钮的表单.
当用户单击"清除"时,我想清除表单上所有可见元素的值.在日期控件的情况下,我想将它们重置为当前日期.
我的所有控件都包含在Panel中.
现在,我正在使用以下代码执行此操作.有没有比手动检查每种控件类型更简单的方法?这种方法似乎过于笨拙.
更糟糕的是,为了递归清除子容器内的控件(即面板中的组合框),我必须用重载的"GroupBox"版本重复整个怪物.
编辑:感谢您的建议,以下代码大大简化.
Private Sub btnClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClear.Click
'User clicks Clear, so clear all the controls within this panel
ClearAllControls(panMid, True) 'True indicates that yes, i want to recurse through sub-containers
End Sub
ClearAllControls(ByRef container As Panel, Optional Recurse As Boolean = True)
'Clear all of the controls within the container object
'If "Recurse" is true, then also clear controls within any sub-containers
Dim ctrl As Control
For Each ctrl …Run Code Online (Sandbox Code Playgroud) 我想迭代枚举中的项目.
我希望能够说出这样的话:
type
TWeekdays = (wdMonday, wdTuesday, wdWednesday, wdThursday, wdFriday);
...
elementCount := GetElementCount(TypeInfo(TWeekDays));
for i := 0 to elementCount - 1 do begin
ShowMessage(GetEnumName(TypeInfo(TWeekdays),i));
end;
Run Code Online (Sandbox Code Playgroud)
我能来的最接近的是:
function MaxEnum(EnumInfo: PTypeInfo): integer;
const
c_MaxInt = 9999999;
var
i: integer;
s: string;
begin
//get # of enum elements by looping thru the names
//until we get to the end.
for i := 0 to c_MaxInt do begin
s := Trim(GetEnumName(EnumInfo,i));
if 0 = Length(s) then begin
Result := i-1;
Break;
end;
end; …Run Code Online (Sandbox Code Playgroud) 我是在回答你自己的问题的精神发表这篇文章的.
我的问题是:如何在Delphi中实现Levenshtein算法来计算两个字符串之间的编辑距离,如此处所述?
只是关于性能的说明:这件事非常快.在我的桌面上(2.33 Ghz双核,2GB内存,WinXP),我可以在不到一秒的时间内完成100K字符串的数组运行.
微软已经为Visual Studio 2012发布了一个Git插件.我发现它很棒,但似乎没有任何选项可以更改默认的Diff工具.更糟糕的是,我无法对ascx代码隐藏文件做差异.它仅显示主.ASCX文件的diff选项.
你怎么
在Delphi 2010中,如果我想这样做:
{$IFDEF VER999}
//some delphi 2010-specific code here
{$ENDIF}
Run Code Online (Sandbox Code Playgroud)
我需要使用什么版本代替"999"?
我想要一个基本html页面上的超链接列表,它指向我们公司内部网上的文件.
当用户单击该链接时,我希望该文件打开.它们是excel电子表格,这是一个内部网环境,所以我可以指望每个人都安装了Excel.
我尝试了两件事:
<a href="file://server/directory/file.xlsx">Click me!</a>
Run Code Online (Sandbox Code Playgroud)
<HTML>
<HEAD>
<SCRIPT LANGUAGE=VBScript>
Dim objExcel
Sub Btn1_onclick()
call OpenWorkbook("\\server\directory\file.xlsx")
End Sub
Sub OpenWorkbook(strLocation)
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = true
objExcel.Workbooks.Open strLocation
objExcel.UserControl = true
End Sub
</SCRIPT>
<TITLE>Launch Excel</Title>
</HEAD>
<BODY>
<INPUT TYPE=BUTTON NAME=Btn1 VALUE="Open Excel File">
</BODY>
</HTML>
Run Code Online (Sandbox Code Playgroud)
我知道这是一个非常基本的问题,但我很感激能得到的任何帮助.
编辑:任何适用于IE和Firefox的建议?
我想在Delphi 2007(Win32)的错误对话框中显示堆栈跟踪.
理想情况下,我喜欢这样的事情:
try
//do something
except on e : exception do
begin
//rollback a transaction or whatever i need to do here
MessageDlg('An error has occurred!' + #13#10 +
e.Message + #13#10 +
'Here is the stack trace:' + #13#10 +
e.StackTrace,mtError,[mbOK],0);
end; //except
end; /try-except
Run Code Online (Sandbox Code Playgroud)
并且输出与IDE中的调用堆栈类似:
MYPROGRAM.SomeFunction
MYPROGRAM.SomeProcedure
MYPROGRAM.MYPROGRAM
:7c817067 kernel32.RegisterWaitForInputIdle + 0x49
Run Code Online (Sandbox Code Playgroud) 我将此VBScript脚本保存为本地计算机为c:\ test.vbs:
WScript.StdOut.WriteLine "This is a test"
Run Code Online (Sandbox Code Playgroud)
当我从命令行运行它时,我收到此错误:
---------------------------
Windows Script Host
---------------------------
Script: C:\test.vbs
Line: 1
Char: 1
Error: The handle is invalid.
Code: 80070006
Source: (null)
---------------------------
OK
---------------------------
Run Code Online (Sandbox Code Playgroud)
我在Windows Vista(SP1)和Windows XP Pro(SP3)下得到了这个.
我正在使用Delphi,我想在MessageDlg的按钮中显示自定义文本,如此处所述.最好的方法是什么?
delphi ×5
algorithm ×1
delphi-2010 ×1
enums ×1
git ×1
git-difftool ×1
html ×1
rounding ×1
sql-server ×1
templates ×1
vb.net ×1
vbscript ×1