我需要存储由多个不同日历产生的日期和持续时间.特别是我需要存储以下日期:
我还需要存储我定义为两个时间戳(日期和时间)之间差异的持续时间.这意味着需要能够存储"零"日期 - 因此我可以存储持续时间,例如,三个半小时; 或10分钟.
我有所需计算的详细信息.Firebird的时间戳基于日期函数,该函数从公元100年1月1日开始,因此无法按照我需要记录它们的方式使用.此外,此数据类型已准备好(与大多数时间戳功能一样),以记录自基准日期以来的天数; 它不适合记录日历日期.
谁能建议:
编辑:
@Warren P在他的回答中提供了一些出色的工作.我显然没有完全解释我所寻求的内容,因为他的工作主要集中在计算以及如何计算这些计算上.所有有价值和有用的东西,但不是我打算传达的问题.
我确实知道了在日期的各种表示之间进行转换所需的所有计算,并且我对如何实现它们有相当好的想法(使用Warren建议的元素).但是,我的要求是存储符合上面列出的各种标准的日期.示例:要存储的日期 - 'June June 13 Charles II'.我正在尝试确定存储此类日期的适当结构.
编辑:
我修改了我提出的架构.我已在每个表中列出了属性,并通过示例定义了表和属性,在实体框的第三部分中给出.我用这个给出的例子问题和答案通过例如我的定义,我的问题,以对应修改了的例子.虽然我通过描述其他人的例子证明了我的模式,但这种模式可能仍然过于复杂; 过分析; 错过了一些明显的简化,可能很难实现(事实上,这可能是完全错误的).任何意见或建议都是最受欢迎的.
我希望确定一个点(鼠标位置)何时在一个B样条控制点定义的曲线上或附近.
我将为B-Spline提供的信息是n个控制点的列表(在x,y坐标中).控制点列表可以是任意长度(> = 4)并定义由(n-1)/ 3立方贝塞尔曲线组成的B样条.贝塞尔曲线都是立方的.我希望设置一个参数k,(以像素为单位)定义为"接近"曲线的距离.如果鼠标位置在曲线的k个像素内,那么我需要返回true,否则返回false.
有没有一个算法可以提供这些信息.任何解决方案都不需要精确 - 我正在努力达到1像素(或坐标)的容差.
我发现以下问题似乎提供了一些帮助,但不回答我的确切问题.特别是第一个参考似乎仅是4个控制点的解决方案,并没有考虑我希望定义的接近因素.
编辑:示例曲线:
e, 63.068, 127.26
29.124, 284.61
25.066, 258.56
20.926, 212.47
34, 176
38.706, 162.87
46.556, 149.82
54.393, 138.78
Run Code Online (Sandbox Code Playgroud)
格式的描述是:"为每个边缘分配一个pos属性,该属性由3n + 1个位置组成.这些是B样条控制点:点p0,p1,p2,p3是第一个Bezier样条,p3 ,p4,p5,p6是第二个等.点由逗号分隔的两个整数表示,表示以点(1/72英寸)指定的位置的X和Y坐标.在pos属性中,控制点列表可以在起始点ps和/或终点pe之前.它们分别具有通常的位置表示,带有"s"或"e"前缀."
EDIT2:对"e"点的进一步说明(如果存在,则为s).
在pos属性中,控制点列表可以在起点ps和/或终点pe之前.它们具有通常的位置表示,分别带有"s"或"e"前缀.如果在p0处有箭头,则存在起点.在这种情况下,箭头从p0到ps,其中ps实际上在节点的边界上.箭头的长度和方向由矢量(ps -p0)给出.如果没有箭头,则p0位于节点的边界上.类似地,点pe在边缘的另一端指定箭头,连接到最后一个样条点.
在尝试学习Haskell时继续出现障碍.
我正在关注"真实世界Haskell",当谈到让他们的一个复杂的例子工作时,我得到以下错误
" e' in the constraint:
在FoldDir.hs中使用`handle'产生的模糊类型变量GHC.Exception.Exception e':88:14-61可能的修复:添加修复这些类型变量的类型签名"
我的相关代码是:
import Control.Exception (bracket, handle)
maybeIO :: IO a -> IO (Maybe a)
maybeIO act = handle (\_ -> return Nothing) (Just `liftM` act)
Run Code Online (Sandbox Code Playgroud)
我该如何根除这个错误?
我正在寻求指导,以协助我的研究方向,在系统开发中提供功能,可用性或优雅的评估.
您能否提供有关功能,可用性或编码风格测量的工作参考?谁(个人/组织)正在这个领域工作?我在哪里可以找到这样的参考.
我已经提出了一些关于系统构建的想法,这与主流开发有点不同.起点是对问题的充分描述.我正在开发一个演示/概念验证项目.
在开发我的概念验证项目时,我发现了一个意想不到的,未被忽视的好处.到目前为止,我发现可以通过间接查看开发来收集有关系统完整性的有用信息.此间接视图基于问题的描述,而不是软件解决方案.
我也相信,由于这些发展,很可能从我在其他领域的系统开发方法中提供指导,例如关于系统功能的指导; 系统的可用性如何; 或解决方案有多优雅.
到目前为止,我的探索得出了以下建议,以及我对它们的回应:
我有一对对象列表.对象可以按任意顺序出现在对中.什么是最有效的算法(和实现?)来找到相同对象之间的所有包(即允许重复的集合).为了我的目的,可以假定对象引用是指针,或名称或一些类似的方便,简短,有用的表示.单个对是可识别的.在该对的两个部分中没有对具有相同的对象.
所以给出一对对列表(Oid是一个对象引用; Pid一对引用)
O1-P1-O2
O3-P2-O4
O5-P3-O1
O1-P4-O2
O2-P5-O1
O1-P6-O5
O7-P7-O8
Run Code Online (Sandbox Code Playgroud)
应该返回:
P1;P4;P5 and P3;P6
Run Code Online (Sandbox Code Playgroud) test :: [String] -> [String]
test = foldr step []
where step x ys
| elem x ys = x : ys
| otherwise = ys
Run Code Online (Sandbox Code Playgroud)
我正在尝试构建一个包含所有输入的不同字符串的新列表.我的测试数据是:
test ["one", "one", "two", "two", "three"]
Run Code Online (Sandbox Code Playgroud)
预期结果:
["one", "two", "three"]
Run Code Online (Sandbox Code Playgroud)
我是Haskell的新手,我确信我错过了一些非常基础和明显的东西,但是已经没有办法探索这个问题了.你能指点我的想法不足吗?
实际的反应是[]
.似乎永远不会满足第一个保护条件(如果我替换它True
,原始列表被复制),因此输出列表永远不会被构建.
我的理解是,折叠会累积列表中每个项目的步骤结果,将其添加到空列表中.我预计该步骤将测试每个项目是否包含在输出列表中(测试的第一个元素不在那里)并将添加尚未包含在输出列表中的任何内容.显然不是 :-)
我试图定义具有以下特征的数据结构:
我很难开始定义这个结构(尤其是第 3-5 点)。
我最初的方法是尝试创建 MyRose 的子类型(不是工作代码):
data MyRose sub = MyRose {label :: String, subtype :: sub, children :: [MyRose sub]}
type AtLeastOne a = snoc a [a]
type AtLeastTwo a = snoc a ( snoc a [a] )
...
instance MyRose AtLeastOne where children = AtLeastOne MyRose -- instances to provide defaults
...
instance None STree where children …
Run Code Online (Sandbox Code Playgroud) 我在从程序动态生成的表单中获取信息时遇到问题.
我的程序一直运行,直到它需要来自用户的数据; 此时它应该运行一个输入表单,并从中检索数据.
下面的示例代码运行并显示输入表单,但不允许任何输入.它确实在表单初始化时返回编辑框中文本的长度.
这种方法有什么不对?
如果可能的话,我想保持分离接口和实现(包括表单)的整体方法; 我还想继续使用无模式显示表单.
编辑
在调查了@Ken White建议的模态形式后,我确定模态形式不适合我试图做的事情.我提出了一个解决方案,总结如下:
我已经写了这个解决方案的详细说明.
结束编辑
program TestProject2;
uses Dialogs, Forms, StdCtrls, SysUtils;
type
ITestForm = interface
function getFormString: string;
procedure setFormString(aString: string);
end;
TForm6 = class(TForm, ITestForm)
Edit1: TEdit;
private
function getFormString: string;
procedure setFormString(aString: string);
end;
{$R Unit6.dfm}
function NewTestFormOutput: string;
var
tmpForm: TForm6;
begin
Application.CreateForm(TForm6, tmpForm);
tmpForm.Show;
Result := tmpForm.getFormString;
end;
function TForm6.getFormString: string;
begin
Result …
Run Code Online (Sandbox Code Playgroud)