Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2010, 15:14   #1
Varossa
Новичок
Джуниор
 
Регистрация: 10.09.2010
Сообщений: 1
По умолчанию JSON, Deplhi

Добрый день. На данный момент я работаю в среде 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
Заранее благодарен.
Varossa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
idHttp.Post и символ '[' в строке JSON Yugen667 Работа с сетью в Delphi 4 11.07.2010 00:01
Работа с JSON Wayfer Работа с сетью в Delphi 3 09.07.2010 19:32
JSON и C++Builder s2dent Общие вопросы C/C++ 0 15.06.2010 14:46