小编Rob*_*edy的帖子

有没有办法为Indy Tidhttp设置响应超时?

我使用Indy TIdhttp组件构建了一个简单的网站监控应用程序.我想检测何时在指定的时间范围内没有返回指定的页面(我使用5000毫秒).作为测试,我在网站上创建了一个页面,故意需要15秒才能响应.但是我不能让我的程序在5秒后"放弃".我尝试过ReadTimeout,一个使用计时器和OnWorkBegin事件的建议解决方案(在get调用之后永远无法让OnWorkBegin立即触发).

注意我并不担心连接超时.我担心的是服务器返回页面的超时.

这是我一直在使用的一些源代码.它包含我引用的许多元素.

procedure TServLogic.WorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Int64);
begin
  GetTimer.Enabled := True;
end;
procedure TServLogic.WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
begin
  GetTimer.Enabled := False;
end;

procedure TServLogic.GetTimerTimer(Sender: TObject);
begin
  idHttp.Disconnect(True);
end;

procedure TServLogic.CallHttp(mlink: String): String;
begin
  result := '';
  GetTimer := TTimer.create(nil);
  GetTimer.OnTimer := GetTimerTimer;
  GetTimer.Interval := 5000;
  try
    IdHTTP := TIdHTTP.create(nil);
    idhttp.ReadTimeout := 5000;
    IdHttp.OnWorkBegin := WorkBegin;
    IdHttp.OnWorkEnd   := WorkEnd;
    try
      result  := idhttp.get(mLink);
    except
      on e:exception do begin …
Run Code Online (Sandbox Code Playgroud)

delphi indy

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

如何在Git别名中包含--no-pager?

我根据EdgeCase 的Git Immersion教程创建了一个Git别名,如下所示:

hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
Run Code Online (Sandbox Code Playgroud)

但现在它似乎正在分页结果 - 显示(END)结果后的终端显示,迫使我Q继续工作.我读到通过添加--no-pager标签,您可以禁用此功能; 如何将其合并到别名中?我在最后,之前log和之后尝试过,而且没有一个能够奏效.Git抛出一个错误,说它是一个无法识别的参数,或者它改变了环境变量.有什么建议?

git terminal alias git-config

11
推荐指数
2
解决办法
2191
查看次数

除了"%s"以外的任何内容与Variant一起使用时,为什么Format会崩溃?

我正在使用SysUtils.Format函数和variant值,我发现只有格式字符串才能使用此函数%s.我检查了有关Format函数的文档,但是没有任何关于如何处理变量值的引用.

考虑这个简单的应用:

{$APPTYPE CONSOLE}

uses
  Variants,
  SysUtils;

procedure TestFormat;
var
  v : Variant;
begin
  v:=100;
  writeln(Format('The VarType of v is %s',[VarTypeAsText(VarType(v))]));
  writeln(Format('The value of v is %s',[v]));//ok

  v:='100';
  writeln(Format('The VarType of v is %s',[VarTypeAsText(VarType(v))]));
  writeln(Format('The value of v is %s',[v]));//ok

  v:=100;
  writeln(Format('The VarType of v is %s',[VarTypeAsText(VarType(v))]));
  writeln(Format('The value of v is %d',[v]));//raise a EConvertError exception EConvertError: Format '%d' invalid or incompatible with argument
end;


begin
  try
     TestFormat;
  except
    on E: Exception …
Run Code Online (Sandbox Code Playgroud)

delphi variants

11
推荐指数
2
解决办法
4695
查看次数

编译器和链接器调试信息之间有什么区别?

我有点困惑为什么Delphi在编译时链接和调试信息时有调试信息.

他们之间有什么区别?

delphi debugging

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

什么是C#相当于C++的dynamic_cast?

此C++代码检查是否o为a Node *,如果是,则调用方法d.

if (Node * d = dynamic_cast<Node *>(o)) d->do_it();
Run Code Online (Sandbox Code Playgroud)

在C#中编写等效的最短和/或最有效的方法是什么?

c# c++ casting

11
推荐指数
2
解决办法
7214
查看次数

将空窗口句柄传递给ShellExecute是否可以?

我有一个Delphi控制台应用程序,最终需要启动两个应用程序之一.

我遇到一些问题让ShellExecute无错误地工作,我认为问题与没有控制台应用程序的句柄有关.

引起我悲伤的一句话是:

ShellExecute(0, 'open', 'someapplication.exe', nil, nil, SW_SHOWNORMAL);
Run Code Online (Sandbox Code Playgroud)

我认为句柄中的0是问题,因为它编译好并在调试器中运行OK,但如果我尝试运行可执行文件,我会得到一个未处理的错误(控制台应用程序认为它已经结束了).

delphi console shellexecute delphi-2010

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

如何指定外部控制台程序的窗口位置?

在我的Win32 VCL应用程序中,我使用ShellExecute来启动一些较小的Delphi控制台应用程序.有没有办法控制那些控制台窗口的位置?我想以屏幕为中心启动它们.

delphi console-application

11
推荐指数
2
解决办法
3990
查看次数

为什么我的析构函数似乎比构造函数更频繁地被调用?

#include<iostream>
using namespace std;

class A{
public:
    static int cnt;
    A()
    { 
        ++cnt; 
        cout<<"constructor:"<<cnt<<endl;
    }
    ~A()
    {
        --cnt;
        cout<<"destructor:"<<cnt<<endl;
    }
};

int A::cnt = 0;

A f(A x){
    return x;
}
int main(){
    A a0;
    A a1 = f(a0);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

该程序将输出:

constructor:1
destructor:0
destructor:-1
destructor:-2

构造函数和析构函数不成对出现?

c++ constructor

11
推荐指数
2
解决办法
661
查看次数

当我在未初始化的函数结果上调用方法时,为什么不能获得访问冲突?

我的一位同事向我展示了用Delphi-XE XE版本15.0.3953.35171编写的代码,我认为它应该引发访问冲突.代码如下:

unit Unit3;

interface

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

type
  TForm3 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
   function test:TstringList;
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.FormCreate(Sender: TObject);
var aStrList : TStringList;
begin
 aStrList := TStringList.Create;
 test;
 FreeAndNil(aStrList);
end;

function TForm3.test: TstringList;
var i:Integer;
begin
 for i:=0 to 1000 do
  Result.Add('aaa');//AV?
end;

end.
Run Code Online (Sandbox Code Playgroud)

检查aStrList和Result具有以下结果:

aStrList: TStringList $12FEDC : $42138A


Result: TStringList $12FEC4 : $B01B90 …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-xe

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

当S是T的一个普通子类时,使用S数组是否可以安全使用T的数组?

考虑一对相关结构的以下声明.后代类不添加任何成员变量,唯一的成员函数是一个构造函数,它不会做任何事情,只是将其所有参数转发给基类的构造函数.

struct Base {
  Base(int a, char const* b):
    a(a), b(b)
  { }
  int a;
  char const* b;
};

struct Descendant: Base {
  Descendant(int a, char const* b):
    Base(a, b)
  { }
};
Run Code Online (Sandbox Code Playgroud)

现在考虑使用这些类型的以下代码.函数foo期望接收一个数组Base.但是,main定义一个数组Descendant并将其传递给它foo.

void foo(Base* array, unsigned len)
{
  /* <access contents of array> */
}

int main()
{
  Descendant main_array[] = {
    Descendant(0, "zero"),
    Descendant(1, "one")
  };
  foo(main_array, 2);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

是否定义了该程序的行为?答案是否取决于它的主体foo,例如它是写入数组还是只读取它?

如果sizeof(Derived)不相等 …

c++ arrays inheritance

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