我们想要做的是在同一台机器上安装多个Delphi版本,这些版本是D7,D2010和DXE.
我们以前有D7和D2010,一起工作正常(由于各种版本的特殊条件,不得不复制D7和D2010的组件),但是,我不确定XE,因此问题.
当然我们可以试验,但这意味着浪费了几个小时,所以如果有人已经做了类似的设置或积极拥有,你能分享一下你的经验吗?
编辑1:
D7-D2010安装按时间顺序排列:
我有一个整数或字符串列表,需要将它作为Delphi DataSet的参数传递.怎么做?
这是一个例子.MyQuery是这样的:
select * from myTable where intKey in :listParam
Run Code Online (Sandbox Code Playgroud)
我将参数设置为列表或数组或其他:
MyQuery.ParamByName('listParam').AsSomething := [1,2,3];
Run Code Online (Sandbox Code Playgroud)
它会导致此查询发送到sql server:
select * from myTable where intKey in (1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
如果解决方案也可以使用字符串,那么这个查询会更好:
select * from myTable where stringKey in :listParam
Run Code Online (Sandbox Code Playgroud)
成为:
select * from myTable where stringKey in ('a', 'b', 'c')
Run Code Online (Sandbox Code Playgroud)
我相信这是一个简单的问题,但"IN"不是搜索网络的好关键字.
请回答我应该如何配置IDE中的参数,查询以及如何传递参数.
我正在使用Delphi 7.
编辑:我正在考虑答案是" 不可能直接做 ".如果有人给我一个非hackish的答案,接受的答案将被更改.
我需要简单的TMemo,它不会在不需要时显示滚动条(即文本不足),但是当它们存在时会显示.类似于ScrollBars = ssAuto或类似于TRichEdit HideScrollBars.
我试图将TMemo子类化并ES_DISABLENOSCROLL在CreateParams中使用,TRichEdit但它不起作用.
编辑:这应该在WordWrap启用或不启用的情况下工作.
如何使用C#类似Math.Round与MidpointRounding.AwayFromZero在Delphi?
相当于什么:
double d = 2.125;
Console.WriteLine(Math.Round(d, 2, MidpointRounding.AwayFromZero));
Run Code Online (Sandbox Code Playgroud)
输出: 2.13
在德尔福?
我需要从字符串中删除所有非标准文本characers.我需要删除所有非ascii和控制字符(换行/回车除外).
使用delphi 7:
AddObject?将一个整数添加到stringlist项的对象部分?我在VS2010中创建了一个新的c ++ DLL项目,它暴露了1个函数
#include "stdafx.h"
#define DllImport extern "C" __declspec( dllimport )
#define DllExport extern "C" __declspec( dllexport )
DllExport int DoMath( int a, int b) {
return a + b ;
}
Run Code Online (Sandbox Code Playgroud)
然后我用VS2010创建了一个C++应用程序来测试这个DLL.在VS2010中构建的测试应用程序可以调用c ++ DLL并获得预期的结果.
#include "stdafx.h"
#include <windows.h>
typedef int (*DoMath)(int, int) ;
int _tmain(int argc, _TCHAR* argv[])
{
HMODULE hMod = LoadLibrary ("exampleDLL.dll");
if (NULL != hMod) {
DoMath mf1 = (DoMath) GetProcAddress(hMod,"DoMath");
if( mf1 != NULL ) {
printf ("DoMath(8,7)==%d \n", mf1(8,7) );
} else { …Run Code Online (Sandbox Code Playgroud) 我试图以递归方式删除文件夹及其所有子文件夹,但它根本不起作用,所以有人可以检查代码并告诉我这里做错了什么吗?
我在Windows XP下通过D7运行此代码
if FindFirst (FolderPath + '\*', faAnyFile, f) = 0 then
try
repeat
if (f.Attr and faDirectory) <> 0 then
begin
if (f.Name <> '.') and (f.Name <> '..') then
begin
RemoveDir(FolderPath +'\'+ f.Name);
end
else
begin
//Call function recursively...
ClearFolder(FolderPath +'\'+ f.Name, mask, recursive);
end;
end;
until (FindNext (f) <> 0);
finally
SysUtils.FindClose (f)
end;
end;
Run Code Online (Sandbox Code Playgroud) 有没有人知道如何创建没有标题栏的Delphi表单?我已经看到一些链接/提示,但它不完全是我想要的,我自己也做不到.
这就是我想要实现的目标:

在我的服务器上有几个文件的修改日期31/DEC/1979(不要问我原因).所以FileExists返回false.
Sysutils.FileExists 看起来像这样:
function FileAge(const FileName: string): Integer;
var
Handle: THandle;
FindData: TWin32FindData;
LocalFileTime: TFileTime;
begin
Handle := FindFirstFile(PChar(FileName), FindData);
if Handle <> INVALID_HANDLE_VALUE then
begin
Windows.FindClose(Handle);
if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
begin
FileTimeToLocalFileTime(FindData.ftLastWriteTime, LocalFileTime);
if FileTimeToDosDateTime(LocalFileTime, LongRec(Result).Hi,
LongRec(Result).Lo) then Exit;
end;
end;
Result := -1;
end;
function FileExists(const FileName: string): Boolean;
begin
Result := FileAge(FileName) <> -1;
end;
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么功能首先取决于FileAge?以下行不够吗?:
if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
// Yes the file exists!
Run Code Online (Sandbox Code Playgroud)
甚至基于文件属性:
function …Run Code Online (Sandbox Code Playgroud) delphi ×10
delphi-7 ×10
delphi-2010 ×2
ascii ×1
c# ×1
c++ ×1
delphi-xe ×1
dll ×1
parsing ×1
sql ×1
sql-server ×1
tstringlist ×1