Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];

Вниз

Добавление значения в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.043 c
6-1144303416
Xerx
2006-04-06 10:03
2006.11.26
Замер скорости соединения


15-1162630178
Loginov Dmitry
2006-11-04 11:49
2006.11.26
Задачка :)


15-1163084803
Slaga
2006-11-09 18:06
2006.11.26
Передать файл с сервера на клиент и наоборот


1-1160739074
Vladix
2006-10-13 15:31
2006.11.26
При максимизации MDI нужно чтобы оно оставалось в виде окна


1-1160920315
guav
2006-10-15 17:51
2006.11.26
UI: Выделение с прокруткой.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский