小编Sta*_*anE的帖子

输入文件大小和内容不会在macOS上更新

我写了一个基于Web的小工具,它使用文件输入来读取不断变化的文件.用户手动选择它(一次!)和更改它时的JavaScript跟踪(最后文件修改时间和文件大小).如果已更改,则会再次读取文件内容.

这适用于Windows上的所有浏览器.但是在macOS上(在Safari 10.1.2和Firefox 51.0.1中测试),只有最后修改时间似乎会更新.文件大小未更新,似乎也无法再读取文件内容.所以我无法跟踪macOS上的浏览器中的文件更改.

但为什么?这是macOS的安全限制吗?

请使用以下代码段进行测试.选择一个文件(例如文本文件),查看上次修改的时间戳和文件大小,然后更改文件并再次查看,如果大小已更改.在macOS上,文件大小不会更改.

请不要jQuery.

window.addEventListener('load', function() {
  window.setInterval(function() {
    var logFile = document.querySelector('#file').files[0];
    if (logFile) {
      document.querySelector('#info').innerHTML = '<br/>' +
        (new Date()).toString() + '<br/>Last modified: ' +
        logFile.lastModified +
        '<br/>Size: ' +
        logFile.size;
    }
  }, 1000);
});
Run Code Online (Sandbox Code Playgroud)
#info {
  font-family: Courier;
  font-size: 0.9em;
}
Run Code Online (Sandbox Code Playgroud)
<!DOCTYPE html>
<input type="file" id="file" />
<p id="info"></p>
Run Code Online (Sandbox Code Playgroud)

html javascript filereader

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

使用TStyleBook时的旧/深色对话框

此问题与以下问题高度相关:为什么所有对话框都使用“旧” Android 2.x样式?

我正在使用Delphi Berlin(10.1),该问题已得到解决:

在此处输入图片说明

但是,一旦将TStyleBook放到窗体中并分配给它(例如,通过右键单击一个组件,然后“编辑自定义样式”),对话框(所有对话框)将再次变为深色样式:

在此处输入图片说明

自动创建的“修剪”样式仍然是“ light”版本(“ AndroidL Light”)。是的,我检查了FMX.Helpers.Android.pas中的函数“ GetNativeTheme()”分配了Result,甚至复制了文件并将其添加到项目中。从Form1.StyleBook再次显示本机样式对话框中删除任务。

在仍然继续使用TStyleBook的情况下如何解决?

delphi android firemonkey delphi-10.1-berlin

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

防止滚动 TVertScrollBox 时触发事件

通常,当滚动“滚动框”的内容时,滚动框的子组件不会触发任何事件函数,例如在本机应用程序中。但在 FireMonkey 中,如果 TVertScrollBox 包含像 TRectangle 这样的子元素(我想将其用作自定义菜单的菜单条目),则用手指滚动 Android 上的 TVertScrollBox 有时会触发子元素的事件函数(如 OnClick)这对我和我们的客户来说非常令人困惑 - 他们不想在滚动时点击特定元素。

在本机应用程序中,这种情况永远不会发生。我不知道如何防止这种行为。我尝试将 OnMouseEnter 和 OnMouseLeave 中的所有子元素的 HitTest 属性设置为 FALSE(我还尝试了其他事件),如下所示:

procedure TframeCornerMenu.VertScrollBox1MouseEnter(Sender: TObject);
var
  list: TRectangle;
  i: Integer;
begin
  list := FindComponent('rectMenuList') as TRectangle;
  for i := 0 to list.ChildrenCount - 1 do
  begin
    if list.Children[i] is TRectangle then
      TRectangle(list.Children[i]).HitTest := false;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

但这显然不起作用(也不能),因为用户首先点击位于 TVertScrollBox 顶部的子元素。

这是 FireMonkey 中的错误/未实现的功能吗?我很欣赏解决这个滚动问题的所有想法。如果可能的话,不使用第三方组件。

我使用的是 Delphi 社区版 10.3.2 (26.0.34749.6593)。

delphi android firemonkey

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

在Delphi中找到Pos()的换行符

我通常使用C++ Builder,刚开始在Delphi中测试.我找不到使用Delphi(XE5)Pos()函数的换行符,这是奇怪的语法.我错了什么?使用StringReplace()等其他函数可以正常工作.这是一个示例代码:

sl := TStringList.Create;
sl.Add('Hello');
sl.Add('world');
sl.Add('!');

if (Pos(sl.Text, #13#10) > 0) then
    ShowMessage('1')
else if (Pos(sl.Text, #13) > 0) then
    ShowMessage('2')
else if (Pos(sl.Text, #10) > 0) then
    ShowMessage('3')
else
    ShowMessage('4');  // Comes always here...
Run Code Online (Sandbox Code Playgroud)

这就是我总是在C++ Builder中做到这一点并且从来没有遇到任何问题.

delphi break

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