Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Технологии
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.09.2010, 14:41
Indy Indy вне форума
Прохожий
 
Регистрация: 10.09.2010
Сообщения: 1
Репутация: 10
По умолчанию JSON, Delphi

Добрый день. На данный момент я работаю в среде Delphi (а работаю я в ней 3 день), и взял на свою шкуру достаточно тяжелую задачу, которую уже частично выполнил.
Формулировка задачи: Мне нужно что бы моя программа брала расписание, обрабатывала, и выводила в приложении. Так же она берет группы и отделения.
На данный момент всё что мне осталось - это обработка расписания в человеческий вид. Но, вся проблема в том, что тут я работаю через NMHTTP (забираю данные), и JSON (благодоря которому я преобразую эти данные).
Вот текст моей программы:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, uLkJSON, StdCtrls, Menus, ExtCtrls, Psock, NMHttp;

type
  TForm1 = class(TForm)
    cbbOtdelenie: TComboBox;
    cbbGruppa1: TComboBox;
    btn1: TButton;
    lbl1: TLabel;
    ComboBox1: TComboBox;
    NMHTTP1: TNMHTTP;
    Label1: TLabel;
    procedure cbbOtdelenieChange(Sender: TObject);
    procedure btn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
     today : TDateTime;
     day : string;
  public
    { Public declarations }
  end;

var
  js: TlkJSONobject;
  jso: TlkJSONlist;
  s,s2:string;
  Form1: TForm1;
  o : array[1..5] of string;
  i:integer;


implementation

{$R *.dfm}

procedure TForm1.cbbOtdelenieChange(Sender: TObject);
begin
case cbbOtdelenie.ItemIndex of
            0:begin
  cbbGruppa1.Items.Clear;
  nmhttp1.get('http://weareinvaders.org/sched.php?method=getGroups&unit=0');
  s := nmhttp1.body;
  jso := TlkJSON.ParseText(s) as TlkJSONlist;
  for i:=0 to jso.count - 1 do
  begin
  s := VarToStr(jso.Child[i].Field['name'].Value);
  //label1.caption:=s;
  cbbGruppa1.items.add(s);
  end;
  end;
            1:begin
  cbbGruppa1.Items.Clear;
  nmhttp1.get('http://weareinvaders.org/sched.php?method=getGroups&unit=1');
  s := nmhttp1.body;
  jso := TlkJSON.ParseText(s) as TlkJSONlist;
  for i:=0 to jso.count - 1 do
  begin
  s := VarToStr(jso.Child[i].Field['name'].Value);
  //label1.caption:=s;
  cbbGruppa1.items.add(s);
  end;
  end;
           2:begin
  cbbGruppa1.Items.Clear;
  nmhttp1.get('http://weareinvaders.org/sched.php?method=getGroups&unit=2');
  s := nmhttp1.body;
  jso := TlkJSON.ParseText(s) as TlkJSONlist;
  for i:=0 to jso.count - 1 do
  begin
  s := VarToStr(jso.Child[i].Field['name'].Value);
  //label1.caption:=s;
  cbbGruppa1.items.add(s);
  end;
  end;
           3:begin
  cbbGruppa1.Items.Clear;
  nmhttp1.get('http://weareinvaders.org/sched.php?method=getGroups&unit=3');
  s := nmhttp1.body;
  jso := TlkJSON.ParseText(s) as TlkJSONlist;
  for i:=0 to jso.count - 1 do
  begin
  s := VarToStr(jso.Child[i].Field['name'].Value);
  //label1.caption:=s;
  cbbGruppa1.items.add(s);
  end;
  end;
end;

end;

procedure TForm1.btn1Click(Sender: TObject);
begin
form1.close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  today := date;
  day := LongDayNames[DayOfWeek(today)];
  lbl1.caption:=day;
  if dayofweek(today)=1 then
  combobox1.itemindex:=6
  else
  combobox1.itemindex:=(DayOfWeek(today)-2);
  nmhttp1.get('http://weareinvaders.org/sched.php?method=getUnits');
  s := nmhttp1.body;
  jso := TlkJSON.ParseText(s) as TlkJSONlist;
  for i:=0 to jso.count - 1 do
  begin
  s := VarToStr(jso.Child[i].Field['name'].Value);
  label1.caption:=s;
  cbbOtdelenie.items.add(s);
  end;

{  nmhttp1.get('http://weareinvaders.org/sched.php?method=getSchedule&unit=0&group=0');
  s := nmhttp1.body;
  js := TlkJSON.ParseText(s) as TlkJSONobject;
  s := VarToStr(js.Child[i].Field['name'].Value);
}
end;

end.

Учитывая то, что этой ереси на JSON'е написано крайне много, просто кидаю ссылку, откуда моя программа его забирает - http://weareinvaders.org/sched.php?m...unit=0&group=0
Тут since - число изменения расписания (object), day - день (list), libday - библиотечный день или нет (object, true/false, при значении false вместо распиание выводится на экран "библ. день."), altercorp - нахимовский или бирюлево (1/0), lession - урок (list), name - название урока (object), teacher - имя и фамилия преподователя (object), a,b,ab - числитель или знаменатель.
Необходимо сделать иммено через JSON.
Оригинал расписания - http://mpt.ru/education/allocation.php?otdel=1&group=1
Заранее благодарен.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:43.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter