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