Перейти к содержанию
Fire Monkey от А до Я

Sergey Babichev

Пользователи
  • Постов

    8
  • Зарегистрирован

  • Посещение

Посетители профиля

511 просмотр профиля
  1. Коллеги, не подскажете, как из xe7 получить sha1 для Google Map service? Эклипс его сам генерит в настройках проекта. В xe7 я не нашел где его получить.
  2. Проблема решена. На сервере никаких преобразований не делается, а на клиенте поставил кодировку по умолчанию. s := idCl.Socket.ReadLnWait(3,IndyTextEncoding_OSDefault);
  3. function TranslitStr(s:string) : string; const Rus = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'; Eng = 'abcdefghijklmnopqrstuvwxyz~|@#$%&ABCDEFGHIJKLMNOPQRSTUVWXYZ{}[]?><'; var i,j : integer; c : char; begin Result := UTF8Encode(WideString(s)); end; UnTranslitStr на клиенте сейчас не делает ничего
  4. Код сервера else if cmd = 'trafic' then begin DM.qPSI_TraficTest.ParamByName('stock').AsString := sl[3]; DM.qPSI_TraficTest.Open; while not DM.qPSI_TraficTest.Eof do begin responce := '*' + DM.qPSI_TraficTest.FieldByName('id').AsString+'*'+ TranslitStr(DecodeEventName(DM.qPSI_TraficTest.FieldByName('A_EVENT').AsInteger))+'*'+ TranslitStr(DM.qPSI_TraficTest.FieldByName('test').AsString)+'*'+ DM.qPSI_TraficTest.FieldByName('A_COUNT').AsString+'*'+ TranslitStr(DM.qPSI_TraficTest.FieldByName('zn').AsString)+'*'+ #$0d#$0a; OutputReport(responce); ClientSocket.SendText(responce); DM.qPSI_TraficTest.Next; end; DM.qPSI_TraficTest.Close; ClientSocket.SendText('EOF'+#$0d#$0a); ClientSocket.Disconnect(ClientSocket.Handle); end; Код клиента procedure TfRes.GetDetailTraffic(stk: string); var cmd,s : string; cnt : integer; begin if not Assigned(CurrServer) then Exit; cmd := '*'+imei+'*trafic*'+stk+'*'; cnt := 0; idCl.Host := IP; idCl.Port := StrToInt(CurrServer.port); idCl.Disconnect; while idCl.Connected do ; try ad.Show; idCl.Connect(); if idCl.Connected then begin idCl.Socket.Write(cmd); ad.Hide; pd.Show; repeat Sl.Clear; if not idCl.Connected then break; s := idCl.Socket.ReadLnWait(3,IndyTextEncoding_UTF8); if idCl.Socket.ReadLnTimedout then Exit; Inc(cnt); pd.Message := 'Получено '+IntToStr(cnt)+' записей'; // pd.Message := s; if s <> 'EOF' then begin RE.Subject := s; RE.Split(SL,0); if Sl.Count > 1 then begin AddTr(SL[1],UnTranslitStr(SL[2]),SL[4],UnTranslitStr(SL[3]),UntranslitStr(SL[5])); end; end; until s = 'EOF'; end; finally idCl.Disconnect; while idCl.Connected do ; ad.Hide; pd.Hide; end; end; Скриншоты сервера и клиента
  5. '*356495042155004* '#$fffd#$fffd#$fffd#$fffd#$fffd#$fffd' '#$fffd#$fffd#$fffd' '#$fffd#$fffd#$fffd#$fffd#$fffd#$fffd#$fffd#$fffd#$fffd#$fffd' '#$fffd#$fffd#$fffd#$fffd#$fffd#$fffd#$fffd#$fffd#$fffd'*-40*2*H7041300945*' Вот что приходит в Инди А сервер отправляет это: *356495042155004* Таймер при включенном зажигании*-40*2*H7041300945* И то и то в UTF-8. Должно быть во всяком случае.
  6. Sergey Babichev

    THeader и TStringColumn

    Коллеги, подскажите, как связать заголовки столбцов у THeader с соответствующими колонками в TStringGrid? Сетка не умещается в экран по ширине и скроллируется а Header стоит на месте. Если использовать свойство Header у колонок вместо THeader а, то длинный заголовок в них не влезает. Есть способ задать ему форматирование - перенос по словам, выравнивание по центру?
  7. Извините за дублирование, но я не знаю в какой кодировке она вообще приходит. Сервер берет данные из SQL Express и отправляет их в канал. Смотришь сервер в отладчике, в сокет идет нормальная строка. В Андроид из ИНДИ приходит хрень. Кто когда и как успел испортить?
  8. Уважаемые коллеги! Никак не получается прочитать из клиента русский текст. Читается что-то вроде #fff8. Вышел из положения, написав две функции: function TranslitStr(s:string) : string; const Rus = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'; Eng = 'abcdefghijklmnopqrstuvwxyz~!@#$%&ABCDEFGHIJKLMNOPQRSTUVWXYZ()_+?><'; var i,j : integer; c : char; begin Result := ''; for i := 0 to length(s)-1 do begin c := s.Chars[i]; if isLetter(c) then begin j := pos(c,Rus); if j > 0 then c := Eng[j]; end; Result := Result + c; end; end; и обратную к ней. function UnTranslitStr(s:string) : string; const Rus = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'; Eng = 'abcdefghijklmnopqrstuvwxyz~!@#$%&ABCDEFGHIJKLMNOPQRSTUVWXYZ()_+?><'; var i,j : integer; c : char; begin Result := ''; for i := 0 to length(s)-1 do begin c := s.Chars[i]; if isLetter(c) then begin j := pos(c,Eng); if j > 0 then c := Rus[j-1]; end; Result := Result + c; end; end; Ее вызывает сервер, когда отправляет данные на Андроид, обратная в Андроиде возвращает буквы на место. Но так же быть не должно!
×
×
  • Создать...