我有一个必须完全运行的功能,不会中断,并返回一个结果.如果异步事件导致在它仍在执行时再次调用它,则必须以某种方式阻止该调用,直到第一次调用完成.
互斥?别的什么?
[更新]该函数在我的主表单类中,并从类的两个方法调用:一个处理从serail端口读取的数据,另一个处理计时器到期.这两个似乎都在他们自己的线程中运行,因为一个函数的调用可以被另一个调用中断(对我来说,在应用程序级别,它们只是我在设计时放在主表单上的组件).
也许TCriticalSection?(但谷歌搜索不清楚我是否需要使用acquire/release或'进入/离开',似乎因为代码是一个简单的函数可能是mainform,它将是可重入的).
也许我要求的是一种使代码"不可重入"的方法,阻止直到第一次完成?无论答案是什么,我认为我将需要一个代码示例,或UTl到一个:-(
(请注意,此页面提供了大量有用的信息(我不会全部了解,但它对其他人来说非常有用))
[更新]这与GUI更新无关,只是每个发送一些TCOP数据的事件都应该接收响应.
虽然该应用程序有一个GUI - 它是基于表单的 - 只是在我想显示一些调试信息的情况下,因为该应用程序将在没有监视器的PC上运行(是的,我知道它stil有一个GUI,但是不是我的问题/点)
我认为这必须是常见问题解答,但谷歌搜索并没有真正帮助.
我该怎么办 - 可能不会 - 在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 TDateTIme,还是首先转换为Unix时间戳?或者mayeb eeven作为一个字符串?
我应该如何在MySql中声明该列?作为Double,或DateTime(如果我使用Unix时间戳,则为整数)?
Whta是"正确的",或者如果我想能够显示带有"yyyy mm dd hh:mm:ss"(或类似)的字符串,并且能够通过比较两个值获得经过的时间,那么最简单的是什么?
顺便说一句,该程序将只用于一个tiemzone - 没有夏令时.
我很困惑,似乎无法在任何地方找到这个.任何有用的网址?
这似乎是一个常见问题,但我一直在网上搜索,找不到答案.
我想保留一些东西(没有偏天),所以我想我需要一个像这样的桌子:
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表示"尚未预订").这对我来说似乎效率低下.这张桌子会延伸到未来多远?
注意:有些人在询问读写比例.显然每个预订只进行一次,所以这是一次写入(可能每天一次,具体取决于实现),并且当用户搜索未预订的插槽时,我希望有多次读取.
这将是我第一次尝试在Delphi中编写DLL以从其他语言调用.
我已经做了很多谷歌搜索并看到一些好的指针,但没有详尽无遗(至少,我有问题,在Embarcadero材料中没有找到答案).
我想知道这个警告列表是否有效,或者我是否遗漏了什么,如果有人可以在下面提出我的问题.
ShareMem单位.String类型,应该坚持下去PCharintegetr和PChar其他人一样)的简单类型吗?几个问题:
integers和PChars 的长参数列表? 布尔值?或者我坚持"zer0 ===假,其他一切都是真的"?
还有什么我应该知道的吗?
在此先感谢您的帮助
我正在创建一个纯粹基于浏览器的应用程序 - HTML和JavaScript.
我没有安装Android IDE(也没有安装iOS) - 并且不希望安装一个并执行远程调试.
在我的PC上进行开发,我使用Chrome浏览器和开发人员工具来查看JavaScript控制台以进行调试.
我怎么能在Android平板电脑(或更高版本的iOS)上做到这一点?我更喜欢纯粹的基于浏览器的解决方案,但可以接受基于Android/iOS的应用程序.
我期待科尔多瓦作为一个问题的可能解决方案,并想在编码之前询问它是否可行.我似乎无法通过谷歌搜索找到任何确凿的文件.
我想启动短信应用程序并确定用户是否实际发送了短信,或者只是取消了短信.
我可以用科尔多瓦做到吗?
[更新]我不能保证在用户的设备上安装任何应用程序.我只是服务一个网页,想知道我是否可以启动短信应用程序,并确定用户是否发送了短信与科尔多瓦.
这应该是直截了当的,但 Googe 今天没有帮助。
我有一个 PHP Ajax API,带有一系列单独的文件,每个文件都通过 $_GET 接受其参数。
调试文件时如何提供这些参数?
(顺便说一句,XDEBUG 工作正常,当我告诉 NetBeans 调试文件时它会启动浏览器;我只是看不到如何将参数传递给启动的 URL)
[更新] 我也会接受 Eclipse 甚至 PHP Storm 的答案,如果找不到免费解决方案,我会购买。
[更新++]请意识到我希望能够在 IDE 中的断点处停止。这里的一些答案似乎以某种方式错过了这一点。
我已经离开Eclipse CDT一段时间了,并且被JetBrains的优秀IDE所破坏(公司不会让我拥有Clion).不可否认,这些主要用于解释而非编译语言,因此评估更简单.
当我在Eclipse CDT中被打破时,(如何)我可以快速评估涉及调试器已知变量的表达式,但是在代码中没有使用它们的方式?
例如,如果我有两个整数,i并且j(如何)我可以快速评估i + j?
是否有可能char *s进行评估stlen(s)?或者本地函数调用的结果?