Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Delphi] Рисование графика, беря значения из файла


Автор: dilik 9.9.2006, 17:52
Доброе время суток!
 Я не очень силен в программировании, и поэтому хочу спросить: как построить график по заданным числам. Эти данные хранятся в файле в виде цифры. Необходимо построить 2 графика - 
1) обычная ломанная (зависимость балла по Y и попытке {просто числа от 1 до ...} по Х).
2) столбчатая диаграмма (только последних 3 значения)

сама задача заключается в следующем - пользователь отвечает на вопросы теста. после прохождения теста в файл записывается количество правильных ответов. Пользователь может пройти тест еще раз. Это уже второе значение и т.д... Программа должна прочитать эти значения и вывести график результатов. К примеру, пользователь первый раз ответил правильно на 6 вопросов, второй - на 8, третий - на 3...


ПОЖАЛУЙСТА!!!

Автор: Alexeis 9.9.2006, 19:37
На закладке [Additional] есть прекрасный компонент TChart, который может все перечисленое строить + оч. функциональный и имеет гибкую систему настроек позволяющую, менять многие параметры.
Просто надо дважды на нем кликнуть и откроется мощный эксперт!

Автор: dilik 10.9.2006, 20:17
а как считать данные из файла (последние 3 значения) в Chart? 
Помогите, а то я никак не разберусь в нем!

Автор: Alexeis 10.9.2006, 20:28
Зависит от структуры файла и типа данных, а добавляются данные просто.
Содается линейная серия и добавляются данные мметодом addXY, addY
Код

Series1.addXY(x1, x2);

Автор: Rodman 11.9.2006, 15:37
Тебе нужно считать последние две пары значений??? или как ты хочешь три значения в TChart включить???

Автор: dilik 14.9.2006, 10:48
Цитата(Rodman @ 11.9.2006,  15:37)
Цитата
Тебе нужно считать последние две пары значений??? или как ты хочешь три значения в TChart включить???

Вот как я реализовал вывод первых трех чисел: 

Код

unit Unit5;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, RbDrawCore, RbButton, TeEngine, Series, ExtCtrls, TeeProcs,
  Chart, StdCtrls;

type
  TForm5 = class(TForm)
    RbButton1: TRbButton;
    Chart1: TChart;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Series1: TBarSeries;
    procedure RbButton1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form5: TForm5;
     F_vop,F_ot:textfile;
 str:string;
implementation

{$R *.dfm}

procedure TForm5.RbButton1Click(Sender: TObject);
begin
Application.Terminate;
end;


Procedure TForm5.FormCreate(SEnder: TObject);
Var i,xxx,zzz,yyy:Integer;
Begin
Assignfile(F_vop,'ball');
{$I-}
Reset(F_vop);
{$I+}
if IOResult<>0 then
begin
ShowMessage('         Ошибка открытия файла с вопросами!          ');
Application.Terminate;
end;
readln(F_vop,str);
edit1.Text:=str;
readln(F_vop,str);
edit2.Text:=str;
readln(F_vop,str);
edit3.Text:=str;
xxx:=StrToInt(Edit1.Text);
yyy:=StrToInt(Edit2.Text);
zzz:=StrToInt(Edit3.Text);
Series1.AddXY(1,xxx,'');
Series1.AddXY(2,yyy,'');
Series1.AddXY(3,zzz,'');
End;


end.





А как брать последние три числа из файла???

Автор: Alexeis 14.9.2006, 13:06
dilik, для текстовых файов так невозможно, нужно считать все записи до конца файла, можно в одни и те же переменные проверяя после каждого чтения нет ли конца файла. Когда будет достигнут конец файла в трех записях будут три последних значения. Такие заморочи происходят только при обращению к файлу как к текстовому. При работе с ним как с не типизированым усложняется чтение, но зато становится возможным свободное перемещение по файлу.

Автор: dilik 17.9.2006, 20:20
а нельзя ли дойти до конца файла, а потом считать данные снизу вверх?  smile 

Автор: Alexeis 17.9.2006, 20:42
dilik, можно, но не для файлов открытых в текстовом режиме.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)