问题列表 - 第44358页

C#中的自动类型转换

我知道您可以覆盖对象的ToString()方法,这样每次调用对象或将其传递给需要String类型的函数时,它都将转换为String.

我已经为对象类型'对象'编写了几种扩展方法

public static DateTime ToDate(this object date)
{
    return DateTime.Parse(date.ToString());
}

public static int ToInteger(this object num)
{
    return Int32.Parse(num.ToString());
}

public static long ToLong(this object num)
{
    return Int64.Parse(num.ToString());
}
Run Code Online (Sandbox Code Playgroud)

所以我可以像这样打电话给他们:

eventObject.Cost = row["cost"].ToString();
eventObject.EventId = row["event_id"].ToLong();
Run Code Online (Sandbox Code Playgroud)

但是,我想要实现的是根据我的'eventObject'上的属性类型将'object'类型的行对象转换为正确的类型.所以,我可以这样称呼它:

eventObject.Cost = row["cost"];
eventObject.EventId = row["event_id"];
Run Code Online (Sandbox Code Playgroud)

如果重要的话,该行是DataRow.

.net c# overriding casting type-conversion

14
推荐指数
1
解决办法
2万
查看次数

Objective-C"<...>"表示法

我正在阅读更多iPhone编程3,我不记得<>符号是什么.我知道这是符合协议的一类,但我不知道它是什么,在这个例子中的核心数据部分谈论NSFetchedResultsController.这是代码:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
id <NSFetchedResultsSectionInfo> sectionInfo = [[fetchedResultsController sections] objectAtIndex:section];
return [sectionInfo numberOfObjects];
Run Code Online (Sandbox Code Playgroud)

谢谢!

iphone syntax objective-c ios

0
推荐指数
1
解决办法
162
查看次数

现在的功能:永久日历的Tdatetime

我正在尝试编写一个函数Tdatetime(但是当我打开我的程序时,他必须现在显示数据)

下面我有一个功能,TDatetime但我有一个错误:

(((('''DecodeDateTime(data,rok,miesiac,dzien,godzina,minuta,sekunda,milisekunda);''))))

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Spin, Buttons;

type
  TForm1 = class(TForm)
    edRok: TSpinEdit;
    edMiesiac: TSpinEdit;
    edDzien: TSpinEdit;
    lbRok: TLabel;
    lbMiesiac: TLabel;
    lbDzien: TLabel;
    lbDT: TLabel;
    btnZamknij: TBitBtn;
    procedure edRokChange(Sender: TObject);
    procedure edDzienChange(Sender: TObject);
    procedure DecodeDate(Date: TDateTime);
    function DT(Dzien, Miesiac: Byte; Rok: Integer): Byte;
    function GetDzienText(Dt: Byte): String;
    function Now: TDateTime;



  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1; …
Run Code Online (Sandbox Code Playgroud)

delphi tdatetime

2
推荐指数
1
解决办法
999
查看次数

为需要身份验证的操作设计操作筛选器

我正在使用设计进行身份验证,但是我无法看到和操作过滤器来指定需要用户登录的操作,这是否包含在设计宝石中?如果不是我怎么能创建一个,我有一个想法,但由于我是铁杆新手,我宁愿首先看一个更有经验的程序员的解决方案.

authentication authorization ruby-on-rails devise

11
推荐指数
1
解决办法
1万
查看次数

MySQL:bigint Vs int

我一直在使用INT(10),并只注意到WordPress使用BIGINT(20) - 所不同的是使用的ID自动递增BIGINT(20)和int(10)?我应该将哪一个用于id列?

`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
Run Code Online (Sandbox Code Playgroud)

VS

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
Run Code Online (Sandbox Code Playgroud)

谢谢.

mysql int database-design biginteger auto-increment

43
推荐指数
2
解决办法
5万
查看次数

表视图上不显示重新排序控件

我创建了一个基于导航的应用程序模板的iOS应用程序,该应用程序由Core Data框架支持.

单击"编辑"按钮时,我希望行可以重新排序并且可以删除.

在构建单元格时,我添加了这一行:

cell.showsReorderControl = YES;
Run Code Online (Sandbox Code Playgroud)

tableView:canMoveRowAtIndexPath:方法返回YES.

但重新排序控件没有显示在行中,我错过了什么?

iphone cocoa-touch core-data uitableview ios

14
推荐指数
2
解决办法
8880
查看次数

如何实现在执行结束时自动关闭的线程池?

我正在编写一个理论上可以在不同环境中使用的Java客户端:Java main(),servlet容器或依赖注入.

客户端实现内部连接线程池.

这种方法的问题在于,客户端的用户不知道实现内部线程池的事实将使他或她的应用程序在关闭时"挂起".我的用户需要知道向库发送shutdown()消息.

我想知道是否可以采取任何其他替代方法,一方面,允许我为我的连接启动一个线程池; 而且,另一方面,捕获一些事件,可能是一个JVM事件,表明JVM正在关闭,这将允许我调用我的shutdown()实现.

java application-shutdown threadpool shutdown-hook

2
推荐指数
1
解决办法
4111
查看次数

windows.h中的WINVER和_WIN32_WINNT警卫怎么了?

使用Windows标头中,Microsoft声称_WIN32_WINNT和NTDDI_VERSION可用于防止为较新版本的Windows定义API函数.然而,这似乎并非普遍适用.

例如,CancelSynchronousIo需要Vista或更高版本,但在我拥有的两个版本的Windows SDK(v6.0和v7.1)中根本没有保护它.

WINBASEAPI
BOOL
WINAPI
CancelIoEx(
    __in HANDLE hFile,
    __in_opt LPOVERLAPPED lpOverlapped
    );
Run Code Online (Sandbox Code Playgroud)

与此同时,GetVolumeInformationByHandleW(也需要Vista)可以像您预期的那样得到保护:

#if(_WIN32_WINNT >= 0x0600)
WINBASEAPI
BOOL
WINAPI
GetVolumeInformationByHandleW(
    __in      HANDLE hFile,
    __out_ecount_opt(nVolumeNameSize) LPWSTR lpVolumeNameBuffer,
    __in      DWORD nVolumeNameSize,
    __out_opt LPDWORD lpVolumeSerialNumber,
    __out_opt LPDWORD lpMaximumComponentLength,
    __out_opt LPDWORD lpFileSystemFlags,
    __out_ecount_opt(nFileSystemNameSize) LPWSTR lpFileSystemNameBuffer,
    __in      DWORD nFileSystemNameSize
    );
#endif /* _WIN32_WINNT >=  0x0600 */
Run Code Online (Sandbox Code Playgroud)

这种事情只是一个错误吗?_WIN32_WINT卫兵没用吗?任何人都可以推荐一种可靠的方法来确定哪个版本的Windows引入了哪些API函数?

编辑添加:

这是一个测试.foo.h包含:

#include <windows.h>
Run Code Online (Sandbox Code Playgroud)

然后运行:

cl /E /D_WIN32_WINNT=0x0501 /DNTDDI_VERSION=0x05010000 foo.h | grep CancelSynchronousIo
Run Code Online (Sandbox Code Playgroud)

我的期望是我没有输出,而是定义了CancelSynchronousIo.

windows winapi visual-c++

8
推荐指数
1
解决办法
1476
查看次数

如何实现暂停(和更多)功能?

我事先就问题的长度道歉,我不想遗漏任何东西.

一些背景资料

我正在尝试通过编写使用Windows API来模拟击键,鼠标移动和窗口/控制操作的Python应用程序来自动化数据输入过程.我不得不求助于这种方法,因为我没有(还)有直接访问数据存储/数据库所需的安全许可(例如,使用SQL)或间接通过更适合的API.官僚主义,这是一种痛苦;-)

数据输入过程涉及由于物品可用性的变化而更正销售订单.不可用的文章要么从订单中删除,要么被其他合适的文章替换.

最初我希望人类能够监控自动数据输入过程,以确保一切正常.为了实现这一点,我一方面减慢了操作的速度,另一方面也通过固定窗口告知用户当前正在进行的操作.

实际的问题

为了允许用户暂停自动化过程,我将Pause/Break键注册为热键,在处理程序中我想暂停自动化功能.但是,我目前正在努力找到一种方法来正确暂停自动化功能的执行.当调用pause函数时,无论它在做什么,我都希望自动化过程停止在其轨道上.我不希望它甚至执行另一次击键.

更新[23/01]:我实际上想要做的不仅仅是暂停,我希望能够在自动化过程运行时与自动化流程进行通信并请求它暂停,跳过当前的销售订单,完全放弃甚至可能更多.

任何人都可以告诉我The Right Way(TM)来实现我想要的吗?

更多信息

以下是自动化工作原理的示例(我正在使用pywinauto库):

from pywinauto import application
app = application.Application()
app.start_("notepad")
app.Notepad.TypeKeys("abcdef")
Run Code Online (Sandbox Code Playgroud)

更新[25/01]:在我的应用程序工作几天后,我注意到我并没有真正使用pywinauto那么多,现在我只是用它来查找窗口然后我直接SendKeysCtypes.SendKeys用来模拟键盘输入和win32api模拟鼠标输入的功能.

到目前为止我发现了什么

以下是我在寻找答案时遇到的一些方法:

  1. 我可以在两个单独的进程中分离自动化功能和接口+热键监听器.我们将前者称为"automator",将后者称为"manager".然后,管理器可以通过向进程发送SIGSTOP信号并使用SIGCONT信号(或Windows等效的SuspendThread/ResumeThread)取消暂停来暂停执行automator .

    为了能够更新用户界面,自动机将需要通过某种IPC机制通知管理器其进展.

    缺点:

    • 使用SIGSTOP会不会有点苛刻?它甚至可以正常工作吗?很多人似乎都在反对它,甚至称之为"危险".

    • 我担心实施IPC机制会有点复杂.另一方面,我与DBus合作过,实施起来并不难.

  2. 第二种方法和许多人似乎建议的方法涉及使用线程,并且基本归结为以下(简化):

    while True:
        if self.pause: # pause
        # Do the work...
    
    Run Code Online (Sandbox Code Playgroud)

    但是,这样做似乎只会在没有更多工作要做之后暂停.我认为这种方法可行的唯一方法是将工作(整个自动化过程)划分为较小的工作段(即任务).在开始新任务之前,工作线程将检查它是否应该暂停并等待.

    缺点:

    • 似乎是将工作划分为较小部分的实现,例如上面的部分,将是非常丑陋的代码(美学上).

      我想象的方式,所有语句都将转换为类似于:( queue.put((function, args))例如queue.put((app.Notepad.TypeKeys, "abcdef")))并且您将使自动化过程线程贯穿任务并在开始任务之前不断检查暂停状态.那不可能是正确的......

    • 该程序实际上不会停止在其轨道上,但在实际暂停之前首先完成一项任务(无论多么小).

取得了进展

更新[23/01]:我已经通过提到的SuspendThread/ResumeThread功能使用第一种方法实现了我的应用程序的一个版本.到目前为止,这似乎工作非常好,也允许我编写自动化的东西,就像你写任何其他脚本一样.我遇到的唯一怪癖是键盘修饰符(CTRL,ALT,SHIFT)在暂停时"卡住".我可以轻松解决的问题.

我还使用第二种方法(线程和信号/消息传递)编写了测试并实现了暂停功能.然而,它看起来真的很丑陋(检查暂停标志和与"做工作"相关的一切).所以如果有人能给我一个类似于第二种方法的正确例子,我会很感激.

相关问题

python windows multithreading

13
推荐指数
1
解决办法
2133
查看次数

在linux服务器上保存完整网页的最佳方法是什么?

我需要在我的linux服务器上存档包括任何链接图像等的完整页面.寻找最佳解决方案.有没有办法保存所有资产,然后重新链接所有资产在同一目录中工作?

我考虑过使用curl,但我不确定如何做到这一切.另外,我可能需要PHP-DOM吗?

有没有办法在服务器上使用firefox并在加载地址或类似后复制临时文件?

欢迎任何和所有输入.

编辑:

似乎wget'不'将起作用,因为需要渲染文件.我在服务器上安装了firefox,有没有办法在firefox中加载url然后获取临时文件并清除临时文件?

linux webpage curl wget save

12
推荐指数
4
解决办法
3万
查看次数