小编jac*_*ate的帖子

ADODB组件导致Win7/Server 2008上的访问冲突

我有一段用Delphi 2005编写的代码,用于在LDAP中搜索用户的特定属性.当在Windows 7或Server 2008上运行时,我得到访问冲突,但在XP或2003上没有.

Function IsSSOUser(UserId: String): Boolean;
var
  S : string;
  ADOQuery : TADOQuery;
  ADOConnectionSSO: TADOConnection;
begin
  result := false;
  Setdomainname;
  ADOQuery := TADOQuery.Create(nil);
  ADOConnectionSSO := TADOConnection.Create(nil);
  try
    ADOConnectionSSO.LoginPrompt := false;
    ADOConnectionSSO.Mode := cmRead;
    ADOConnectionSSO.Provider := 'ADsDSOObject';
    ADOQuery.Connection := ADOConnectionSSO;
    ADOQuery.ConnectionString := 'Provider=ADsDSOObject;Encrypt Password=False;Mode=Read;Bind Flags=0;ADSI Flag=-2147483648';
    ADOQuery.SQL.Clear;
    try
      S := 'SELECT AdsPath, CN, SN, SSOguid FROM '''
           + LDAPString + ''' WHERE objectClass=''user'' and CN = ''' + UserId + ''' ';
      ADOQuery.SQL.Add(S);
      ADOQuery.Open;
      ADOQuery.ExecSQL;
      if trim(ADOQuery.FieldByName('SSOguid').AsString) = '' …
Run Code Online (Sandbox Code Playgroud)

delphi adodb delphi-2005

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

winapi改变亮度

winapi有什么可以改变屏幕的亮度?

在此输入图像描述

我一直试图寻找一个我可以用于Delphi但没有找到任何东西的示例或API.

delphi screen brightness

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

FindFirst,FindNext(Delphi Xe,Win7)排名不正确

我在目录中有一些文件.我尝试使用FindFirst和FindNext获取这些文件,但我无法在Windows 7上获得相同的顺序.

C:\Test
SampleFile.0.png
SampleFile.1.png
SampleFile.2.png
SampleFile.3.png
SampleFile.4.png
SampleFile.5.png
SampleFile.6.png
SampleFile.7.png
SampleFile.8.png
SampleFile.9.png
SampleFile.10.png
SampleFile.11.png
SampleFile.12.png
SampleFile.13.png
SampleFile.14.png
SampleFile.15.png
SampleFile.16.png
SampleFile.17.png
SampleFile.18.png
SampleFile.19.png
SampleFile.20.png
SampleFile.21.png
SampleFile.22.png
Run Code Online (Sandbox Code Playgroud)

当我尝试使用我的代码时,我得到了

SampleFile.0.png
SampleFile.1.png
SampleFile.10.png
SampleFile.11.png
SampleFile.12.png
SampleFile.13.png
SampleFile.14.png
SampleFile.15.png
SampleFile.16.png
SampleFile.17.png
SampleFile.18.png
SampleFile.19.png
SampleFile.2.png
SampleFile.20.png
SampleFile.21.png
.
.
.
Run Code Online (Sandbox Code Playgroud)

如何获得正确排名顺序的文件列表?

Procedure Test;
var
sr : TSearchRec;
i : integer;
ListFiles : TStringList;  
begin
ListFiles := TStringList.Create;
i := FindFirst('c:\test\*.png', faDirectory, sr);
while i = 0 do begin  
ListFiles.Add(ExtractFileName(sr.FindData.cFileName));
i := FindNext(sr); 
end;
FindClose(sr);
end; …
Run Code Online (Sandbox Code Playgroud)

delphi rank delphi-xe findfirst

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

如果另一端没有从套接字读取数据,如何避免在 Indy 中写入套接字时冻结

我有一个使用 Indy 的客户端和服务器套接字应用程序,用 Delphi 10.2 编译。

应用程序有一个工作线程,用于处理来自不同端口的请求,并使用对以下内容的调用在同一线程中写入响应:

procedure TMyCommManager.WriteResponse(AHandler: TIdIOHandler; SomeData: SomeType);
var 
  idBytes: TidBytes;
  PacketSize: Integer;
begin
  SomeData.GetBytes(idBytes, PacketSize);
  AHandler.Write(DataBuffer, PacketSize);
end;
Run Code Online (Sandbox Code Playgroud)

几乎所有时间一切都按预期工作,但我们注意到工作线程在生产中不时冻结。经过多次迭代,我们终于明白所有这些都发生在对 的调用中TidIOHandler.Write(),我很确定它正在发生,因为单个端口的另一端没有从套接字读取响应。

从另一端重置到端口后,工作线程解冻并按预期继续工作。

我从 Remy Lebeau找到了这个问题的答案Delphi (Indy) Server Freezing on Write,他在评论中提到(强调我的):

Indy 使用阻塞套接字,因此如果客户端没有在其端读取入站数据,最终套接字的内部发送缓冲区将填满,并且套接字将在服务器端阻塞,等待客户端清空缓冲区。在这种情况下避免死锁的唯一方法是直接使用套接字 API 设置套接字级发送超时。Indy 没有在其逻辑中实现发送超时。

我正在寻找设置超时的正确方法,通过 INDY 或通过 Windows 中的直接 API 调用,但我陷入了困境,所以我来这里寻求帮助。

如果这是不可能的,我可以在辅助线程上实现超时机制,但我不确定从我端的辅助线程重置连接以让工作线程继续工作的正确方法是什么。

delphi indy winsock2

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

PHP函数到Delphi函数

我正在尝试创建一个PHP脚本,以及一个与它"交谈"的Delphi程序.为了保证安全,我想加密来自双方的传出文本,因此它在两端使用相同的加密功能.

这是我为PHP找到的功能:

function convert($str,$ky=''){
  if($ky=='')return $str;
  $ky=str_replace(chr(32),'',$ky);
  if(strlen($ky)<8)exit('key error');
  $kl=strlen($ky)<32?strlen($ky):32;
  $k=array();
  for($i=0;$i<$kl;$i++){
    $k[$i]=ord($ky{$i})&0x1F;
  }
  $j=0;
  for($i=0;$i<strlen($str);$i++){
    $e=ord($str{$i});
    $str{$i}=$e&0xE0?chr($e^$k[$j]):chr($e);
    $j++;
    $j=$j==$kl?0:$j;
  }
  return $str;
} 
Run Code Online (Sandbox Code Playgroud)

我似乎无法将其转换为Delphi.帮助很大!谢谢,杰夫

php delphi encryption

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

帮助我使用双表理解CTE查询并按级别连接

试图解释这个查询......

SELECT blah1, blah2, ... FROM (SELECT level-1 HOUR_ID 
          FROM dual 
          CONNECT BY level <= 24
         ) LU_HOUR
Run Code Online (Sandbox Code Playgroud)

什么是值得包含的?对于双表来说,级别意味着什么?

sql oracle oracle10g

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

我怎么知道为什么我的程序计算和输出不正确?

我正在研究编程问题.

注意:这不是学生项目.我正在为这个网站Try My Quest Dot Com的新Quest工作,我是管理员.

问题:

Jenny刚开始担任Justine Java Workshop的程序员.除少数例外,她每小时收费10美元.她每天工作超过8小时,每小时额外收取1.50美元,而在任何一周内,每小时额外收费2.50美元,超过40小时.此外,她在周六工作时获得125%的奖金,在周日工作获得50%的奖金.周六和周日的奖金根据当天的工作时数计算; 他们不习惯计算一周工作超过40小时的任何奖金.您将获得Jenny每周工作的小时数(星期日,星期一等),您需要计算一周的工资.输入将为正整数,小于或等于24.输出必须使用美元符号格式化并向上舍入到最接近的便士.例如,$ 2"和$ 2.136666"是错误的答案; 正确的版本分别是$ 2.00"和$ 2.14".

无论如何,我试图用Delphi(无表格项目)写这个.我传递了一个命令行参数 - timecard.dat

输入

0, 8, 8, 8, 8, 8, 0
0, 10, 10, 10, 10, 10, 0
0, 0, 8, 8, 8, 8, 8
0, 0, 0, 10, 10, 10, 10
10, 10, 10, 9, 9, 9, 9
Run Code Online (Sandbox Code Playgroud)

产量

Output #1: $400.00
Output #2: $540.00
Output #3: $500.00
Output #4: $540.75
Output #5: $905.88
Run Code Online (Sandbox Code Playgroud)

然而,我的出局是:

Output #1: $400.00
Output #2: $540.00
Output #3: …
Run Code Online (Sandbox Code Playgroud)

delphi debugging

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

如何根据使用触发器修改的记录的值更新另一个表上的记录

我有两个简单的(仅用于解释我的问题)表

  1. X与列(以及其他):IDX,CODE,NUMBER
  2. Y与列(以及其他):CODE,NUMBER,id_fromX

我想(在插入或更新表X之后)更新表Y使用来自X的实际记录中的变量.为此,我尝试使用触发器(在表X中),如下所示:

SET TERM ^^ ;
CREATE TRIGGER XYZFOR X ACTIVE AFTER INSERT OR UPDATE POSITION 0 AS
begin
  if  (new.CODE is distinct old.CODE)  then
  BEGIN
  EXECUTE STATEMENT ('UPDATE Y SET CODE=:old.CODE, id_fromX=:old.IDX WHERE NUMBER=:old.NUMBER');
  END
end ^^
Run Code Online (Sandbox Code Playgroud)

但我从服务器收到错误:

Execute statement error at jrd8_prepare :\
335544569 : Dynamic SQL Error
335544436 : SQL error code = -104
335544634 : Token unknown - line 1, column 23
335544382 : .
Statement : UPDATE Y SET CODE=:old.CODE, id_fromX=:old.IDX WHERE NUMBER=:old.NUMBER\ …
Run Code Online (Sandbox Code Playgroud)

firebird triggers sql-update

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

如何列出FTP服务器中的所有文件?

我希望列出FTP服务器中的所有文件以进行索引(主目录和子目录).

如何获取服务器中可访问文件的完整列表?

delphi ftp indy delphi-2010 indy10

0
推荐指数
1
解决办法
8707
查看次数

如何从Delphi 2010中具有数字和字母的文件中读取行?

我有一个文本文件,在任何给定的行上都有以文本格式和数字格式表示的数据.像这样的东西:

Dog 5 4 7
Run Code Online (Sandbox Code Playgroud)

如何在Delphi中编写读取该行的文件读取例程并将读取值分配给正确的变量("Dog"到字符串变量中,"5","4"和"7"分成实数或整数变量)?

delphi file delphi-2010

0
推荐指数
1
解决办法
245
查看次数

将SQL查询的结果链接到Delphi 7中的kbmMemtable

我试图修复用Delphi 7编写的旧程序的一部分.

目前,我有正确的查询(和正确的结果),但我无法弄清楚如何在kbmMemtable中显示结果(这是应用程序的其余部分使用)

有关文件的任何想法/建议/链接?

delphi delphi-7

0
推荐指数
1
解决办法
2034
查看次数

如何随机选择范围内的所有数字?

在pascal中,我想随机选择1到50之间的循环数.每次选择一个数字时,该数字将被删除,直到最终在1到50之间没有数字可供选择并且循环结束.

如何在Pascal/Delphi中完成这样的事情?

delphi pascal list

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