RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-206219

Alekcvp's questions

Martin Hope
Alekcvp
Asked: 2024-01-29 16:28:15 +0000 UTC

如何从 Delphi 获取本机文件描述符

  • 5

有一个动态库,它的函数需要 C 语言的文件描述符作为输入:

int some_func (int fd, ...)

例如,作为调用_wopen函数的结果。

问题:如何从 Delphi 调用这个函数,或者更准确地说,如何获得它的正确描述符?它不接受由于调用 CreateFile() 而收到的常规句柄。

delphi
  • 1 个回答
  • 27 Views
Martin Hope
Alekcvp
Asked: 2020-05-17 18:13:17 +0000 UTC

支持 SOCKS 代理通过 HTTP/S 下载文件的实用程序

  • 0

有这样一个实用程序 - wget,它允许您使用不同的协议下载脚本中的文件。但它有一个缺点:通过 http/s 下载时,它不允许(或者我没有找到如何)使用 socks-proxy。

在这方面,有一个问题:有人知道Windows [x64] 的[console] 应用程序,它可以使用具有授权的SOCKS5 代理服务器通过HTTP、HTTPS、[FTP] 协议下载文件,可以从命令中使用线?

PS:[..] 包含可取的但不是强制性的功能。

windows
  • 1 个回答
  • 10 Views
Martin Hope
Alekcvp
Asked: 2020-12-07 15:59:16 +0000 UTC

放气后的最大输出大小

  • 1

ZLib 库有一个 CompressBuf 函数,其部分代码如下:

procedure CompressBuf(const InBuf: Pointer; InBytes: Integer;
                      out OutBuf: Pointer; out OutBytes: Integer);
...
begin
  ...
  OutBytes := ((InBytes + (InBytes div 10) + 12) + 255) and not 255; {*}
  GetMem(OutBuf, OutBytes);  
  try
    ...
      while CCheck(deflate(strm, Z_FINISH)) <> Z_STREAM_END do begin {**}
        P := OutBuf;
        Inc(OutBytes, 256);
        ReallocMem(OutBuf, OutBytes);
        ...
end;

据我了解,行 {*} 确定输出缓冲区的大小,考虑到数据可能不可压缩并且压缩结果将大于原始数据的事实。但是,从 {**} 块开始,即使这个大小也是第一个近似值,并且可能存在压缩数据的大小甚至更大的情况。

在这方面,我有一个问题:也许有人知道如何计算OutBytes需要分配的缓冲区的 [最佳 *] 大小,以保证它适合任何deflate()输入的输出,大小?InBytes

[*] 最优不一定是最小的(尽管它是可取的),而是合理的。那些。InBytes*2例如,如果保证足够,则不分配InBytes*1.25。

delphi
  • 1 个回答
  • 10 Views
Martin Hope
Alekcvp
Asked: 2020-07-28 17:04:18 +0000 UTC

Delphi XE2 中的顶部窗口

  • 2

我正在尝试制作一个窗口,在从我的应用程序切换到它启动的浏览器时显示一些信息。结果,目前尝试:

  • 表单样式:fsStayOnTop;
  • 添加了 WS_EX_TOPMOST 样式的 CreateParams 重载;
  • 在 OnShow() 中使用 HWND_TOPMOST 参数并通过定时器调用 SetWindowPos;

在任何情况下,通过 ShellExecute() 命令调用的 Chrome 都会与此窗口重叠......以及其他应用程序。TopMost 仅适用于我的应用程序中的其他表单。

也许有人已经经历过这种行为并且知道如何解决这个问题?

PS:无边框窗口(BorderStyle = []),Delphi XE2,Windows 10 build 14393;

delphi
  • 1 个回答
  • 10 Views
Martin Hope
Alekcvp
Asked: 2020-07-08 21:01:10 +0000 UTC

擦除“释放”的内存

  • 1

我正在编写一些适用于机密(对我而言)数据的应用程序。我希望,理想情况下,在它工作之后,内存中的这些数据不会有“尾巴”。

在这方面,出现了一个想法:如您所知,SetLength() 过程在增加字符串/数组的大小时,可以为其分配一个新的内存块,如果它没有足够的空间,则从旧内存块复制数据旧位置新尺寸的空间。

好吧,实际上问题是:是否可以使用这样的包装器(见评论)?

procedure SecureResize(var Data: TBytes; NewSize: Integer);
var
  OldPtr: Pointer;
  OldSize: Integer;
begin
  OldPtr := Pointer(Data);
  OldSize := Length(Data);
  SetLength(Data, NewSize);
  if (OldSize < NewSize) and (OldPtr <> Pointer(Data)) then 
  begin {
      Данные были перемещены, поэтому необходимо затереть их в старой
      локации. Формально, OldPtr указывает на "свободный" участок памяти, 
      но может ли его за это время занять другой процесс или можно
      гарантировать что в этом месте он ещё никем не занят и спокойно 
      затереть данные?.. }
    FillChar(OldPtr^, OldSize, 0);
  end else if OldSize > NewSize then
    FillChar(Data[NewSize], OldSize - NewSize, 0);
end;
delphi
  • 2 个回答
  • 10 Views
Martin Hope
Alekcvp
Asked: 2020-06-06 20:38:27 +0000 UTC

在具有不同类型的泛型类上调用泛型方法

  • 1

有一个类,让我们说:

TListEx<T: TBaseClass> = class ...
  ....
  procedure Sort;
  ....
end;

并且有一些事件 TNotifyEvent 您需要在其中调用此排序:

procedure TMyForm.ListEvent(Sender: TObject);
begin 
  ....
  (Sender as ??????).Sort;
end;

问题:应该写什么而不是“?????” ?如果我在那里写,那么当我用( )TListEx<TBaseClass>调用方法时,我仍然会收到类型不匹配错误“无效的类类型转换”。Sender = TListEx<TExtClass>TExtClass = class(TBaseClass)

但是方法还是通用的吗?如何解决这个麻烦?

更准确地说,目前我决定它是,但为了可靠性TListEx<TBaseClass>(Sender).Sort,我仍然想完成它。as

delphi
  • 1 个回答
  • 10 Views
Martin Hope
Alekcvp
Asked: 2020-05-19 16:18:12 +0000 UTC

FireBird查询速度

  • 0

下午好。

我正在尝试为我在 Firebird 中的应用程序开发一个数据库,同时我想在其中实现一些管理用户及其权限的机制(内置于数据库本身对于我的任务来说太复杂了)。

底线很简单:所有对表中数据的应用程序操作都是通过存储过程执行的(只计划 5-6 个表),而所有应用程序用户(以下简称用户)通过一个公共数据库用户与数据库进行操作,该用户具有执行所有 SP 的权利,仅此而已(所有其他必要的权利都授予程序本身)。

同时,每个SP在访问它的时候,通过表单的请求来检查当前用户

  select s.user_id from session
  left join users u on u.user_id = s.user_id
  where (s.session_id = rdb$get_context('USER_SESSION', 'SESSION_ID'))
    and (u.enabled = 1)
  into :uid;

问题 #1:就运行时而言,每次访问 SP 时检查用户状态有多重要?

或者也许应该简化为

select user_id from session
where session_id = rdb$get_context('USER_SESSION', 'SESSION_ID')
into :uid

, 以及用户是否启用,只检查 USER_LOGIN?..

问题2:从方便和美观的角度来看,我想一般将这段代码(第一个选项)移动到一个单独的SP中,以免在每个SP的开头重复它,比如:

execute procedure get_currentuser returning_values :uid;

但无法在 Firebird 中找到有关嵌套过程调用的详细信息。我想知道这样做有多正确以及它的工作速度有多快或多慢?

PS:可以在此处查看 SESSION 和 USERS 表的大致视图。

sql
  • 1 个回答
  • 10 Views
Martin Hope
Alekcvp
Asked: 2020-05-17 19:28:37 +0000 UTC

在 Firebird 数据库中存储二进制数据

  • 2

下午好。

有一组数据要存储在数据库表中。每个元素(行)看起来像这样:

Name: string[32]
Info: array [0..31]
Data: array [0..255]

问题:在表中存储二进制数据的最佳和最方便的方法是什么 - 作为 char[32]、char[256] 还是作为 blob?

第二个问题:是否可以通过 sql 查询(例如,使用 TQuery)以某种方式从 char 字段中保存/读取二进制数据,而不将它们转换为类似 0xF87D82391BA70 的字符串...?

sql
  • 1 个回答
  • 10 Views
Martin Hope
Alekcvp
Asked: 2020-11-09 20:32:23 +0000 UTC

WinAPI 阻止用户登录

  • 1

下午好。

有这样一种情况:有一些服务在计算机启动时启动,并在必要时执行一些操作。有必要在执行这些操作时,没有用户可以登录系统,因为。正在运行的应用程序可能会干扰服务。

问题:有没有什么办法可以延迟用户选择的出现,就像 Windows Update 那样('等等,系统正在配置')?..

补充: Windows 7,正常登录,不是终端,不是域。因为 由于该服务是我编写的,因此我正在通过类型的 WinAPI 寻找解决方案:阻塞 - 更改需要的内容 - 解除阻塞。

windows
  • 3 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5