使用 Delphi XE4 时,我可以通过以下路径访问 RAD Studio 中的调试器参数
Project --> Options --> Debugger --> Parameters
Run Code Online (Sandbox Code Playgroud)
但是我在 Delphi 7 中找不到相同的内容。我可以在哪里设置 Delphi 7 中的调试器参数?
实际上,当我像这样从命令行运行我的应用程序时
C:> myApplication.exe 12345,它工作正常。我的应用程序ParamStr(1)用于设置一些初始值。所以我通过上面的路径在我的 Delphi XE4 RAD Studio 中设置了 12345
Project --> Options --> Debugger --> Parameters
Run Code Online (Sandbox Code Playgroud)
同样我必须在我的 Delphi 7 应用程序中设置,但我没有找到设置此参数的路径?
exzample code:
var
str1 : String;
str2 : AnsiString;
....
str2 := ....;
str1 := String(str2);
Run Code Online (Sandbox Code Playgroud)
我按照上面的方法进行了转换,但没有成功。我发现 str1 中丢失了一些数据。是否有安全的方法将 AnsiString 转换为 UnicodeString?
有没有办法隐藏 DBGrid 上的 Titles 行和 Indicator 列?我找不到任何此类财产。我可以以编程方式完成吗?
考虑以下因素:我们在64位 Windows 服务器上安装了32位 Datasnap服务器
在embarcadero\rad studio\11.00\redist是2个文件夹:32位和64位,每个都有一个midas.dll.
我们应该把文件放在哪里?
在windows\system32或windows\syswow64中?
如你所知,在c#中初始化对象非常方便快捷
StudentName student2 = new StudentName
{
FirstName = "Craig",
LastName = "Playstead",
};
Run Code Online (Sandbox Code Playgroud)
和
List<MyObject>.Add(new MyObject{a=1,b=2})
Run Code Online (Sandbox Code Playgroud)
可以像这样在Delphi中初始化对象吗?
我正在编写一个类,它将大型遗留应用程序的TMainMenu层次结构映射到TActionMainMenuBar项目.
从Steve Trevethen的EDN CodeCentralC文章中大量借鉴的最重要的方法看起来像这样.我为长度道歉,但这可能是我在这种情况下可以有意义地显示的最短代码长度:
procedure TMainMenuSkin.DoLoadMenu(
ActionList: TCustomActionList;
Clients: TActionClients;
AMenu: TMenuItem;
SetActionList: Boolean = True;
bRecurseFlag:Boolean = False);
var
I: Integer;
J: Integer;
AC: TActionClientItem;
ca : TCustomAction;
newAction : TSkinnedMenuAction;
aci:TActionClientItem;
submenuitem : TMEnuItem;
procedure PopulateNodeFromMenuItem(menuitem:TMenuItem);
begin
newAction := TSkinnedMenuAction.Create(Application.MainForm);
menuitem.FreeNotification(newAction);
newAction.FMenuItem := menuitem;
newAction.Name := 'action_'+newAction.FMenuItem.Name;
FNewMenuActions.Add(newAction);
newAction.ActionList := ActionManager;
newAction.Tag := menuitem.Tag;
ca := newAction;
ca.ImageIndex := menuitem.ImageIndex;
ca.HelpContext := menuitem.HelpContext;
ca.Visible := menuitem.Visible;
ca.Checked := menuitem.Checked;
ca.Caption := menuitem.Caption;
ca.ShortCut := …Run Code Online (Sandbox Code Playgroud) 在Windows 8上,我尝试运行下面显示的代码以显示旧的Windows 7图片查看器,但它返回错误.在Windows 8上,我可以找到C:\ Program Files(x86)\ Windows Photo Viewer\PhotoViewer.dll,但我认为这是较新的Windows 8 metro应用程序.我认为旧的Windows图片浏览器是'c:\ windows\system32\shimgvw.dll.我想用桌面应用程序样式而不是Metro预览图像.
我试过两个,但两个都返回该文件没有与之关联的程序?我搞砸了什么?
var
SEInfo: TShellExecuteInfo;
ExitCode: DWORD;
ExecuteFile, ParamString, StartInString: string;
ExecuteFile:='c:\windows\system32\shimgvw.dll';
FillChar(SEInfo, SizeOf(SEInfo), 0) ;
SEInfo.cbSize := SizeOf(TShellExecuteInfo);
with SEInfo do begin
fMask := SEE_MASK_NOCLOSEPROCESS;
Wnd := Application.Handle;
lpFile := PChar(ExecuteFile);
nShow := SW_SHOWNORMAL;
lpParameters := PChar('ImageView_Fullscreen');
end;
if ShellExecuteEx(@SEInfo) then begin
repeat
Application.ProcessMessages;
GetExitCodeProcess(SEInfo.hProcess, ExitCode) ;
until (ExitCode <> STILL_ACTIVE) or Application.Terminated;
ShowMessage('Windows Picture Viewer terminated') ;
end
else ShowMessage('Error starting Windows Picture Viewer') ;
Run Code Online (Sandbox Code Playgroud)
我之前没有使用过ShellExecuteEx,所以代码的基础来自这里 …
我有一个必须返回通用接口的方法.试图在delphi中制作该方法.但是不确定它应该如何写?有没有人可以帮助我?这是我用Java制作的一个例子:
public < T extends StandardDataProvider<?>> T GetDataProvider(String dataProviderName) {
if (dataproviders == null)
buildDataProviderMap();
if (dataproviders.containsKey(dataProviderName)) {
return (T) dataproviders.get(dataProviderName);
} else
return null;
}
Run Code Online (Sandbox Code Playgroud)
然后尝试在delphi中做同样的事情..但是不能让它工作?
function TLocalDataProviderFactory. GetDataProvider(DataProviderName: string): IStandardDataProvider; // Shows errors here?
begin
if not Assigned(DataProvider) then
BuildDataProviderMap;
if DataProvider.ContainsKey(DataProviderName) then
begin
Result := DataProvider.Items[DataProviderName];
end
else
begin
Result:= nil;
end;
end;
Run Code Online (Sandbox Code Playgroud) 我有以下......
var
LCnn: TADOConnection;
qryGetData: TADOQuery;
begin
...
//build a connection string to a SQL Server 2008
...
qryGetData.Connection := LCnn;
qryGetData.SQL.Text := 'SELECT * FROM MYTABLE'
...
LDate := qryGetData.FieldByName('Date').AsDateTime; //Date its a datetime field in the table
end;
Run Code Online (Sandbox Code Playgroud)
这工作正常但是,当某些Pcs中的"Date"字段为NULL时,LDate为0而另一个为-36522.
任何的想法???谢谢!
编辑:
奇怪的行为是
function TDateTimeField.GetAsDateTime: TDateTime;
begin
if not GetValue(Result) then Result := 0;
end;
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,GetValue结果为false,因此GetAsDateTime结果为0,在第二种情况下GetValue结果为true,因此返回-36522(01/01/1800)
我正在将Delphi 7应用程序迁移到Delphi XE4.DateToStr函数在两个版本中的行为都不同.
例如:
DateToStr(IncDay(Today, -9))计算结果为11/30/2013 in Delphi 7同时30/11/3013 in Delphi XE4.
这意味着,Delphi 7采用日期,mm/dd/yyyy而Delphi XE4则采用它dd/mm/yyyy.在Delphi XE4中,我可以将其设置为mm/dd/yyyy?
注意:我不想在进行此转换的每个位置使用formatsettings修改代码.我只是想在一个地方做这个改变可能是Delphi XE4的一些设置文件.
delphi ×10
delphi-xe4 ×10
delphi-7 ×2
32bit-64bit ×1
action ×1
ado ×1
ansistring ×1
datasnap ×1
date ×1
java ×1
tdbgrid ×1
winapi ×1