小编Maw*_*awg的帖子

如何使多线函数成为原子

我有一个必须完全运行的功能,不会中断,并返回一个结果.如果异步事件导致在它仍在执行时再次调用它,则必须以某种方式阻止该调用,直到第一次调用完成.

互斥?别的什么?


[更新]该函数在我的主表单类中,并从类的两个方法调用:一个处理从serail端口读取的数据,另一个处理计时器到期.这两个似乎都在他们自己的线程中运行,因为一个函数的调用可以被另一个调用中断(对我来说,在应用程序级别,它们只是我在设计时放在主表单上的组件).

也许TCriticalSection?(但谷歌搜索不清楚我是否需​​要使用acquire/release或'进入/离开',似乎因为代码是一个简单的函数可能是mainform,它将是可重入的).

也许我要求的是一种使代码"不可重入"的方法,阻止直到第一次完成?无论答案是什么,我认为我将需要一个代码示例,或UTl到一个:-(

(请注意,此页面提供了大量有用的信息(我不会全部了解,但它对其他人来说非常有用))


[更新]这与GUI更新无关,只是每个发送一些TCOP数据的事件都应该接收响应.

虽然该应用程序有一个GUI - 它是基于表单的 - 只是在我想显示一些调试信息的情况下,因为该应用程序将在没有监视器的PC上运行(是的,我知道它stil有一个GUI,但是不是我的问题/点)

delphi

3
推荐指数
3
解决办法
604
查看次数

我可以在FormCreate()中做什么和不做什么?

我认为这必须是常见问题解答,但谷歌搜索并没有真正帮助.

我该怎么办 - 可能不会 - 在FormCreate()

我想知道所有表单的子控件是否已完全创建并可用于访问等.

我问的原因是我偶然发现了一个我FormCreate()简单组成的 旧项目

Sleep(1000);  
PostMessage(Handle, UM_PROGRAM_START, 0, 0);  
Run Code Online (Sandbox Code Playgroud)

似乎我想"稍微等一下"然后做一些初始化"当事情已经稳定下来"......

当然我当时有理由(?),但是,在没有启发性评论的情况下,我无法回想起为什么我认为这是必要的.

任何人都可以陈述或引用一个链接,说明对其可能做的任何限制FormCreate()吗?


[更新]我认为DavidHefferman在撰写"应用程序开始提取消息时找到了解决方案.当您在.dpr文件中调用Application.Run时会发生这种情况".

我想我并不关心单一形式.例如,我的主要表单想要在启动时使用我的配置/选项表单做一些事情,所以显然必须等到它被创建.

这是我的一个项目的典型.DPR ......

Application.Initialize;
Application.CreateForm(TGlobal, Global);
Application.MainFormOnTaskbar := True;
Application.CreateForm(TMainForm, MainForm);

Application.CreateForm(TLoginForm, LoginForm);
Application.CreateForm(TConfigurationForm, ConfigurationForm);

//[snip] a bunch of other forms ...

Application.Run();
Run Code Online (Sandbox Code Playgroud)

所以,我的应用程序mainForm.CreateForm()发送UM_APPLICATION_START给自己是有意义的,在创建和初始化所有表单之前它不会处理(或者,我可以在调用之后调用消息从我的.DPR触发的fn()Application.Run();但是我更喜欢这个消息,因为它更明显 - 我很少看我的.DPR文件).

delphi

3
推荐指数
1
解决办法
312
查看次数

如何在MySql中最好地存储日期/时间?

我应该存储Delphi TDateTIme,还是首先转换为Unix时间戳?或者mayeb eeven作为一个字符串?

我应该如何在MySql中声明该列?作为Double,或DateTime(如果我使用Unix时间戳,则为整数)?

Whta是"正确的",或者如果我想能够显示带有"yyyy mm dd hh:mm:ss"(或类似)的字符串,并且能够通过比较两个值获得经过的时间,那么最简单的是什么?

顺便说一句,该程序将只用于一个tiemzone - 没有夏令时.

我很困惑,似乎无法在任何地方找到这个.任何有用的网址?

mysql delphi datetime

3
推荐指数
1
解决办法
4914
查看次数

预订系统的核心 - 有效地查找未预留的项目

这似乎是一个常见问题,但我一直在网上搜索,找不到答案.

我想保留一些东西(没有偏天),所以我想我需要一个像这样的桌子:

CREATE TABLE reservations 
    (
     item int, 
     customer int, 
     startDate date, 
     endDate date
    );
Run Code Online (Sandbox Code Playgroud)

(嗯,我的主键是什么?item和startDate?我甚至需要PK吗?)

但我的主要问题是如何找到一个免费项目,给定一个开始和结束日期.我的SELECT ...样子是什么样的?

对于奖励分数,我们可以假设所有项目都是相同的,并且我希望尽可能提高效率,这样如果我想从星期五开始预订,我宁愿找到一个在星期四之前保留的项目(因此,从周五免费).

对于双重奖励标记,如果我需要X天的物品,我想在预订中找到一个洞,尽可能接近X天.

我认为问题是我试图找到一些不存在的东西(现有的预订).我找到的所有其他解决方案似乎都有一个可预订日期表,其中包含项ID(值为NULL,0或-1表示"尚未预订").这对我来说似乎效率低下.这张桌子会延伸到未来多远?

注意:有些人在询问读写比例.显然每个预订只进行一次,所以这是一次写入(可能每天一次,具体取决于实现),并且当用户搜索未预订的插槽时,我希望有多次读取.

mysql

3
推荐指数
1
解决办法
1579
查看次数

在Delphi中编写DLL以从其他语言调用

这将是我第一次尝试在Delphi中编写DLL以从其他语言调用.

我已经做了很多谷歌搜索并看到一些好的指针,但没有详尽无遗(至少,我有问题,在Embarcadero材料中没有找到答案).

我想知道这个警告列表是否有效,或者我是否遗漏了什么,如果有人可以在下面提出我的问题.

  • 如果我希望我的DLL可以从其他语言调用,那么我不能使用该ShareMem单位.
  • 我不能使用这种String类型,应该坚持下去PChar
  • 如果我想返回一个字符串,则调用者应该给我一个缓冲区,它写入(我 alloctae内存为我自己,即使我提供了一个常规的事后释放它)
  • 我应该坚持像(integetrPChar其他人一样)的简单类型吗?

几个问题:

  • comipler禁止我导出枚举和常量.我只是没有正确宣布它们吗?我想调用Delphi s/w能够使用枚举元素和所有调用者能够使用常量.
  • 我不应该使用任何结构,因为编译器之间的字节对齐可能存在差异.所以,如果我不能接受strectures作为参数.我想我应该只有integers和PChars 的长参数列表?
  • 我可以接受数组作为参数,或者边界对齐是否会造成危险?
  • 我可以接受/返回花车/双打吗?
  • 布尔值?或者我坚持"zer0 ===假,其他一切都是真的"?

  • 还有什么我应该知道的吗?

在此先感谢您的帮助

delphi dll enums export

3
推荐指数
1
解决办法
318
查看次数

求Sqlite no-op命令

是否有一个命令,我可以运行什么也不做(或很少)永远不会出错?

我需要一些东西来测试海豚.

sqlite no-op

3
推荐指数
2
解决办法
633
查看次数

如何在Android(和iOS)上查看JavaScript控制台?

我正在创建一个纯粹基于浏览器的应用程序 - HTML和JavaScript.

我没有安装Android IDE(也没有安装iOS) - 并且不希望安装一个并执行远程调试.

在我的PC上进行开发,我使用Chrome浏览器和开发人员工具来查看JavaScript控制台以进行调试.

我怎么能在Android平板电脑(或更高版本的iOS)上做到这一点?我更喜欢纯粹的基于浏览器的解决方案,但可以接受基于Android/iOS的应用程序.

javascript debugging android developer-tools ios

3
推荐指数
3
解决办法
9914
查看次数

Cordova:启动短信应用程序并确认已发送短信

我期待科尔多瓦作为一个问题的可能解决方案,并想在编码之前询问它是否可行.我似乎无法通过谷歌搜索找到任何确凿的文件.

我想启动短信应用程序并确定用户是否实际发送了短信,或者只是取消了短信.

我可以用科尔多瓦做到吗?


[更新]我不能保证在用户的设备上安装任何应用程序.我只是服务一个网页,想知道我是否可以启动短信应用程序,并确定用户是否发送了短信与科尔多瓦.

cordova

3
推荐指数
1
解决办法
601
查看次数

在 NetBeans/Eclipse/PHPstorm (AJAX API) 中使用 $_GET 参数调试单个 PHP 文件

这应该是直截了当的,但 Googe 今天没有帮助。

我有一个 PHP Ajax API,带有一系列单独的文件,每个文件都通过 $_GET 接受其参数。

调试文件时如何提供这些参数?

(顺便说一句,XDEBUG 工作正常,当我告诉 NetBeans 调试文件时它会启动浏览器;我只是看不到如何将参数传递给启动的 URL)


[更新] 我也会接受 Eclipse 甚至 PHP Storm 的答案,如果找不到免费解决方案,我会购买。


[更新++]意识到我希望能够在 IDE 中的断点处停止。这里的一些答案似乎以某种方式错过了这一点。

php eclipse ajax netbeans phpstorm

3
推荐指数
1
解决办法
1292
查看次数

Eclipse CDT - 如何快速评估代码中没有的表达式?

我已经离开Eclipse CDT一段时间了,并且被JetBrains的优秀IDE所破坏(公司不会让我拥有Clion).不可否认,这些主要用于解释而非编译语言,因此评估更简单.

当我在Eclipse CDT中被打破时,(如何)我可以快速评估涉及调试器已知变量的表达式,但是在代码中没有使用它们的方式?

例如,如果我有两个整数,i并且j(如何)我可以快速评估i + j

是否有可能char *s进行评估stlen(s)?或者本地函数调用的结果?

eclipse-cdt

3
推荐指数
1
解决办法
1046
查看次数