Dit artikel is voornamelijk bedoeld voor programmeurs die Borland C ++ Builder gebruiken. De TChart-component is een krachtig middel om visualisatie aan programma's toe te voegen. Helaas is het laden van enkele honderden punten in een grafiek met behulp van conventionele klasleden pijnlijk langzaam. Dit artikel, zoals de titel suggereert, biedt een manier om dit probleem op te lossen.

Meestal worden punten toegevoegd met behulp van AddXY (anXValue, anYValue, aLabel, aColor). Deze ledfunctie werkt goed als er weinig punten zijn om toe te voegen. Als er echter een groot aantal punten is, duurt deze functie merkbaar lang (zie de afbeelding die de tijd weergeeft om tot 29.470 gegevenspunten op een testmachine te laden).

Stappen

  1. 1 De truc is om het geheugen vooraf toe te wijzen voor de punten in de diagramserie. Er is geen duidelijke functie in TSeries dat doet dit, maar de FillSampleValues functie heeft hetzelfde doel door de reeks met een bekend aantal punten te vullen.
    • // laad de gegevens in een geheugenstroom
    • MS> LoadFromFile ( "data");
    • // bereken het aantal punten
    • numpts = ms-> Zoek (0, soFromEnd) / sizeof (cd);
    • // vooraf ruimte toewijzen
    • Series1-> FillSampleValues ​​(numpts);
    • // laad de gegevens in de grafiek
    • ms-> Positie = ms-> Zoeken (0, soFromBeginning);
    • for (unsigned i = 0; i <numpts; i ++)
    • ms-> Lezen (& cd, numbytes);
    • Series1-> XValues-> Waarde [i] = cd.x;
    • Series1-> YValues-> Waarde [i] = cd.y;