小编max*_*fax的帖子

Delphi:IdHTTP + SSL不起作用.没错!

我使用TidHTTP + TIdSSLIOHandlerSocketOpenSSL + 2 DLL:来自http://indy.fulgan.com/SSL的 ssleay32.dll和libeay32.dll .

但我可以在HTTP Analyzer中看到我的程序的所有工作!它可以用作HTTP,而不是HTTPS.如果我使用Opera,我看不到使用相同网站下载(https://esta.cbp.dhs.gov/esta).

我没有为TidHTTP和TIdSSLIOHandlerSocketOpenSSL设置任何特殊参数(可能是我必须但我不知道到底是什么).

我必须使用TIdSSLVersion(sslvSSLv23)+ SSL证书的位置吗?我在哪里可以获得此证书?还是只有RootCertFile?

如何将idHttp的端口更改为443(我必须这样做吗?)?

我用:

procedure TForm1.FormCreate(Sender: TObject);
var mem:tmemorystream;
begin
try
  mem:=TMemoryStream.Create();
  try
    idhttp1.Get('https://esta.cbp.dhs.gov/esta/',Mem);
  except
   on E : Exception do ShowMessage(E.Message);
  end;
finally
  mem.Free;
  idhttp1.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)

请参阅我的视频:http://liga-installer.realservers.info/ssl.mp4

截屏:

在此输入图像描述 在此输入图像描述 在此输入图像描述

谢谢谢谢你的帮助!

delphi ssl idhttp

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

德尔福:30天试用期

如何为我的申请进行30天的试用?我需要允许用户仅在30天内使用应用程序.这些天怎么算?

我将第一个和最后一个日期保留在注册表中.但是如果要改变系统时间 - 没有保护.我需要算上这30天.

delphi

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

Delphi:在列表视图中绘制自己的进度条

我有一个列表视图并绘制它OwnerDraw.

如何在圆形角度和顶部的线条上绘制一个简单而平滑的进度条,如下图所示?

在此输入图像描述

我需要你的帮助才能将下面的代码应用到我的需求中(我的技能无法编辑).

//  TUbuntuProgress
//  Version 1.2

unit UbuntuProgress;

interface

uses
  Windows, SysUtils, Classes, Controls, Graphics, Math, ExtCtrls;

type
  TUbuntuProgressColorSets = (csOriginal, csBlue, csRed);
  TUbuntuProgressMode = (pmNormal, pmMarquee);
  TMarqueeMode = (mmToLeft, mmToRight);
  TMarqueeSpeed = (msSlow, msMedium, msFast);

  TUbuntuProgress = class(TGraphicControl)
  private
    FColorSet: TUbuntuProgressColorSets;
    FProgressDividers: Boolean;
    FBackgroundDividers: Boolean;
    FMarqueeWidth: Longint;
    FMax: Longint;
    FMode: TUbuntuProgressMode;
    FPosition: Longint;
    FShadow: Boolean;
    FSpeed: TMarqueeSpeed;
    FStep: Longint;
    FVisible: Boolean;
    Buffer: TBitmap;
    DrawWidth: Longint;
    MarqueeMode: TMarqueeMode;
    MarqueePosition: Longint;
    Timer: TTimer;
    procedure SetColorSet(newColorSet: …
Run Code Online (Sandbox Code Playgroud)

delphi listview draw progress-bar

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

为什么在等待我告诉终止的线程时,"句柄无效"?

如何在应用程序关闭时正确停止线程?

我这样做:

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if not Thread1.Finished
then
  begin
    Thread1.Terminate;
    Thread1.WaitFor();
  end;
end;
Run Code Online (Sandbox Code Playgroud)

但是在Thread1.WaitFor上我有一个错误:"线程错误:句柄无效(6)." 如果我做WaitForSingleObject(Thread1.Handle,无限)而不是WaitFor就可以了.

为什么我使用Thread.freeonterminate:= false然后WaitFor工作正常?请解释我的错误.据我所知,我需要使用"if Assigned"而不是"if not Thread1.Finished",对吧?

delphi multithreading terminate

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

德尔福:简单的hh:mm:ss Timer

有没有人为hh:mm:ss计时器(Timer1.Interval:= 1000)提供简短有效的代码?我可以制作一个,但我想要一些有效的东西.

谢谢!

我的代码:

Var MyTime:TTime;

MyTime:=EncodeTime(0,0,0,0);

procedure TForm1.Timer1Timer(Sender: TObject);
begin
MyTime:=incsecond(Mytime,1);
form1.Label1.Caption:='Time: '+TimeToStr(MyTime);
end;
Run Code Online (Sandbox Code Playgroud)

delphi timer

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

可以从辅助线程调用CopyFileEx吗?

从线程调用CopyFileEx和CopyCallback/ProgressRoutine函数(ProgressBar.Position将同步)是否可能?

我可以在线程中声明CopyCallback/ProgressRoutine函数吗?我在@ProgressRoutine上的CopyFileEx中收到错误:"需要变量".

delphi winapi multithreading file-copying

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

从TStringList中删除字符串

我有一个列表框或列表视图与项目.我有一个字符串列表与列表框/列表视图相同的项目(字符串).我想从字符串列表中删除列表框/列表视图中的所有选定项目.

怎么做?

for i:=0 to ListBox.Count-1 do
  if ListBox.Selected[i] then
    StringList1.Delete(i); // I cannot know exactly an index, other strings move up
Run Code Online (Sandbox Code Playgroud)

delphi string tstringlist

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

SysListView32就像鼠标选择矩形一样

我可以在列表视图中制作鼠标选择矩形,就像在SysListView32中一样吗? 在此输入图像描述

有没有办法使用SysListView32并在Delphi中使用它?

谢谢!

delphi listview selection syslistview32

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

Delphi:加载BASS DLL并播放MP3

我想从某个地方手动加载一个低音DLL,然后播放一个mp3文件.怎么做?德尔福XE2.

我的尝试不起作用:

type
  QWORD = Int64;
  HSTREAM = LongWord;
type
  TBASS_ChannelPlay = function(handle: HSTREAM; restart: LongBool): LongBool; stdcall;

type
  TBASS_StreamCreateFile = function(mem: LongBool; f: Pointer;
    offset, length: QWORD; flags: LongWord): HSTREAM; stdcall;

procedure PlayMP3(FileName: string);
var
  BASS_ChannelPlay: TBASS_ChannelPlay;
  BASS_StreamCreateFile: TBASS_StreamCreateFile;
  DllHandle: THandle;
  MP3Stream: HSTREAM;
  DllPath:string;
  pFileName:pchar;
begin
  DllPath:= 'c:\dll\bass.dll';
  DllHandle := LoadLibrary(pchar(DLLPath));
  try
    if DllHandle = 0 then
      Exit;
    @BASS_StreamCreateFile := GetProcAddress(DllHandle,
      'BASS_StreamCreateFile');
    if @BASS_StreamCreateFile <> nil then
    begin
      pfilename:=pchar(FileName);
      MP3Stream := BASS_StreamCreateFile(false, Pfilename, 0, 0, 0);
      if …
Run Code Online (Sandbox Code Playgroud)

delphi mp3 function bass.dll

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

Delphi:GDI +和渐变框架/矩形的问题

德尔福XE2.有一个表格和一个框架.

形式和框架是doublebuffered.GlassFrame已启用.

我绘制框架的背景,并尝试绘制一个右对齐的矩形,但有bug.特别是在调整大小时我有错误.

矩形不希望从透明度到不透明的黑色正常绘制. 在此输入图像描述

uses ...GDIPAPI, GDIPOBJ...
type
  TFrame2 = class(TFrame)
    procedure PaintWindow(DC: HDC); override;

  private
    { Private declarations }
  public
    { Public declarations }
  end;

implementation
{$R *.dfm}

procedure TFrame2.PaintWindow(DC: HDC);
var
  R: TGPRect;
  pen: TGPPen;
  Graphics: TGPGraphics;
  linGrBrush: TGPLinearGradientBrush;
begin
  R.X := 0;
  R.Y := 0;
  R.Width := self.Width;
  R.Height := self.Height;

  Graphics := TGPGraphics.Create(DC);

  linGrBrush := TGPLinearGradientBrush.Create(R, MakeColor(255, 120, 248, 253),
    MakeColor(255, 200, 216, 250), LinearGradientModeVertical);

  Graphics.FillRectangle(linGrBrush, 0, 0, R.Width, R.Height);
  linGrBrush.Free;

    linGrBrush …
Run Code Online (Sandbox Code Playgroud)

delphi transparency gdi+ gradient frame

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