Einzelnen Beitrag anzeigen

hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#11

Re: VST mit ca. 50.000 Datensätze verdammt langsam, warum???

  Alt 7. Dez 2009, 20:58
Hallo,

Delphi-Quellcode:
procedure Tfrm_main.SQLDataToVST_SubnetDetails;
var
  i : Integer;
  SubnetDetailsData : TOSubnetDetailsData;
begin
  vst_network_subnetdetails.BeginUpdate;
  try
    vst_network_subnetdetails.Clear;

    ... und alles andere

   // Application.ProcessMessages; was soll das denn ????

  finally
    vst_network_subnetdetails.EndUpdate;
  end;
end;
Und lass vor allem das Application.ProcessMessages; weg.

Ausserdem wundert mich, warum du überall String-Vergleiche hast

Delphi-Quellcode:
procedure Tfrm_main.vst_network_subnetdetailsGetText(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
  var CellText: WideString);
var
  SubnetDetailsData : TOSubnetDetailsData;
begin
  SubnetDetailsData := TOSubnetDetailsData(vst_network_subnetdetails.GetNodeData(Node)^);
  if vst_network_subnetdetails.Header.Columns[Column].Text = 'IP Address'    
     then CellText := SubnetDetailsData.ipaddress;
  if vst_network_subnetdetails.Header.Columns[Column].Text = 'Device'       
     then CellText := SubnetDetailsData.device;
end;
Du weisst schon, dass Column (als Integer beginnend mit 0) viel besser geeignet ist,
dann geht es sogar mit case ?

Wenn du schon Strings vergleichst, dann so

Delphi-Quellcode:
procedure Tfrm_main.vst_network_subnetdetailsGetText(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
  var CellText: WideString);
var
  SubnetDetailsData : TOSubnetDetailsData;
begin
  SubnetDetailsData := TOSubnetDetailsData(vst_network_subnetdetails.GetNodeData(Node)^);
  if vst_network_subnetdetails.Header.Columns[Column].Text = 'IP Addressthen
  begin
    CellText := SubnetDetailsData.ipaddress;
     Exit;
  end;
  if vst_network_subnetdetails.Header.Columns[Column].Text = 'Devicethen
  begin
    CellText := SubnetDetailsData.device;
    Exit;
  end;
end;
Bringst zumindestens ein bisschen Speed-Up.


Heiko
Heiko
  Mit Zitat antworten Zitat