小编Ple*_*rds的帖子

IdUDPClient,如何将数据包发送到服务器?

如何正确发送数据包到UDP服务器?我正在尝试,但它没有工作,我没有从服务器收到任何东西.

我需要的是发送一个数据包: int64|int|int

并从服务器接收数据包: int|int|int64

怎么做正确?谢谢.

type
  Tconnecting = record
    a: int64;
    b: integer;
    c: integer;
  end;
  Treply_connect = record
    a: integer;
    b: integer;
    c: int64;
  end;

var 
  udp: TIdUDPClient;
  send_data: TIdBytes;
  received_data: TIdBytes;
  i: integer;
  packet: Tconnecting;
  reply_packet: Treply_connect;

begin
  packet.a := 41727101980;
  packet.b := 0;
  packet.c := RandomRange(1, 9999999);
  SetLength(send_data, sizeof(packet));
  Move(packet, send_data[0], sizeof(packet));
  udp := TIdUDPClient.Create(nil);
  try
    udp.Host := 'server.com';
    udp.Port := 1234;
    udp.SendBuffer(send_data);
    SetLength(received_data, 0);
    i := udp.ReceiveBuffer(received_data, 5000);
    Memo1.Lines.Add('Data reiceived! Len:'+IntToStr(Length(received_data))+',data:|'+BytesToString(received_data, 0)+'|');
  finally
    FreeAndNil(udp);
  end;
Run Code Online (Sandbox Code Playgroud)

delphi indy10 delphi-xe3

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

我们如何通过表中的字段控制动态排序?

我不知道问题是否符合我的要求,但是:

我在表格中有一组问题将按特定顺序询问客户,有时我们需要插入新问题,我们还需要向下或向上移动问题.

我创建了一个名为position的字段,还有一些按钮来增加和减少它的位置所以我可以使用a SELECT ... ORDER BY但它不是很好,因为有时候两个或多个问题得到相同的位置编号而MySQL会选择它们的顺序.

那么让这个完美运作的正确方法是什么?

注意:我不能使用索引来做到这一点.对某些人来说很明显,但对其他人来说,不是......

mysql sql delphi

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

Delphi有块标签吗?

在Java中,我们可以做如下事情:

 String output = "";

 stop: {
 // count 10 lines

 for ( int row = 1; row <= 10; row++ ){
   // count 5 columns

   for ( int column = 1; column <= 5; column++ {
     if ( row == 5 )
       break stop;
     output += "* ";

     }

     output += "\n";
    }
   output += "\nTerminated Ok.";
  }
Run Code Online (Sandbox Code Playgroud)

结果是10行的打印,但结束于5:

 * * * * *
 * * * * *
 * * * * *
 * * * * * …
Run Code Online (Sandbox Code Playgroud)

java delphi

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

如何在JPA实体中创建非持久字段?

我有一个实体,调用Userslogin,name和department作为存储在Users表中的字段.

我的Spring-Boot配置定义了为此应用程序中的用户提供系统管理员角色的部门.

关键问题是我希望登录end-point返回用户数据以及他/她是或不是系统管理员的附加信息.

我认为这些信息应该在User类中,但是我不希望这些信息与其他字段一起存储在数据库中,因为管理部门可能会更改,或者用户将我从一个部门更改为另一个部门而不管理系统.

(编辑)我将在用户请求login()时定义此IsManager字段:我将获取用户的department字段并检查其managerDepartment列表以将其设置为true ou false.

所以问题是将信息放在实体类中的非持久字段中(以及如何做)或者如果我可以在rest方法中更改ResponseEntity以添加其他信息(以及如何),是否正确?

java jpa spring-data-jpa spring-boot

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

如何更正GraphicEx InChunk()函数?

我正在尝试将GraphicEx组件库(用于PNG文件)从我的Delphi 2006移植到XE3(最后得到它),在纠正基本错误时,我遇到了这个错误:

"TPNGGraphic.IsChunk" invalid type cast
Run Code Online (Sandbox Code Playgroud)

在线:

function TPNGGraphic.IsChunk(ChunkType: TChunkType): Boolean;

// determines, independant of the cruxial 5ths bits in each "letter", whether the
// current chunk type in the header is the same as the given chunk type

const
  Mask = not $20202020;

begin
  Result := (Cardinal(FHeader.ChunkType) and Mask) = (Cardinal(ChunkType) and Mask); // <-- this line
end;
Run Code Online (Sandbox Code Playgroud)

有谁知道我该怎么做才能纠正它?

delphi png image delphi-xe3 graphicex

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

如何获取本地网络中所有计算机的列表?

我很久以前的这段代码应该返回一个字符串列表,每台计算机连接到我的Windows,workgroup但是当我测试时,我只得到自己的计算机,但我有三台连接相同workgroup名称的计算机并出现在我的Windows中Explorer网络列表.

可能有什么不对?还有另一种方法吗?

function FindAllComputers(Workgroup: string; WithIP: Boolean): TStringList;
var
  EnumHandle : THandle;
  WorkgroupRS : TNetResource;
  Buf : Array[1..500] of TNetResource;
  BufSize : cardinal;
  Entries : cardinal;
  Res : Integer;
  Computers : Tstringlist;
  Limit, I: Integer;
begin
  Limit := 0;
  Workgroup := Workgroup + #0;
  FillChar(WorkgroupRS, SizeOf(WorkgroupRS) , 0);
  With WorkgroupRS do
  begin
    dwScope := 2;
    dwType := 3;
    dwDisplayType := 1;
    dwUsage := 2;
    lpRemoteName := @Workgroup[1];
  end;
  WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, 
    @WorkgroupRS, EnumHandle);
  Computers := TStringList.Create; …
Run Code Online (Sandbox Code Playgroud)

delphi windows-7 delphi-xe3

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

如何在RunTime或OnAfterInstall上启动Windows服务

历史

我建立一个Windows Service作为我的一部分Platform Application来处理更新和服务器的功能,因此它可以被安装在机器比在不同的Client Application安装.它使用UDP发送和接收广播消息,并使用TCP来处理更敏感和最重要的消息.

目的

我希望最终用户可以轻松安装我的应用程序,只需复制计算机中的可执行文件并执行它们即可.主应用程序应验证用户是否为管理员,创建配置文件,然后安装Windows服务并运行它,因此当非管理用户登录时,他们不会从我的应用程序收到有关管理权限的任何错误.目标是在不需要现有技术人员的情况下进行大多数配置,因为数据库将是远程的.

问题

我的服务正在使用命令正常安装,MyService.exe /install但它没有自动启动.启动它的唯一方法是继续Control Panel > Admin Tools > Services手动操作.我尝试net start MyService通过我的应用程序调用,但我收到invalid service name了shell.我tryied了executable name,该display nameobject name服务,但没有一次成功.这是我的TService的目标:

object ServiceMainController: TServiceMainController
  OldCreateOrder = False
  OnCreate = ServiceCreate
  DisplayName = 'PlatformUpdateService'
  Interactive = True
  AfterInstall = ServiceAfterInstall
  AfterUninstall = ServiceAfterUninstall
  OnShutdown = ServiceShutdown
  OnStart = ServiceStart
  OnStop = ServiceStop
  Height = 210
  Width = …
Run Code Online (Sandbox Code Playgroud)

delphi windows-services

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

如何构建一个可以自行更新的软件更新服务?

我知道很多软件都是由安装在一起的Windows服务更新的.我将该服务作为客户端应用程序的更新帮助程序和数据服务器.但我仍然坚持如何从这项服务控制我的客户端应用程序.

首先,我的服务将检查远程服务器上的更新,然后下载文件.

它将向客户广播新闻,询问用户是否要立即更新或下次执行.

在更新时,客户端应用程序无法删除它自己的可执行文件,因此,如果它要求服务器在它没有执行时执行它,那么它是有意义的,然后当完成删除和重命名文件时,它将重新执行客户端.

如果服务在会话0中,则无法将客户端重新执行到同一用户会话.

另一个可能的问题是当服务需要更新时.它可以通过客户端而不是自身更新来解决.

因此,在更新客户端和服务器的情况下,我是否需要创建第三个应用程序来完成这项工作.如果这第三个应用程序是一个控制台应用程序,从服务执行它是没有问题的,对吧?

如果有一个不包含第3个应用程序的解决方案,那将是最好的.


注意:

该服务不仅仅是一个更新服务,而是一个通知用户访问和权限的服务器.主客户端应用程序不会user information database直接访问.

delphi windows-services auto-update

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

为什么我的Luhn校验和在Windows上正确计算但在Android上没有计算?

Luhn在Internet上获得此功能,当我为Windows32 VCL编译它时它是正确的.但是当我编译它以在Android应用程序中使用时,我得到了一个False而不是True我怀疑它是因为它正在转换为utf8期望ascii被转换的字节.

那么我该怎么做才能在Android上正常工作呢?

function Luhn(Code: string): Boolean;
var
    i, sum: integer;
    temp: byte;
begin
{ calcula o algorítimo luhn, usado no iccid }
    sum := 0;
    for i:= length(Code) downto 1 do
    begin  // Run the characters backwards
      temp := byte(Code[i])-48;             // Convert from ASCII to byte
      if (length(Code)-i) mod 2 = 0
        then sum := sum + temp             // Odd characters just add
        else if temp < 5
           then …
Run Code Online (Sandbox Code Playgroud)

delphi android

0
推荐指数
2
解决办法
572
查看次数

如何使用带有unicode符号的chr()函数?

我知道如果我想在string黑色空间中添加ASCII字符,例如,我需要做的就是添加一个调用,CHAR(32)并将空间添加到string.

但是如果我想把无限符号(U + 221E)怎么办呢?

如果我将它粘贴到像'infiniteis∞'这样的文字字符串中,那么Delphi想要将文件更改为UTF8.

delphi unicode

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

如何链接方法调用?

考虑这个例子:

 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
查看次数