Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.26;
Скачать: CL | DM;

Вниз

Добавление значения в TeeChart   Найти похожие ветки 

 
Incognito   (2006-10-16 22:39) [0]

Такой вопрос, для знатоков TChart.
Не нашел функции, позволяющей вставлять в серию значени после/перед значением с заданным индексом. Есть только Add, который добавляет все в конец.

Подскажите, пожалуйста, есть ли такая функция или писать самому...


 
Kolan ©   (2006-10-16 22:42) [1]

А зачем? Ты же точку добавляешь. Какие координаты задашь, туда и вставиться.


 
Incognito   (2006-10-16 22:47) [2]

дело в том что я использую Tchart для отоблажения неких данных, которые храняться в бооольшом лог файле. При этом в чарт необходимо загружать не все данные, а только.. например за последний час/день итд... т.е. я читаю файл с конца и, если пользоваться функцией ADD то график сообтетственно получается перевернутым справа на лево. Нужна функция, добавляющая полученное из файла число, в начало графика.


 
Kolan ©   (2006-10-16 22:52) [3]

Какие точки ты ставишь? Что у тебя по оси Х?


 
Loginov Dmitry ©   (2006-10-16 22:54) [4]

Incognito   (16.10.06 22:47) [2]
т.е. я читаю файл с конца и, если пользоваться функцией ADD то график сообтетственно получается перевернутым справа на лево


А кто мешает читать файл не с конца, а с середины?


 
Kolan ©   (2006-10-16 22:55) [5]

Видимо индекс записи, раз берешь с конца, то и выходит что задом на перёд...


 
EvS ©   (2006-10-16 22:55) [6]

Прочитай данные в массив да и вводи с любого конца


 
Incognito   (2006-10-16 23:01) [7]

про массив то - это ясно, но это уже дополнительные трудозатраты, лишние переменные.. хоть и не критично, но все же.. к тому же, как я уже говорил, может все же есть нужная мне функция. компонент-то вон какой навороченный.


> Kolan ©   (16.10.06 22:52) [3]
> Какие точки ты ставишь? Что у тебя по оси Х?


Х - ось времени, У - значения некоего параметра.


 
Kolan ©   (2006-10-16 23:03) [8]


> Х - ось времени, У - значения некоего параметра.


Раз так, то будет во временном порядке, а то как ты там считываешь неважно! Или у тя ошибка в 17 строке


 
Incognito   (2006-10-16 23:06) [9]

вообщем, чувствую, массив придется заводить... (


 
Kolan ©   (2006-10-16 23:08) [10]


> вообщем, чувствую, массив придется заводить... (

Ну дело твое. Только ошибка гдето сидит и он тебе не поможет...
1. Пример строки файла сюда
2. Точку остнава на Add();. И Х У тоже сюда перепеши


 
Loginov Dmitry ©   (2006-10-16 23:09) [11]

Incognito   (16.10.06 23:01) [7]
но это уже дополнительные трудозатраты, лишние переменные.. хоть и не критично, но все же


вот лентяй %)


 
Incognito   (2006-10-16 23:20) [12]

Вообще, задача то заключается в том, чтобы загрузить в чарт данные за последние Х дней... Мне решение представляется вот в таком виде:


var
lastDate : TDateTime;
log : TXMLDocument;

....

lastDate := дата последний записи;

for i:=номер последней записи файла downto 0 do
  begin
     data.time  := StrToDateTIme( log....[i].ChildNodes["time"].Text);
     data.karma := StrToInt(log...[i].ChildNodes["value"].Text);
     chart.Series[0].Add(data.value,TimeToStr(data.time));
     if (lastDate - data.time > 1) then break ; // Если разница между датой последней запии и текущей достигает день и более то цикл прерывается
  end;


 
Incognito   (2006-10-16 23:21) [13]

но при таком раскладе, как я уже говорил, в чарте все получается естественно задом наперед.


 
Kolan ©   (2006-10-16 23:23) [14]

А кого типа серия? У TCustomSerie Add(X, Y: Double);


 
Kolan ©   (2006-10-16 23:24) [15]


> data

Это что? - твое? Код давай GetValue

karma - медитируешь? :)


 
Incognito   (2006-10-16 23:25) [16]

Серия типа TLineSeries

Нашел какой-то загадочную процедуру chart.Series[0].AddValue(ValueIndex : integer). Не в курсе чем занимается?

Серия типа TLineSeries;


 
Kolan ©   (2006-10-16 23:28) [17]

Ааа  ты Add делаешь а не AddXY;
Ну  ты же добавляешь только координату Y, а откуда берется Х - правильно вычисляется TCharto"м. Те берется по порядку

Пользуй AddXY и явно задавай X.


 
Incognito   (2006-10-16 23:29) [18]

сорри... русские букивки не выдержали...  вписал для ясности куски на русском )

вообщем вот нормальный код:



var
 newHistory  : TXMLDocument;
 data        : THistoryData;
 lastDate    : TDateTime;
begin
 newHistory := TXMLDocument.Create(fmMain);
 lastDate := StrToDateTIme(newHistory.DocumentElement.ChildNodes[newHistory.DocumentElement.C hildNodes.Count-1].ChildNodes["time"].Text);
 for i:=newHistory.DocumentElement.ChildNodes.Count-1 downto 0 do
   begin
     data.karma := StrToInt(newHistory.DocumentElement.ChildNodes[i].ChildNodes["karma"].Text);
     data.votes := StrToInt(newHistory.DocumentElement.ChildNodes[i].ChildNodes["votes"].Text);
     chart.Series[0].Add(data.karma,TimeToStr(data.time));
     if (lastDate - data.time > 1) then break ;
   end;


Карма это да.... как раз то из чего нужно построить график )


 
Kolan ©   (2006-10-16 23:30) [19]

те как-то так:
chart.Series[0].AddXY(data.value, номер последней записи файла - I,TimeToStr(data.time));


 
Kolan ©   (2006-10-16 23:31) [20]

Наоборот:
chart.Series[0].AddXY(номер последней записи файла - I, data.value, TimeToStr(data.time));


 
Incognito   (2006-10-16 23:33) [21]

ага, понял, т.е. если по оси х время то нужно вроде того:

chart.Series[0].AddXY(data.time, data.karma, TimeToStr(data.time));

Щас опробирую


 
Kolan ©   (2006-10-16 23:37) [22]


> chart.Series[0].AddXY(data.time, data.karma, TimeToStr(data.
> time));

Как-то так. Только с датой что делать надо подумать, чарт с не кажется дружит


 
Incognito   (2006-10-16 23:40) [23]

да, с датой не прокатило. Твой вариант с
newHistory.DocumentElement.ChildNodes.Count-1 - i
кажется должен работать, ан нет - все равно задом наперд получается . не пойму почему. вроде величина увеличиваться должна, т.к. цикл обратный.


 
Kolan ©   (2006-10-16 23:43) [24]


> newHistory.DocumentElement.ChildNodes.Count-1 - i

Ну просчитай правильно индекс. Просто I  вроде. Проверь..


 
Incognito   (2006-10-16 23:48) [25]

Точно ) просто i ))) огромное спасибо!


 
Kolan ©   (2006-10-16 23:50) [26]


> Incognito   (16.10.06 23:48) [25]

Что-то в голове сидит, что Чарт дружит с датой посмотри может че найдешь...


 
Incognito   (2006-10-17 00:04) [27]

Да впринципе все как надо, дата выводится в качестве лэйбла, интервалы времени в файле равные, так что не критично.

Хотя дата тоже в качестве аргумента канает. Только что проверил.


 
Kolan ©   (2006-10-17 00:07) [28]


> посмотри

Имелся в виду хелп... :)



Страницы: 1 вся ветка

Текущий архив: 2006.11.26;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.03 c
15-1162977163
Думкин
2006-11-08 12:12
2006.11.26
Москва. Инструкция по перемещению.


1-1160910975
AlexeyT
2006-10-15 15:16
2006.11.26
Проблема с THotKey в франзузской Windows


15-1163011293
Колдун
2006-11-08 21:41
2006.11.26
Проблемы экологии


15-1162651416
SkySpeed
2006-11-04 17:43
2006.11.26
СРОЧНО! Как сделать, чтобы показывался нормально рус. язык?


6-1151921416
flaxe
2006-07-03 14:10
2006.11.26
Печенюшки... в Twebbrowser