小编Jef*_*eff的帖子

用COM完成耗时任务时防止崩溃(SKYPE4COM)

我正在使用Skype4COM控件.我的程序试图使用For循环从Skype中的联系人列表中删除大约3K联系人

1)这需要很多时间

2)它可能会崩溃,"MyApp已停止工作"

我的猜测是,我需要"减慢"我正在做的事情.

我会用Sleep()来做那件事吗?因为我不确定这是否会"暂停"Skype和我的程序之间的连接.

总结一下:我正在用大量的条目做一个动作,由于这个大的数量,我的程序挂了很长时间,并最终崩溃(有时).有办法防止这种情况吗?

Skype4COM顺便提一下STA.

  • 谢谢!

delphi com activex skype

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

树状数据结构(用于VirtualTreeview)

正如Rob Kennedy先生所建议的那样,我已经到了需要停止将数据存储在VCL组件中并具有"基础数据结构"的地步.

首先,这个问题是关于"我如何建立基础数据结构".:)

我的层次结构由2级节点组成.

现在,我通过循环根节点来完成我的东西,其中我循环通过rootnode的子节点,以获得我需要的东西(数据).我希望能够将所有数据存储在所谓的底层数据结构中,以便我可以使用线程轻松修改条目(我想我能够做到这一点?)

但是,当循环遍历我的条目(现在)时,结果取决于节点的Checkstate - 如果我使用的是底层数据结构,我怎么知道我的节点是否被检查,当我的数据结构循环通过时,而不是我的节点?

假设我想使用2个级别.

这将是父母:

TRoot = Record
  RootName : String;
  RootId : Integer;
  Kids : TList; //(of TKid)
End;
Run Code Online (Sandbox Code Playgroud)

那孩子:

TKid = Record
  KidName : String;
  KidId : Integer;
End;
Run Code Online (Sandbox Code Playgroud)

这基本上就是我现在所做的.评论说这不是最好的解决方案,所以我愿意接受建议.:)

我希望你理解我的问题.:)

谢谢!

delphi tree virtualtreeview data-structures

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

是否可以在VirtualStringTree中多次显示一个对象?

我意识到我真的需要重写我的程序数据结构(不是现在,但很快,因为截止日期是星期一),因为我目前正在使用VST(VirtualStringTree)来存储我的数据.

我想要实现的是一个联系人列表结构.根节点是类别,子节点是联系人.共有2个级别.

但事实是,我需要一个联系人才能在一个以上的类别中显示,但它们需要同步.特别是Checkstate.

目前,为了保持同步,我遍历整个树来查找与刚刚更改的ID具有相同ID的节点.但是当存在大量节点时,这样做非常缓慢.

所以,我想:是否可以在多个类别中显示联系对象的一个实例

注意:老实说,我并不是100%熟悉术语 - 我的意思是实例,是一个对象(或记录),所以我不必通过整个树来查找具有相同ID的联系对象.

这是一个例子:

例

如您所见,Todd Hirsch出现在测试类别和所有联系人中.但是在幕后,那些是2个PVirtualNodes,所以当我更改某个节点(如CheckState)上的属性,或节点的数据记录/类中的某个属性时,2个节点不同步.目前我可以同步它们的唯一方法是循环访问我的树,找到容纳相同联系人的所有节点,并将更改应用于它们及其数据.

总结一下:我正在寻找的是一种使用一个对象/记录的方法,并在我的树中的几个类别中显示它 - 每当一个节点被检查时,每个其他节点都包含相同的Contact对象.

我在这里有意义吗?

delphi synchronization virtualtreeview nodes data-structures

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

Delphi应用程序的SSL证书 - 是否需要启用安全性?

所以我今天刚刚安装了XAMPP,我注意到index.php检查了它是否是通过HTTPS访问的.在此之前,我认为为了使用SSL安全性,您需要一个证书,但我现在对此表示怀疑.

在这一点上(请纠正我,这就是这个问题的重点!),我自己的研究让我相信证书只提供有关您访问的位置的信息.如果未找到证书,则由客户决定他/她是否信任该连接.

XAMPP索引页面包含以下检查:

<?php
    if (!empty($_SERVER['HTTPS']) && ('on' == $_SERVER['HTTPS'])) {
        $uri = 'https://';
    } else {
        $uri = 'http://';
    }
    $uri .= $_SERVER['HTTP_HOST'];
    header('Location: '.$uri.'/xampp/');
    exit;
?>
Run Code Online (Sandbox Code Playgroud)

好吧,所以我访问了我的Localhost https://localhost,以及Firefox"你相信这个网站吗?" 页面出现了(问题是:我能相信自己吗?;)).

之后,我test.php用以下代码创建了自己的小东西:

<?php
  echo "Hi. \n";
  if(isset($_POST['firstname']) && isset($_POST['lastname']))
  {
   echo "Your Firstname is ".$_POST['firstname']." and your Lastname is ".$_POST['lastname'];
   echo "\r\n\r\n";
    if (!empty($_SERVER['HTTPS']) && ('on' == $_SERVER['HTTPS'])) {
        echo "You are using SSL, arentcha? :)";
    } else {
        echo "Hmm.. No SSL!";
    }

  }

?>
Run Code Online (Sandbox Code Playgroud)

然后,我创建一个连接到一个Delphi应用程序 …

php delphi ssl https ssl-certificate

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

Textarea \n到<br>没有逃脱

我在textarea中输入内容,按下按钮后,我的JS获取textarea输入并将其放入div标签中.

问题是,当我在textarea中输入换行符时,如下所示:

Hi

Goodbye
Run Code Online (Sandbox Code Playgroud)

它出现在div中

Hi<br><br>Goodbye
Run Code Online (Sandbox Code Playgroud)

当我使用Firebug实时检查实际的HTML标记时,我在div中看到了这一点:

Hi&lt;br&gt; &lt;br&gt; Goodbye
Run Code Online (Sandbox Code Playgroud)

这是我发现的一个函数,应该用breaktags替换换行符:

function nl2br (str, is_xhtml) {   
var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '\<br \/>' : '\<br>';    
return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1'+ breakTag +'$2');
}
Run Code Online (Sandbox Code Playgroud)

这是我如何使用它:

etext = $('#mytext').val();
etext = nl2br(etext,false);
$('#mydiv').text(etext);
Run Code Online (Sandbox Code Playgroud)

但是如你所见,它无法正常工作.

我怎样才能做到这一点?如果您需要更多代码,请告诉我们

html javascript jquery

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

将数据写入PVirtualNode而不手动设置每个字段值

假设我有这个节点数据记录:

Type
  PPerson = ^TPerson;
  TPerson = record
   Name: String;
   Age: Integer;
   SomeBool: Boolean;
  end;
Run Code Online (Sandbox Code Playgroud)

要填充我的VirtualStringTree,我会这样做:

Procedure AddToTree(Person: TPerson);
Var
 Node: PVirtualNode;
 Data: PPerson;
Begin
 Node := VT.AddChild(nil);
 Data := VT.GetNodeData(Node);
 Data.Name := Person.Name;
 Data.Age  := Person.Age;
 Data.SomeBool := Person.SomeBool;
End;

Procedure TMyForm.MyButtonClick(Sender: TObject);
Var
 Person: TPerson;
Begin
 Person.Name := 'Jeff';
 Person.Age := 16;
 Person.SomeBool := False;
 AddToTree(Person);

End:
Run Code Online (Sandbox Code Playgroud)

现在,虽然这很好用,但我想简化它,所以每当我向记录添加新字段时,我都不会修改AddToTree方法.

所以我尝试了这个:

Procedure AddToTree(Person: TPerson);
Begin
 VT.AddChild(nil,@Person);
End;
Run Code Online (Sandbox Code Playgroud)

这个编译,似乎PVirtualNode没有得到数据,因为我的VT没有显示任何东西,并且当打破OnGetText事件时,我看到变量是空的.

我究竟做错了什么?:)

delphi pointers virtualtreeview tvirtualstringtree

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

php"include()"安全漏洞?

在PHP手册中include,有一个用户贡献声明如下:

include()当用于加载配置信息时有一个可怕的安全漏洞,如果有人破坏了包含文件中的PHP标头,它会很乐意将配置文件打印到包含它作为纯文本的每个页面.

幸运的是,这种行为可以快速轻松地进行(本文中提到):

<?php
ob_start();//Hook output buffer
include("config.php");
ob_end_clean();//Clear output buffer
?> 
Run Code Online (Sandbox Code Playgroud)

我知道以下将阻止任何输出,直到输出缓冲区被清除/解除/无论什么.但是,我不确定的是if someone corrupts the PHP header in the included file- 是什么可以在客户端/远程完成,或者如果我不小心给php文件一个不同的文件扩展名?

总而言之:外部用户如何破坏php标头?

php security include

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

多维JSON结构问题

我有以下伪结构.

[
   {"product":
      {
        "id":"14",
        "product_title":"My Awesome Product!",
        "product_desc":"An awesome product.."
      }
   }, 
   {"product":
      {
        "id":"15",
        "product_title":"My MORE Awesome Product!",
        "product_desc":"An AWESOMER product..."
      }
   }
]
Run Code Online (Sandbox Code Playgroud)

我正在迭代它:

$.post('Ajax.php',function(res){
  res = res.pop();
  $.each(res,function(product){
    alert(product.product_title);
  });
});
Run Code Online (Sandbox Code Playgroud)

但是,只显示了最后一个product_title.它不是通过所有这些.是我的代码还是我的JSON结构?谢谢!

编辑:原因.pop();:阅读jQuery JSON结构 - 无法让它工作

javascript jquery json

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

如何使用ObjectListView或TreeListView显示树结构

我一直在研究ObjectListView for .NET,并尝试过自己弄乱它.

我来自使用VirtualTreeview和Delphi,所以如果你能指出相似之处那就太棒了!

我尝试使用TreeListView和以下类创建一个多级树:

public class MyClass
{
    public string Name { get; set; }
    public List<MyClass> MyClasses { get; set; }
    public MyClass(string name)
    {
        Name = name;
        MyClasses = new List<MyClass>();
    }
}
Run Code Online (Sandbox Code Playgroud)

TreeListView是一个设计时组件.我使用此代码创建虚拟数据并让TreeListView显示它.

var MyClasses = new List<MyClass>();
MyClasses.Add(new MyClass("Bob"));
MyClasses.Add(new MyClass("John"));
var myClass = new MyClass("Mike");
myClass.MyClasses.Add(new MyClass("Joe"));
MyClasses.Add(myClass);

treeListView1.SetObjects(MyClasses);
Run Code Online (Sandbox Code Playgroud)

我还有一个显示Name属性的列.

所有这一切都有效,除了我没有看到Mike节点的子节点.我似乎无法弄清楚在这做什么.我查看了文档,但找不到任何有用的信息.

此外,像这样的多级结构可以与ObjectListView的其他变体一起使用,例如FastObjectListView吗?

c# tree objectlistview

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

NHibernate什么时候执行我的查询?

我正在尝试为我的NHibernate数据访问编写通用存储库.该Get<T>()方法应该能够采用一个可选的谓词,该谓词应该包含在查询中 - 也就是说,NHibernate应该在SQL中生成WHERE子句.

    public virtual IList<T> Get(Func<T, bool> predicate = null)
    {
        // Open NHibernate Session
        using (var session = NHibernateHelper.OpenSession())
            return (predicate != null
                       ? session.Query<T>().Where(predicate)
                       : session.Query<T>()).ToList();

    }
Run Code Online (Sandbox Code Playgroud)

当我传入一个谓词,并观察NH生成的SQL语句时,我看不到where子句.

NHibernate何时执行查询?什么时候打电话.Query<T>()?如果是这样,我怎么能做到这一点?

c# linq nhibernate

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