小编Rob*_*edy的帖子

如何获取已安装的网络摄像头列表?

如何在计算机上获取所有可用的网络摄像头驱动程序?我想在组合框中显示驱动程序.

delphi webcam driver

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

如何链接方法调用?

考虑这个例子:

 Memo1.Clear;
 Memo1.Add(S);
 Memo1.SaveToFile(F);
Run Code Online (Sandbox Code Playgroud)

如果它是在JavaScript中,我们可以这样做:

 Memo1.Clear.Add(S).SaveToFile(F);  
Run Code Online (Sandbox Code Playgroud)

我怎样才能编写自己的Delphi类来支持这样的链接方法调用?我希望能够编写这样的代码:

 MyFileClass.Create('File.txt').OpenForWrite().Add('Test');
Run Code Online (Sandbox Code Playgroud)

delphi delphi-xe3

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

如何在编辑框中显示标签,但在获得焦点时切换到密码输入模式?

我使用的是Delphi 10和Windows 10.

以下代码使插入符号和选择在Edit1中消失.

procedure TForm1.Edit1Enter(Sender: TObject);
begin
  Edit1.PasswordChar := '*';
end;
Run Code Online (Sandbox Code Playgroud)

焦点移动到另一个控件后,在onClick上运行良好.

我不能使用onClick,因为焦点按Tab键移动而Edit1应该以默认#0开头,因为它在焦点进入之前保存了'password'文本.

我怎么解决这个问题?

delphi editbox

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

Peter Below 的线程启动屏幕和模态对话框

我正在使用Peter Below 的 PBThreadedSplashForm在应用程序启动期间显示。在创建数据模块期间(就在创建主窗体之前),它会随着各种数据库的打开而更新。

问题是我们要检查在创建数据模块期间所做的某些事情是否存在。如果缺少任何这些项目,则会显示一个模式对话框,以便可以创建该项目或关闭应用程序。(缺少的项目通常是索引,该对话框主要在我们重新索引数据库时使用,因此它针对的是开发人员而不是普通用户。)但是,模式对话框显示在启动屏幕后面;随着标题的变化,它似乎是焦点窗口,但它显示在启动屏幕后面。

启动屏幕是使用 Windows API CreateWindowEx() 从与主进程不同的线程创建的,使用以下代码:

procedure TPBSplashThread.CreateSplashWindow;
const
  TopmostStyle: Array [Boolean] of DWORD = (0, WS_EX_TOPMOST );
  NoActivateStyle : Array [Boolean] of DWORD = (0, WS_EX_NOACTIVATE );
var
  wsize: TSize;
begin
  wsize.cx := FSurface.Width + GetSystemMetrics( SM_CXEDGE ) * 2;
  wsize.cy := FSurface.Height + GetSystemMetrics( SM_CYEDGE ) * 2;
  FWnd := CreateWindowEx(
            TopmostStyle[ FTopmost ] or WS_EX_TOOLWINDOW
            or WS_EX_STATICEDGE or WS_EX_CLIENTEDGE
            or NoActivateStyle[ Win32MajorVersion >= 5 ],
            MakeIntResource( FWndClass ),
            nil,
            WS_POPUP or …
Run Code Online (Sandbox Code Playgroud)

delphi winapi

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

当我使用ShellExecute时,为什么我的命令不像我预期的那样运行?

我试图从我的Delphi代码使用命令行实用程序(它与dos命令行中的测试一起使用)将PDF转储到文本.

这是我的代码

if fileexists(ExtractFilePath(Application.ExeName) + 'pdftotext.exe') then
begin
  ShellExecute(H,'open', 'pdftotext.exe', PWideChar(fFileName), nil, SW_SHOWNORMAL);
  if fileExists(changeFileExt(fFileName, '.txt')) then
    Lines.LoadFromFile(changeFileExt(fFileName, '.txt'))
  else
    ShowMessage('File Not found');
end;
Run Code Online (Sandbox Code Playgroud)

在代码中放置断点并单步执行时,它会使用它

if fileExists(changeFileExt(fFileName, '.txt')) then  
Run Code Online (Sandbox Code Playgroud)

但是返回false,因此调用了Shellexecute,但是没有转储任何文件

我做错了什么?

delphi winapi command-line shellexecute delphi-2010

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

如何在不使用Indy或WinINet的情况下发送HTTP请求?

我正在为HTTP请求寻找IdHTTP的轻量级替代品.最好是不使用WinINet的.我需要向我拥有的网站发送请求(因此我可以配置可能需要的任何设置).

delphi delphi-7

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

我检查一个数字是另一个数字的倍数的方式有什么问题?

我在一个过程中使用此代码,我遇到了第一个if子句的麻烦:

procedure TForm1.Button1Click(Sender: TObject);
var i,indice,n,conto:integer;
    a:string;
begin
  indice:=1;
  conto:=0;

  Memo2.Lines.Add('<tr>');

  for i := 1 to 649 do
   begin
    if ((i <> 11) or (i mod 11 <> 0)) then
     begin
      proced4();
     end
    else
     begin
      Memo2.Lines.Add('</tr><tr>');
      proced5();
    end;
   end;
end;
Run Code Online (Sandbox Code Playgroud)

我有一个for,从1到649.当索引是11的倍数时,11, 22, 33, 44...我必须调用

Memo2.Lines.Add('</tr><tr>');
proced5();
Run Code Online (Sandbox Code Playgroud)

使用我编写的代码,只有当索引i为11时,代码才会调用proced5().但是,例如,当i为22或33时,它执行proced4()而不是proced5().

我怎样才能解决这个问题?

delphi modulo

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

当我的字符串包含#0字符时,为什么ShowMessage会给出意外的输出?

今天我偶然发现了一些神秘的东西.这行代码:

showmessage(menuMain.player[2] + ' ready!');
Run Code Online (Sandbox Code Playgroud)

生成此消息(例如menuMain.player [2] = Player):

播放机

但是如果我以这种方式放置代码(例如menuMain.player [2] = Player):

showmessage('Test: ' + menuMain.player[2]);
Run Code Online (Sandbox Code Playgroud)

它将生成此消息:

测试:玩家

根据调试器,字符串的确切值(buffer := menuMain.player[2] + ' ready!')是这样的:

'玩家'#0#0#0#0#0#0#0'0'准备就绪!'

我老实说相信这是一个编译器故障,因为我在另一个代码块中有完全相同的行,并且它完美无缺.

现在对我来说最难的部分是,我是愚蠢的,还是这确实是一个小故障?

delphi string delphi-10-seattle

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

如何对具有非标准二进制表示的数字进行算术运算?

使用unsigned char,您可以存储0到255之间的数字

255(b10)= 11111111(b2)<=那是1个字节

这样可以轻松地执行+, - ,*等操作...

现在怎么样:

255(b10)= 10101101(b2)

使用此方法可以使用unsigned char 表示最多399个

399(b10)= 11111111(b2)

有人可以提出一种算法来使用最后一种方法进行加法吗?

c++ range unsigned-char

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

如何在if-then-else语句中运行多个命令?

我怎么能在delphi 7中做这样的事情

if FileExists
    then 
        Filesetattr
        DownloadFile
    else
        Downloadfile
        Filesetattr
Run Code Online (Sandbox Code Playgroud)

我试过了; 它不起作用.我用逗号(,)尝试也没用.所以我希望在一个"then语句"中执行两个或更多命令,在"else语句"中执行两个或多个命令

delphi syntax if-statement

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