我在内联网上有一台服务器和一些客户端(大约50个).客户端向服务器发送短(大约40个字符)的字符串数据,服务器使用类似的字符串进行应答.每个客户端每秒最多(但不是永久)2-3个请求.服务器必须序列化请求以获取响应字符串.
系统应尽可能减少对网络的影响(即服务器可能已经运行了类似于Web服务器的东西).它应该尽可能容易安装和管理.
使用Delphi(客户端:D7,服务器到D2010)实现此目的的可能性有哪些?
我想使用WinInet在Delphi 2010中发送HTTP Post请求,但我的脚本不起作用; /
这是我的Delphi脚本:
uses WinInet;
procedure TForm1.Button1Click(Sender: TObject);
var
hNet,hURL,hRequest: HINTERNET;
begin
hNet := InternetOpen(PChar('User Agent'),INTERNET_OPEN_TYPE_PRECONFIG or INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if Assigned(hNet) then
begin
try
hURL := InternetConnect(hNet,PChar('http://localhost/delphitest.php'),INTERNET_DEFAULT_HTTP_PORT,nil,nil,INTERNET_SERVICE_HTTP,0,DWORD(0));
if(hURL<>nil) then
hRequest := HttpOpenRequest(hURL, 'POST', PChar('test=test'),'HTTP/1.0',PChar(''), nil, INTERNET_FLAG_RELOAD or INTERNET_FLAG_PRAGMA_NOCACHE,0);
if(hRequest<>nil) then
HttpSendRequest(hRequest, nil, 0, nil, 0);
InternetCloseHandle(hNet);
except
ShowMessage('error');
end
end;
end;
Run Code Online (Sandbox Code Playgroud)
和我的PHP脚本:
$data = $_POST['test'];
$file = "test.txt";
$fp = fopen($file, "a");
flock($fp, 2);
fwrite($fp, $data);
flock($fp, 3);
fclose($fp);
Run Code Online (Sandbox Code Playgroud) 在设置 Embarcadero Rad Studio 10.2.3 Community Edition 期间,我没有选择 Interbase Express 组件。现在我想安装这些组件,但找不到修改安装以选择这些组件的方法。
初始设置后如何修改 RAD Studio Community Edition 安装?
我有一个用 Delphi 10.4 编写的可视化控件。为了方便地关注问题,我仅创建了具有 Anchors 和 Align 属性的 TwinControl。我包括了 AutoSize 属性。问题是当该组件构建安装并放置在 TForm 上时,控件将不会响应表单大小调整。
该控件已将控件设置为锚定正确。我向表单添加了一个 TButton,并将其锚点设置为 akRight。按钮随着表单的拉伸而移动。我的控制没有。我可以提供这个小测试的完整源代码。也许有人以前见过这个。我以前曾在我的组件中使用过 TFrame,但发现存在一些显示问题,仅部分控件显示或根本不显示。我的客户没有留下深刻的印象。我会欣赏一些智慧。
这是来自 TWinControl 的代码
unit SampleControl;
interface
uses
System.Classes, Vcl.Controls, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Buttons, Vcl.Dialogs,
Vcl.Graphics,AdvGrid,vcl.Forms,System.SysUtils,StrUtils,Messages, EBS3DataUtils,
EBSGridSetup,System.UITypes,WinApi.Windows,vcl.Grids,AdvObj,System.Variants;
Type
TSampleControl = class(TWinControl)
private
FAnchors: TAnchors;
FAlign : TAlign;
FAutoSize : Boolean;
procedure InitializeComponents;
procedure SetAnchors(const Value: TAnchors);
procedure SetAlign(const Value: TAlign);
procedure SetAutoSize(const Value: Boolean);
Public
procedure Resize; Override;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
Published
property Anchors: TAnchors read FAnchors write SetAnchors default …Run Code Online (Sandbox Code Playgroud) 我有一个用 Delphi 编写的简单 Dll:
library usr_d;
uses
System.SysUtils, System.Classes, DB,Vcl.Dialogs
;
{$R *.res}
Procedure SetMyData(DataSet: TDataSet);export;
begin
if Assigned(DataSet) then
begin
ShowMessage(DataSet.FieldByName('MyFieldName1').AsString);
try
DataSet.First;
except on E: Exception do
ShowMessage('Error accessing field: ' + E.Message);
end;
end
else
ShowMessage('DataSet parameter is not assigned!');
end;
exports
SetMyData;
begin
end.
Run Code Online (Sandbox Code Playgroud)
我这样称呼它:
Procedure TMainForm.CallMyDll;
type
TSetMyData = procedure(DataSet: TDataSet); stdcall;
Var
MyHandle : HMODULE;
SetMyData : TSetMyData;
Begin
MyHandle := LoadLibrary('c:\MyFolder\usr_d.dll');
if MyHandle <> 0 then
begin
@SetMyData := GetProcAddress(MyHandle, 'SetMyData');
if @SetMyData …Run Code Online (Sandbox Code Playgroud)