Форум: "Основная";
Текущий архив: 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