这是Delphi DLL代码:
library Project2;
uses
SysUtils,
Classes;
{$R *.res}
function SimpleConv(const s: string): string;
var
i: Integer;
begin
Result := '';
for i := 1 to Length(s) do
if Ord(S[i]) < 91 then
Result := Result + S[i];
end;
function MsgEncode(pIn: pchar; InLen: Integer; var pOut: pchar; var OutLen: Integer): Boolean; stdcall;
var
sIn: string;
sOut: string;
begin
SetLength(sIn, InLen);
Move(pIn^, sIn[1], InLen);
sOut := SimpleConv(sIn); // Do something
OutLen := Length(sOut);
GetMem(pOut, OutLen);
Move(sOut[1], pOut^, OutLen);
Result := OutLen …Run Code Online (Sandbox Code Playgroud) 我需要修改TVirtualStringTree的焦点框的边框颜色,就像这张照片:

我们需要管理10,000个GPS设备,每个GPS设备每30秒上传一次GPS数据,这些数据需要存储在数据库中(SQL Server 2005).
每个GPS设备的每日数据量为:24*60*2 = 2,880 10 000
10,000个GPS设备每日数据量为:10000*2880 = 28,800,000
每个GPS数据大约160Byte,每天的数据量是:28,800,000*160 = 4.29GB
我们需要在数据库中保存至少3个月的GPS数据,
我的问题是:
1,SQL Server 2005是否可以支持如此大量的数据存储?
2,如何规划数据表?(所有GPS数据存储在一个表中?每日表?每个GPS设备都有一个GPS数据表?)
GPS数据:
GPSID varchar(21),
RecvTime datetime,
GPSTime datetime,
IsValid bit,
IsNavi bit,
Lng float,
Lat float,
Alt float,
Spd smallint,
Head smallint,
PulseValue bigint,
Oil float,
TSW1 bigint,
TSW1Mask bigint,
TSW2 bigint,
TSW2Mask,
BSW bigint,
StateText varchar(200),
PosText varchar(200),
UploadType tinyint
Run Code Online (Sandbox Code Playgroud)
我倾向于使用分区表.但是,如何设置界限?
我需要向TVirtualStringTree插入一些新节点.我使用带有UserData参数的InsertNode方法.但树无法显示任何数据.如何获取GetText/FreeNode事件的用户数据?
TMyData = record
Name: string;
size: Integer;
end;
PMyData = ^TMyData;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
begin
VirtualStringTree1.NodeDataSize := SizeOf(TMyData);
Randomize;
end;
procedure TForm2.Button1Click(Sender: TObject);
var
Data: PMyData;
Node: PVirtualNode;
begin
New(Data);
Data.Name := DateTimeToStr(now);
Data.size := Random(100);
Node := VirtualStringTree1.InsertNode(nil, amInsertAfter, Data);
end;
procedure TForm2.VirtualStringTree1FreeNode(Sender: TBaseVirtualTree; Node:
PVirtualNode);
var
Data: PMyData;
begin
Data := Sender.GetNodeData(Node);
Data.Name := '';
end;
procedure TForm2.VirtualStringTree1GetText(Sender: TBaseVirtualTree; Node:
PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText:
WideString);
var
Data: PMyData; …Run Code Online (Sandbox Code Playgroud)