подскажите, может кто сталкивался. Читаю приходящие на андроид смс.
function TForm1.FetchSms: string;
var
cursor: JCursor;
uri: Jnet_Uri;
id_smsid, addressidx, bodyidx: integer;
smsid, address, body: string;
begin
uri := StrToJURI('content://sms/inbox');
cursor := SharedActivity.getContentResolver.query(uri, nil, nil, nil, nil);
id_smsid := cursor.getColumnIndex(StringToJString('_id'));
addressidx := cursor.getColumnIndex(StringToJString('address'));
bodyidx := cursor.getColumnIndex(StringToJString('body'));
cursor.moveToFirst;
begin
Result := '';
smsid := JStringToString(cursor.getString(id_smsid));
address := JStringToString(cursor.getString(addressidx));
body := JStringToString(cursor.getString(bodyidx));
if address = form2.TelEdit.Text then
begin
Result := { UnixTimeToDateTime
(msgunixtimestampms) { +IntToStr(trunc(msgunixtimestampms/1000)) + '+'
+ } body;
end;
end;
end;
На выходе, если в смс стоит '1', получаю '1'#012. Причем, если вывести Result в showmessage - будет '1', но программа не хочет переводить его в целочисленный вид. А также Length('1'#012)=2. Попытка отбросить последний символ ни к чему не приводит.
procedure TForm1.SMSTimerTimer(Sender: TObject);
var
mess: string;
i: integer;
sms_num: string;
l:integer;
begin
{$IFDEF ANDROID}
mess := Form1.FetchSms;
if mess <> '' then
begin
l:=Length(mess);
for i := 0 to l - 2 do
if mess[i] <> '' then
sms_num := sms_num + mess[i];
for i := 0 to Form1.InSMSMessages.ChildNodes.Count - 1 do //<------------ВОТ СЮДА ПРОГРАМММА НЕ ДОХОДИТ
begin
if Form1.InSMSMessages.ChildNodes.Nodes[i].GetAttribute('ID') = strtoint(sms_num) then
begin
Form1.Active := true;
smslabel.Text := Form1.InSMSMessages.ChildNodes.Nodes[i].GetAttribute('Name');
Form1.SMSMessage.Visible := true;
Vibrator.vibrate(1000);
break;
end;
end;
end;
{$ENDIF}
end;
Может кто подсказать, что это за # и как от него избавиться.
Вопрос
gonzales
Комрады, всем доброго времени суток!
подскажите, может кто сталкивался. Читаю приходящие на андроид смс.
function TForm1.FetchSms: string; var cursor: JCursor; uri: Jnet_Uri; id_smsid, addressidx, bodyidx: integer; smsid, address, body: string; begin uri := StrToJURI('content://sms/inbox'); cursor := SharedActivity.getContentResolver.query(uri, nil, nil, nil, nil); id_smsid := cursor.getColumnIndex(StringToJString('_id')); addressidx := cursor.getColumnIndex(StringToJString('address')); bodyidx := cursor.getColumnIndex(StringToJString('body')); cursor.moveToFirst; begin Result := ''; smsid := JStringToString(cursor.getString(id_smsid)); address := JStringToString(cursor.getString(addressidx)); body := JStringToString(cursor.getString(bodyidx)); if address = form2.TelEdit.Text then begin Result := { UnixTimeToDateTime (msgunixtimestampms) { +IntToStr(trunc(msgunixtimestampms/1000)) + '+' + } body; end; end; end;
На выходе, если в смс стоит '1', получаю '1'#012. Причем, если вывести Result в showmessage - будет '1', но программа не хочет переводить его в целочисленный вид. А также Length('1'#012)=2. Попытка отбросить последний символ ни к чему не приводит.
Может кто подсказать, что это за # и как от него избавиться.
Всем заранее спасибо!
Изменено пользователем gonzalesСсылка на комментарий
1 ответ на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.