sibprogsistem, json из примера Sms, причем в примере тоже, у меня, не работает.
function smsAnswer(sdata:string):string;
var
JSONObject, JSONObjProp, JSONObjProp2: TJSONObject;
JSONString: TJSONString;
sD: string;
begin
try
ShowMessage(smsquestion.ResponseText);
//if smsquestion.Status() = 200 then
//begin
//if smsAn = 'SMS.RU' then
//begin
JSONObject := nil;
JSONObject := TJSONObject(TJSONObject.ParseJSONValue(smsquestion.responsetext));
if JSONObject <> nil then
begin
//JSONString := TJSONString(JSONObject.GetPairByName('status_code').JsonValue);
//ShowMessage(JSONString.Value);
//if Pos('100',JSONString.Value) then
//begin
JSONObjProp := TJSONObject(JSONObject.GetPairByName('sms').JsonValue);
JSONObjProp2 := TJSONObject(JSONObjProp.GetPairByName(sD).JsonValue);
JSONString := TJSONString(JSONObjProp2.GetPairByName('status_code').JsonValue);
ShowMessage(JSONString.Value);
//end;
//Коды SMS
if Pos('100',JSONString.Value) then
begin
//ShowMessage('ОК');
JSONString := TJSONString(JSONObject.GetPairByName('balance').JsonValue);
//Вывод баланса
frmMain.Label4.Caption := JSONString.Value;
//Условие на проверку - открыта форма или нет
If frmWord.Visible then
begin
//Запомнить состояние флага
SQLExecute('UPDATE SMS SET sms_switch="'+frmWord.CheckBox2.sqlValue+'" WHERE id=1');
//Обновить содержимое
SQLEXecute('UPDATE SMS SET sms_API="'+frmWord.Memo1.Text+'" WHERE id=1');
SQLEXecute('UPDATE SMS SET sms_name="'+frmWord.Edit1.Text+'" WHERE id=1');
frmWord.Memo1.Enabled := False;
frmWord.Edit1.Enabled := False;
frmWord.Button25.Enabled := False;
frmMain.GroupBox2.Visible := True;
frmAddNew.CheckBox1.Visible := True;
end;
end;
if Pos('232',JSONString.Value) then ShowMessage('Превышен лимит одинаковых сообщений на этот номер в день');
if Pos('-1',JSONString.Value) then ShowMessage('Сообщение не найдено');
if Pos('107',JSONString.Value) then ShowMessage('Не может быть доставлено: неизвестная причина');
if Pos('108',JSONString.Value) then ShowMessage('Не может быть доставлено: отклонено');
if Pos('200',JSONString.Value) then
begin
ShowMessage('Неправильный API');
MessageBeep(1); //Звуковой сигнал
frmWord.Memo1.Text := '';
frmWord.Memo1.SetFocus;
end;
if Pos('201',JSONString.Value) then ShowMessage('Не хватает средств на лицевом счету');
if Pos('202',JSONString.Value) then ShowMessage('Неправильно указан номер телефона получателя, либо на него нет маршрута');
if Pos('203',JSONString.Value) then ShowMessage('Нет текста сообщения ');
if Pos('204',JSONString.Value) then ShowMessage('Имя отправителя не согласовано с администрацией');
if Pos('209',JSONString.Value) then ShowMessage('Вы добавили этот номер (или один из номеров) в стоп-лист');
if Pos('220',JSONString.Value) then ShowMessage('Сервис временно недоступен, попробуйте чуть позже');
if Pos('230',JSONString.Value) then ShowMessage('Превышен общий лимит количества сообщений на этот номер в день');
if Pos('231',JSONString.Value) then ShowMessage('Превышен лимит одинаковых сообщений на этот номер в минуту');
if Pos('233',JSONString.Value) then ShowMessage('Превышен лимит отправки повторных сообщений с кодом на этот номер за короткий промежуток времени ("защита от мошенников"), можно отключить в разделе "Настройки")');
if Pos('301',JSONString.Value) then ShowMessage('Неправильный api_id, либо логин/пароль');
if Pos('205',JSONString.Value) then ShowMessage('Сообщение слишком длинное (превышает 8 СМС)');
if Pos('206',JSONString.Value) then ShowMessage('Будет превышен или уже превышен дневной лимит на отправку сообщений ');
if Pos('207',JSONString.Value) then ShowMessage('На этот номер нет маршрута для доставки сообщений');
if Pos('302',JSONString.Value) then ShowMessage('Пользователь авторизован, но аккаунт не подтвержден (пользователь не ввел код, присланный в регистрационной смс)');
if Pos('500',JSONString.Value) then ShowMessage('Ошибка на сервере. Повторите запрос');
end;
//end;
except
end;
smsTimer.Enabled:=False;
end;
vovka3003. понимаю, что надо полученное сообщение загонять в константу и оттуда извлекать необходимое?