Alex7wrt

Пользователи
  • Публикации

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

  • Посещение

  • Days Won

    5

Alex7wrt last won the day on 19 августа

Alex7wrt had the most liked content!

О Alex7wrt

  • Звание
    Продвинутый пользователь

Информация

  • Пол
    Мужчина

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

703 просмотра профиля
  1. Описанные вами отличия существуют, но сложностей они не вызывают. Достаточно единожды использовать конструкции для платформ вроде такой: {$IF DEFINED(MSWINDOWS)} start_index:=1; {$ELSE} start_index:=0; {$ENDIF}
  2. Попробуйте через события TGrid.OnDrawColumnCell или TGrid.OnDrawColumnBackground. Там можно отрисовывать в ячейках то, что вам нужно
  3. Не знаю, поможет или нет, но когда я пользовался TIdHttp, то обычно делал так: Var str: string; .............. str:=IdHttp.Get(s); .............. То есть без TMemoryStream. TIdHttp.Get является функцией типа string. Поэтому TMemoryStream для загрузки результата не использовал. А вот в THttpClient как раз использую такую конструкцию. Может и не в этом дело, конечно, но сейчас нет возможности проверить точнее.
  4. Раньше использовал TIdHttp, затем перешёл на THttpClient. THttpClient и TNetHttpClient - по сути одно и то же, только последний является визуальным компонентом. Поэтому в вашем случае корректнее сравнивать THttpClient и TIdHttp. Конкретно для моих целей использование THttpClient предпочтительнее, поскольку он из коробки работает с https на всех платформах, а в случае TIdHttp для этого ещё нужно подключать ssl. Разницы в скорости работы не замечал.
  5. В вашем приложении «Пятнашки» оно исчезает уже после того как приложение закрылось. То есть приложение уже закрыто, а надпись ещё висит. Хотелось бы без этого. Пока сделал все таки через TRectangle, TText и TFloatAnimation.
  6. Попробуйте TForm.Invalidate;
  7. А при реализации фишки с двойным нажатием кнопки "Назад" для выхода вы использовали какие-то системные функкции под Android? Хочу тоже такую сделать, но может быть, чем рисовать прямоугольники и делать анимацию, есть уже готовый системный метод?
  8. Добрый день В мобильном приложении используется следующая функция для чтения содержимого https страницы function geturlstring(url: string): string; var HTTP: THTTPClient; stream: tstringstream; begin try HTTP:=THTTPClient.Create; Stream:= TStringStream.Create('',TEncoding.UTF7); HTTP.Get(url, stream); Stream.Position:=0; Result:=stream.DataString; HTTP.Free; Stream.Free; except result:='error'; end; end; Почему-то в некоторых случаях, при подключении через WiFi, функция выдает 'error'. Хотя при проверке сам сайт с этим url открывается. Это вообще ссылка на гугловский сервис. Ошибку замечал например в WiFi сети метрополитена. Там подключение к WiFi двухэтапное - сначала открывается сервисная веб страница, нажимаешь ОК или что-то типа того, и WiFi подключается. В этом случае функция выдает ошибку, хотя браузер работает, и другие и приложения типа мессенджера и вайбера видят сеть.В мобильных сетях вроде работает нормально, там ошибок не замечал. В чем может быть проблема? Может ли это быть потому, что url относится к https протоколу?
  9. Можно ли средствами FireMonkey реализовать рассылку сообщений в Facebook со своего аккаунта? Сейчас приходится писать один и тот же пост много раз и рассылать по разным группам. Хотелось бы этот процесс облегчить. тематика - защита и устройство домашних животных. Выбор платформы не принципиален.
  10. Лично у меня такого никогда не было. Возможно, при установке студии при выборе устанавливаемых пакетов вы не поставили галочку в пункте "Android"?
  11. uses ..... FMX.Platform.Android, FMX.Helpers.Android, Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.JavaTypes, Androidapi.JNI.App, Androidapi.JNIBridge, Androidapi.JNI.Embarcadero, AndroidApi.JNI.Net, Androidapi.JNI.Util; ... var Intent: JIntent; begin Intent := TJIntent.Create; Intent.setAction(TJIntent.JavaClass.ACTION_VIEW); try Intent.setData(StrToJURI('market://details?id=name_of_app')); //если установлен google play except Intent.setData(StrToJURI('http://play.google.com/store/apps/details?id=name_of_app')); //иначе открываем ссылку в браузере end; TAndroidHelper.Context.startActivity(Intent); В uses есть даже лишнее, поскольку взял из проекта, где были и другие функции под Android
  12. Пытаюсь считывать данные с ком порта (RS232). При считывании иногда происходит сдвиг строки на байт, из-за чего происходят ошибки при обработке поступающих данных: 2552525017500200333610166057255 25250175002001410166053255252 501750020034361016615725525250 1750020024101661532552525017 50020036361016635725525250175 002004410166353255252501750 02004036101651582552525017500 200841016515425525250175002 Тогда как правильно должно быть, чтобы каждая строка начиналась на 25. В сторонних прогах работы с ком портом всегда так и есть. В то же время, иногда после переключения ком порта считывание проиходит правильно, поэтому думаю, что ошибка может быть в настройках соединения с портом или задержках. Вот параметры работы ком порта, от изготовителя устройства: Вот как я настраиваю порт в программе: procedure TForm1.Button1Click(Sender: TObject); begin ComFile:=CreateFile('com2',GENERIC_READ,0,nil,OPEN_EXISTING,FILE_ATTRIBUTE_READONLY,0); if ComFile=INVALID_HANDLE_VALUE then begin ShowMessage('Не удалось открыть порт '); exit; end; SetupComm(ComFile,18,18); GetCommState(ComFile,DCB); with DCB do begin BaudRate:=57600; ByteSize:=8; Parity:=NoParity; StopBits:=OneStopBit; end; if not SetCommState(ComFile,DCB) then begin ShowMessage('Порт не настроен'); CloseHandle(ComFile); exit; end; StartComThread; end; procedure TCommThread.Execute; begin Repeat QueryPort; Sleep(100); Until Terminated; end; rocedure TCommThread.QueryPort; var MyBuff:array [0..17] of Char; i: byte; Begin all_buf:=''; FillChar(MyBuff,SizeOf(MyBuff),#0); ReadFile(ComFile,MyBuff,SizeOf(MyBuff),BytesRead,Nil); If BytesRead>0 Then Begin for i:=0 to length(Mybuff)-1 do begin all_buf:=all_buf+inttostr(ord(MyBuff[i])); end; // Form1.Memo1.Lines.Add(all_buf); End; end; Где может быть ошибка?
  13. Вот так:
  14. Как вариант - загрузить файл в stringlist по делимитеру, а затем скопировать строки в stringgrid for(int i = 0 ; i<sl->Count ; i++) {sg->cells[0,i] = sl[i];} и потом удалить stringlist
  15. Я прошу прощения. Почему-то это было не очевидно))