对于SqlDataSource,我可以为传入参数配置外部源.例如,它可能是QueryString,Session,Profile等.但是我没有选择使用User作为源.
我知道我可以在插入,选择,更新,删除事件中为参数提供值.但我认为这不是一个优雅的解决方案,因为我已经在aspx文件中定义了一些参数.我不希望在两个单独的地方定义参数.它弄得一团糟.
那么我可以在.aspx文件中以某种方式定义此参数吗?
<SelectParameters>
<asp:QueryStringParameter DefaultValue="-1" Name="ID"
QueryStringField="ID" />
//User.Identity.Name goes here as a value for another parameter
</SelectParameters>
Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,需要在链中运行其他几个应用程序.我正在通过他们运行它们ShellExecuteEx.运行每个应用程序的顺序非常重要,因为它们相互依赖.例如:
Start(App1);
If App1.IsRunning then
Start(App2);
If App2.IsRunning then
Start(App3);
.........................
If App(N-1).IsRunning then
Start(App(N));
Run Code Online (Sandbox Code Playgroud)
一切正常,但有一个可能的问题:
ShellExecuteEx启动应用程序,几乎立即返回.例如,如果App1已正确启动但尚未完成某些内部任务,则可能会出现此问题,但尚未准备好使用.但是ShellExecuteEx已经开始App2,这取决于App1,并且App2不会正确启动,因为它需要完全初始化App1.
请注意,我不想等待App(N-1)完成然后开始AppN.
我不知道这是否可以用ShellExecuteEx解决,我试过用
SEInfo.fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_NOASYNC;
Run Code Online (Sandbox Code Playgroud)
但没有任何影响.
启动AppN应用程序后,我有一个处理过程.如果我假设应用程序在创建主窗口后被初始化(所有应用程序都有一个窗口),我可以以某种方式在其消息队列上放置一个钩子并等到WM_CREATE出现或者可能WM_ACTIVATE吗?在存在此类消息的情况下,我的应用程序会知道它可以继续前进.
这只是一个想法.但是,我不知道如何把这样的钩子.所以,如果你可以帮助我,或者你有一个更好的想法,那将是伟大的:)
此外,该解决方案必须适用于Windows XP及更高版本.
谢谢你的时间.
编辑
@Cosmic Prund:我不明白你为什么删除你的答案?我可能会尝试你的想法......
在给定的示例中,我在调用时收到异常 AThread.Free.
program Project44;
{$APPTYPE CONSOLE}
uses
SysUtils, Classes, Windows;
type
TMyException = class(Exception);
var
AThread: TThread;
begin
AThread := TThread.Create(True);
try
AThread.FreeOnTerminate := True;
//I want to do some things here before starting the thread
//During the setup phase some exception might occur, this exception is for simulating purpouses
raise TMyException.Create('exception');
except
AThread.Free; //Another exception here
end;
end.
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
我应该如何释放AThread的实例TThread在给定的例子吗?
我不明白,为什么TThread.Destroy呼吁Resumedestroing本身之前.这有什么意义?
这不起作用.我从SQL数据库得到一个例外,该列不允许空值.
<asp:SqlDataSource ID="MyDataSOurcet" runat="server"
ConnectionString="<%$ ConnectionStrings:MyConnectionString %>"
InsertCommand="INSERT INTO MyTable(Name) VALUES (@Name) WHERE NameID = 1"
<InsertParameters>
<asp:Parameter Name="Name" Type="String" DefaultValue=""/>
</InsertParameters>
</asp:SqlDataSource>
Run Code Online (Sandbox Code Playgroud) 我正在使用Delphi和Crystal Reports 9.0 ActiveX对象.
我知道我可以从这样的文件加载报告:
crApplication.OpenReport(AFileName)
但是,我想将我的报告存储在内存中,并从内存而不是文件中打开它.我不想在我的磁盘上创建任何临时文件.
有任何想法吗?
谢谢你的时间.
在Windows Vista之前,我将应用程序数据保存到程序所在的目录中.最常见的地方是"C:\ Program Files\MyApplication".我们知道,在Vista之后,普通用户无权在"Program Files"文件夹下写入.所以我的第一个想法是将应用程序数据保存在"所有用户\应用程序数据"文件夹下.但似乎这个文件夹也有写作限制!
总而言之,我的要求是:
即使基础数据源中没有数据,如何显示DetailsView?
问题是当DetailsView不可见时,命令按钮也不可见.所以我不能将新记录插入数据库.我希望DetailsView它的DefaultMode设置始终可见ReadOnly.
如果不可能,我想问一个解决这个问题的方法.
我想到的一个解决方法是检查数据源是否有任何记录.如果没有,则programmaticaly更改DefaultMode为Insert.但是,这会导致另一个问题 - 如何计算DataSource中的记录数.
我所有的问题都与ASP 3.5有关
我正在ShellExecuteEx用来启动一个应用程序.成功启动后即可读取TShellExecuteInfo.hProcess获取启动过程的句柄.
我想定期检查我的应用程序启动的进程是否仍在运行.两个或多个具有相同名称的进程可以同时运行,我想确保我的应用程序正在检查正确的进程.
我希望能够在从Windows 2000到Windows上的Windows系统上执行此操作.
我知道有WinAPI功能GetProcessId正在做我想要的但它不支持Windows 2000.
谢谢您的回答.
所以我在我的单位包括一些其他单位,在建立申请后,我收到了来自这些单位的大量警告.金额太大,以至于我在列表中找到自己的警告时遇到了问题.;-)
是否有一些编译器指令允许我关闭这些警告?但请注意,我不想以任何方式修改这些单位.我想实现这样的目标:
unit MyUnit;
interface
uses
UnitA, {$WARN EMIT_WARNNIGS OFF} UnitB, {$WARN EMIT_WARNNIGS ON} UnitC, UnitD.
implementation
uses
UnitE, {$WARN EMIT_WARNNIGS OFF} UnitF, UnitG, {$WARN EMIT_WARNNIGS ON} UnitH.
Run Code Online (Sandbox Code Playgroud)
这是一个虚构的编译器指令,我想拥有它,或者它可能存在但我不知道它?
谢谢你的时间.
这是一个片段,展示了我想要实现的目标:
type
TMyObject<T> = class (TObject)
function GetVarType(Value: T): TVarType;
end;
function TMyObject<T>.GetVarType(Value: T): TVarType;
var
TmpValue: Variant;
begin
TmpValue := Variant(Value); //Invalid typecast
Result := VarType(TmpValue);
end;
Run Code Online (Sandbox Code Playgroud)
我知道上面的类型转换是天真的,但我希望你能得到这个想法.我想用一些转换机制替换它.
TMyObject将始终是简单类型,如Integer,String,Single,Double.
这种转换的目的是函数VarType为每个我可以存储在其他地方的简单类型提供整数常量.
我想知道这种转换是否可行?
谢谢你的时间.