我想创建一个用于存储和打印的XPS文档.
在我的程序中创建XPS文档的最简单方法是什么(例如,在其中包含一些带有一些数据的简单网格),并传递它?
这是一个很长的问题,但我们走了.有一个版本的FormatDateTime,据说是您使用的线程安全
GetLocaleFormatSettings(3081, FormatSettings);
Run Code Online (Sandbox Code Playgroud)
得到一个值然后你可以像这样使用它;
FormatDateTime('yyyy', 0, FormatSettings);
Run Code Online (Sandbox Code Playgroud)
现在想象两个计时器,一个使用TTimer(间隔说1000毫秒),然后另一个计时器创建如此(10毫秒间隔);
CreateTimerQueueTimer
(
FQueueTimer,
0,
TimerCallback,
nil,
10,
10,
WT_EXECUTEINTIMERTHREAD
);
Run Code Online (Sandbox Code Playgroud)
现在是一点点,如果在回调和计时器事件中你有以下代码;
for i := 1 to 10000 do
begin
FormatDateTime('yyyy', 0, FormatSettings);
end;
Run Code Online (Sandbox Code Playgroud)
请注意,没有任务.这会产生几乎立即访问的访问权限,有时甚至会在20分钟后随机出现.现在,如果您在C++ Builder中编写该代码,它永远不会崩溃.我们使用的标头转换是JEDI JwaXXXX.即使我们在代码中放入Delphi版本的锁,它也只会延迟不可避免的.我们已经查看了原始的C头文件,它看起来都很好,C++使用Delphi运行时有什么不同的方式吗?FormatDatTime的线程安全版本看起来是可重入的.任何可能以前看过这个的人的想法或想法.
更新:
为了缩小这一点,FormatSettings作为const传入,所以如果它们使用相同的副本(因为事实证明在函数调用中传递本地版本会产生同样的问题)是否重要?采用FormatSettings的FormatDateTime版本也不会调用GetThreadLocale,因为它已经具有FormatSettings结构中的Locale信息(我通过单步执行代码仔细检查).
我提到没有任何分配,以明确没有访问共享存储,因此不需要锁定.
WT_EXECUTEINTIMERTHREAD用于简化问题.我的印象是你应该只将它用于非常短的任务,因为它可能意味着如果它运行的时间很长,它会错过下一个间隔吗?
如果使用普通的旧TThread,则不会出现问题.我在这里得到的是我认为使用TThread或TTimer可以工作,但是使用在VCL外部创建的线程没有,这就是为什么我问C++ Builder使用VCL/Delphi RTL的方式是否存在差异.
顺便说一句,前面提到的代码也会失败(但需要更长时间),过了一会儿,CS:= TCriticalSection.Create;
CS.Acquire;
for i := 1 to LoopCount do
begin
FormatDateTime('yyyy', 0, FormatSettings);
end;
CS.Release;
Run Code Online (Sandbox Code Playgroud)
现在我真的不明白,我按照建议写了这个;
function ReturnAString: string;
begin
Result := 'Test';
UniqueString(Result);
end;
Run Code Online (Sandbox Code Playgroud)
然后在每种类型的计时器内部代码;
for i := 1 to 10000 do
begin
ReturnAString;
end;
Run Code Online (Sandbox Code Playgroud)
这会导致相同类型的故障,正如我之前所说,故障永远不会出现在CPU窗口内的同一位置等.有时它是一种访问冲突,有时它可能是一个无效的指针操作.我正在使用Delphi 2009 …
我的表有很多列.我有一个复制一些数据的命令 - 将其视为克隆产品 - 但由于列可能在将来发生变化,我只想从表中选择所有内容,只需更改一列的值而无需参考其余的部分.
例如,而不是:
INSERT INTO MYTABLE (
SELECT NEW_ID, COLUMN_1, COLUMN_2, COLUMN_3, etc
FROM MYTABLE)
Run Code Online (Sandbox Code Playgroud)
我想要一些类似的东西
INSERT INTO MYTABLE (
SELECT * {update this, set ID = NEW_ID}
FROM MYTABLE)
Run Code Online (Sandbox Code Playgroud)
有一个简单的方法吗?
这是iSeries上的DB2数据库,但欢迎任何平台的答案.
我有四个包含完全相同列的表,并且想要创建所有四个视图,以便我可以一起查询它们.
这可能吗?
(由于繁琐的原因,我不能/不允许将它们组合起来,这会使这无关紧要!)
我有一个电影租赁系统的现有数据库.每部电影都有一个评级属性.在SQL中,他们使用约束来限制此属性的允许值.
CONSTRAINT film_rating_check CHECK
((((((((rating)::text = ''::text) OR
((rating)::text = 'G'::text)) OR
((rating)::text = 'PG'::text)) OR
((rating)::text = 'PG-13'::text)) OR
((rating)::text = 'R'::text)) OR
((rating)::text = 'NC-17'::text)))
Run Code Online (Sandbox Code Playgroud)
我认为使用Java枚举将约束映射到对象世界会很好.但由于"PG-13"和"NC-17"中的特殊字符,因此不可能简单地采用允许的值.所以我实现了以下枚举:
public enum Rating {
UNRATED ( "" ),
G ( "G" ),
PG ( "PG" ),
PG13 ( "PG-13" ),
R ( "R" ),
NC17 ( "NC-17" );
private String rating;
private Rating(String rating) {
this.rating = rating;
}
@Override
public String toString() {
return rating;
}
}
@Entity
public class Film …Run Code Online (Sandbox Code Playgroud) 我已经设置了Visual Studio 2008,正如我想要的那样,一个屏幕(有双显示器)仅用于编码,另一个设置有多个选项卡组,每个包含不同的选项卡,如一组包含输出,错误列表和todo列表选项卡,另一个组具有工具箱和属性窗口的选项卡.
现在这一切都很酷,但是如果我调试了一些东西并且我已经完成调试它会将所有选项卡一起抛到一个组中,并将所有我很好的单独选项卡组搞砸.
任何人都知道任何会阻止Visual Studio执行此操作并记住哪些选项卡进入哪些组的东西?
我记得有一种方法可以在eclipse(特殊注释或注释?)中标记一段代码,这使得autoformatter忽略了该部分.或者我可能会匆匆这个......
主要用于我有包裹在几行上的字符串而且我不希望autoformatter重新排列它.
当我在WinForms中完成第一步时,我从Paint.NET的源代码和使用WinForms的其他一些应用程序(xacc ...)中学习.
现在我需要高质量的代码来学习使用WPF :)
我正在尝试调试一个用T-SQL UDF编写的相当复杂的公式求值程序(不要问)递归(但通过中间函数间接)调用自己,blah,blah.
当然,我们有一个错误.
现在,使用PRINT语句(然后可以通过实现InfoMessage事件的处理程序从ADO.NET中读取),我可以模拟存储过程的跟踪.
对UDF执行相同操作会产生编译时消息:
Invalid use of side-effecting or time-dependent operator in 'PRINT' within a function.
Run Code Online (Sandbox Code Playgroud)
我得到了消息(PRINT做了一些像重置@@ROWCOUNT这样的东西,在UDF中肯定是禁止的,但我如何追踪通话?我想打印出这条迹线,所以我可以研究它而不会因为踩踏而分心调试器中的调用...
编辑:我曾尝试使用SQL Profiler(这是第一次给我),但我无法弄清楚要追踪的内容:虽然我可以获取跟踪输出发送到数据库的查询,但它们是opaque在某种意义上说我无法向下钻取到被调用的Expression-UDF:我可以跟踪调用的实际存储过程,但是没有列出此过程调用的UDF.我错过了什么吗?我猜不会...
编辑#2:尽管(自动)接受的答案确实跟踪了函数调用 - 非常有用,谢谢 - 它无助于找出传递给函数的参数.当然,这对于调试递归函数至关重要.如果我发现任何溶剂,我会发布...
我有一个使用的Maven pom <packaging>war</packaging>.但实际上,我不想构建war文件,我只想要收集所有依赖的jar并创建一个完整的部署目录.
所以我正在运行war:exploded生成部署目录的目标:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<configuration>
<webappDirectory>target/${env}/deploy</webappDirectory>
<archiveClasses>true</archiveClasses>
</configuration>
<goals>
<goal>exploded</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
问题是,战争文件仍然建立.是否有一种简单的方法来<packaging>war</packaging>执行war:exploded目标而不是战争:战争目标?
或者还有另一种简单的方法吗?