我想要以下功能来选择一个$minvalue和某个住宿之间的住宿$maxvalue.最好的方法是什么?
function gethotels($state_id,$city,$accommodation,$minvalue,$maxvalue,$limit,$pgoffset)
{
$this->db->limit($limit, $pgoffset);
$this->db->order_by("id", "desc");
$this->db->where('state_id',$state_id);
$this->db->where('city',$city);
// This one should become a between selector
$this->db->where($accommodation,$minvalue);
$result_hotels = $this->db->get('hotels');
return $result_hotels->result();
}
Run Code Online (Sandbox Code Playgroud) 我有一个问题TRegEx.replace:
var
Value, Pattern, Replace: string;
begin
Value := 'my_replace_string(4)=my_replace_string(5)';
Pattern := 'my_replace_string\((\d+)\)';
Replace := 'new_value(\1)';
Value := TRegEx.Replace(Value, Pattern, Replace);
ShowMessage(Value);
end;
Run Code Online (Sandbox Code Playgroud)
new_value(4)=new_value(5)我的代码(用Delphi XE4编译)给出了预期的结果new_value(4)=new_value()1)
使用Notepad ++,我得到了预期的结果.
使用命名组可以清楚地看出1是字面意义上的后向引用:
Pattern := 'my_replace_string\((?<name>\d+)\)';
Replace := 'new_value(${name})';
// Result: 'new_value(4)=new_value(){name})'
Run Code Online (Sandbox Code Playgroud)
替换总是那么简单(可能是零次或多次my_replace_string),所以我可以轻松创建自定义搜索和替换功能,但我想知道这里发生了什么.
这是我的错,还是一个错误?
我正在使用Xamarin(版本7.1)开发Android应用程序.它显示为地图并绘制PolyLines,这样做OnCameraIdle().
以MapFragment编程方式生成OnCreate.我正在获取GoogleMapin OnResumevia GetMapAsync并绑定侦听器OnMapReady.
它们工作正常,但仅限于开始.一旦设备旋转(纵向 - >横向或反之亦然),相机移动不会再触发听众.
然而,地图有效 - 我(用户)仍然可以很好地移动相机.我(应用程序)再也无法使用它了.
这是裸代码,只有地图创建和处理.其他所有(实际绘图)都被删除:
public class MapActivity : Activity, IOnMapReadyCallback,
GoogleMap.IOnCameraIdleListener, GoogleMap.IOnCameraMoveStartedListener
{
private GoogleMap _map;
private MapFragment _mapFragment;
private void InitializeMap()
{
_mapFragment = MapFragment.NewInstance();
var tx = FragmentManager.BeginTransaction();
tx.Add(Resource.Id.map_placeholder, _mapFragment);
tx.Commit();
}
private void SetMapListeners()
{
Log.Debug("MyApp/ Map", "SetMapListeners");
_map.SetOnCameraIdleListener(this);
_map.SetOnCameraMoveStartedListener(this);
}
/* Activity */
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Log.Debug("MyApp / Map", "OnCreate");
SetContentView(Resource.Layout.Map);
InitializeMap();
} …Run Code Online (Sandbox Code Playgroud) 我正在使用Delphi XE3.
当我创建一个新的VCL项目并删除TToolbar它时,一切正常 - 除非我激活Form1.DoubleBuffered.
从那一刻起,工具栏的绘制就被打破了 - 在设计时,它是黑色,透明或IDE的一部分(状态栏,工具栏等)被复制到其中.当我点击它时以及当我更改为源代码(F12)并返回时,它会在这些选项之间发生变化.
在运行时,它总是黑色的.
随着DrawingStyle=dsGradient,一切正常.切换回dsNormal再次打破它.
停用Form1.DoubleBuffered修理它.
任何提示如何解决该问题?
我想创建*.bpl文件,但我没有这样做.
具体来说,我正在尝试制作JEDI插件,但我也试过了一个空的纯Delphi包.
如果我在Delphi XE3中创建一个新包,我得到一个空单元 - 如果我"制作"这个名为"Package1.bpl"的项目,我在"debug/win32 /"中得到一个.dcu文件,但是没有.bpl文件.
编译器未报告错误.
空的JEDI插件(bpl样式)也只提供.dcu,而空的dll风格的JEDI插件在"debug/win32 /"中提供.cdu 和 .dll文件.
这是我第一次尝试制作新包装,所以我完全迷失了.
我错过了什么?
老王
我目前正在开发一个MDI应用程序.
每次创建新的MDI子窗口时,它的基础数据都会动态保存到SQLite数据库并且列open设置为1,因此如果用户关闭程序并重新打开它,则会恢复窗口(同样在Anything的情况下)坏TM).
因此,每个文档始终存在于数据库中 - 如果用户单击"保存",则唯一发生的是该列persistent设置为1.
现在,如果MDI子窗口关闭,open则设置为0- 并且每一行都persistent=0 AND open=0将注定失败并将被删除.
由于这种行为,我不需要问"保存文件?" 在ApplicationClose上.
但每次MDI子窗口关闭时我都需要询问.
如果Mainform.OnCloseQuery以前会被召唤MDIChild.OnCloseQuery,那将很容易做到,但遗憾的是并非如此.
总结一下:
我需要一种方法来了解是否MDIChild.OnCloseQuery被调用因为
有没有办法做到这一点?
这是这个问题的后续内容.
看看这个模式:
(o(?1)?o)
Run Code Online (Sandbox Code Playgroud)
它匹配任何o长度为2 n的序列,其中n≥1.
它可以工作,请参阅regex101.com(为了更好的演示添加了字边界).
问题是:为什么?
在下文中,字符串的描述(匹配与否)将只是粗体数字或粗体术语,描述长度,如2 n.
细分(添加空格):
( o (?1)? o )
( ) # Capture group 1
o o # Matches an o each at the start and the end of the group
# -> the pattern matches from the outside to the inside.
(?1)? # Again the regex of group 1, or nothing.
# -> Again one 'o' at the start and one at the end. …Run Code Online (Sandbox Code Playgroud) 我正在尝试更新数据库中的所有日期字段,为所有表中的每个日期添加 5 天。
我设法将日期和行 ID 提取到数组中,然后生成 SQL 代码语句来更新它们。但是,每个表都有不同的日期格式,有些包含时间,有些不包含时间。我想在日期上添加 5 天,然后将其保存回来。目前,如果所有日期都具有相同的格式,我可以这样做,但这不足以解决我的问题。
我想要的是一个可以从日期字符串生成字符串格式的代码。例如:
日期字符串2014-12-04我希望代码表明该日期具有Y-m-d格式。如果日期字符串是,2017-04-03 11:11:48.653我希望代码说这个日期格式是Y-m-d h:i:s。
我创建了一个包含一个组件的新包(TSpeedButton的后代),编译了包并将其安装在IDE(Delphi XE3 Pro)中.
它已经测试了它(我可以在设计和运行时使用我的组件).
但是:我关闭了IDE,现在我无法启动它.
它显示启动画面并显示进度:
最多All designtime packages loaded(由德语翻译,YMMV).
我猜这是我的包裹,所以我删除了BPL.在下一次启动时,Delphi表示可以找到该软件包并询问是否应该在加载下一个项目时加载它; 我点击"否".
但是Delphi还没有启动,行为完全一样.启动Splashscreen并停止.
安装程序的"修复"选项也没有帮助.
老王
编辑:事实证明我太不耐烦了 - 重新启动就把它清理干净了.
我仍然标记肯肯怀特的答案,因为它本来是最后的解决方案.
我正在编写一个必须打开已由第三方保存的预先存在的BDE数据库的应用程序.
在这个应用程序,我现在有一个TDatabase(DriverName:STANDARD)与path集正确Params.
我现在可以设置Connected为true而没有错误消息.
还有一个TTable与DatabaseName集到的TDatabase的值,并TableName设置为.db的文件是位于文件夹中(这个名字被自动填写,我只顶帽子,将其选中).
现在问题是:
如果我设置Active为true,则会出现错误消息,抱怨缺少访问权限C:\PDOXUSRS.NET.
我知道我可以设置另一条路径BDEADMIN,但我需要在我的应用程序中解决这个问题 - 我不能指望每个客户都做这个改变.此外,我有一台运行第三方应用程序的测试机 - 它可以无任何错误地访问数据库,而我的应用程序抛出上述错误.这让我怀疑可能有一种解决方法.
有这样的解决方法吗?
我只需要对数据库的读访问权限.
如何使用记事本++删除文件中的所有whitescape?
示例数据:
;; ;;;2017-03-02;8.026944444;16.88583333;8.858888889
;; ; ; ; 2017-03-03 ; 7.912777778 ; 16.88583333 ; 8.973055556
;; ; ; ; 2017-03-06 ; 7.954444444 ; 16.88583333 ; 8.931388889
; ; ; ; ; 2017-03-07 ; 7.926388889 ; 16.88583333 ; 8.959444444
;;;;;2017-03-05;8.984722222;16.98472222 ;8
Run Code Online (Sandbox Code Playgroud) delphi ×6
delphi-xe3 ×4
package ×2
php ×2
regex ×2
android ×1
bde ×1
c# ×1
codeigniter ×1
date ×1
delphi-xe4 ×1
hang ×1
ide ×1
jedi ×1
jvcl ×1
mapfragment ×1
mdi ×1
notepad++ ×1
paradox ×1
pcre ×1
recursion ×1
regex-group ×1
sql-server ×1
text ×1
toolbar ×1
vcl ×1
whitespace ×1
xamarin ×1