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

zheka1980

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

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

  • Посещение

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

Блок последних пользователей отключён и не показывается другим пользователям.

Достижения zheka1980

  1. TBytes FData; FData=Socket->ReceiveData(100); len_rx=FData.Length; Memo1->Lines->Add(len_rx); Memo1->Lines->Add(TEncoding::UTF8->GetString(FData)); len_rx=0; if(len_rx == 0) { TArray__1<System::Byte> * buffer = new TArray__1<System::Byte>; buffer->set_length(6); (*buffer)[0] = 'r'; (*buffer)[1] = 'e'; (*buffer)[2] = 's'; (*buffer)[3] = 'e'; (*buffer)[4] = 't'; (*buffer)[5] = 0x0D; Socket->SendData(*buffer); delete buffer; } Вышеприведенный код запускается по таймеру каждую секунду - командой "reset" целевое устройство отправляется в перезагрузку, после чего отвечает, мол здесь я. То есть вначале проверяется нет ли чего в буфере приема (не ответило ли целевое устройство), а если ответа нет, команда на ресет подается повторно. То что len_rx принудительно сбрасывается в ноль - не обращайте внимания, это временно для отладки. Так вот, что меня смущает - количество байт в FData, почему то всегда равно размеру buffer Я было подумал, что где-то я эти переменные приравниваю друг к другу - ан нет. То, что оказывается в FData, является правильными данными, то есть тем, что шлет целевое устройство в ответ. В чем причина? И чем отлиючаются ReadData и ReceiveData? Это буфера или нет? Как они работают? Что-то не густо информации в интернете. Вот дока http://docwiki.embarcadero.com/Libraries/Berlin/en/System.Bluetooth.TBluetoothSocket.ReadData но она как-то не сильно помогает.
  2. Хм... для меня явилось откровением, что оказывается сопряжение то и не требуется чтобы подключиться к устройству... У меня до этого была какая-то библиотека на Java, так она вообще работала только лишь с сопряженными устройствами. Что и сбило меня с толку. Попробовал без сопряжения- сокет создается, данные гонятся. Так что можно считать, что проблема исчерпана.
  3. Господа, есть вопрос. Работает у меня код, который ищет блютус-устройства и формирует из них список (ComboBox). Пользователь выбирает из комбобокса нужное устройство, при выборе автоматом запускается функция подключения. Если устройство сопряжено, то создается сокет, а дальше дело техники. Если же устройство не сопряжено, то я вызываю if (BTDevice->IsPaired==0) Bluetooth1->Pair(BTDevice); что приводит к появлению диалогового окна, но не моей программы, а самой операционной системы Андроид, которое предлагает ввести пароль. Вопрос - как дальше вести себя моей программе? Окно операционной системы самостоятельное, программа же идет дальше. Первая мысль - по таймеру раз в пару сот миллисекунд проверять BTDevice->IsPaired и как только оно станет положительным, создавать сокет. А если попытка сопряжения будет неудачной, скажем, пароль кривой? Как программе понять, что пора бы прекратить проверять BTDevice->IsPaired, а подготовиться к повторной попытке сопряжения. Иначе после первой же неудачной попытки осуществить сопряжение, программа уйдет в транс.
  4. WebBrowser1.Navigate(TPath.GetPublicPath+'Tesseract.gif'); Так я пытаюсь запустить локальный файл. Не получается, пишет, что не может открыть файл. Путь указан правильный, н оначинается с http: Как мне направить webbrowser по нужному пути?
  5. Embarcadero Delphi - где искать apk после компиляции проекта? Всю папку перерыл - нет. Может как-то где-то включить надо, чтобы система не в телефон грузила проект, а на диск?
  6. Еще проблемка - если PDF содержит русские буквы - компилируется, но не заливается. Как побороть?
  7. С утра пойду в другие разделы, гундеть по поводу того, что GIF-ка анимированная не крутится)))
  8. Спасибо, я уже в принципе разобрался. Почти разобрался. ВОт такой код procedure TForm7.btnOpenPDFClick(Sender: TObject); const SAMPLE_PDF_FILENAME = 'example.pdf'; var Uri: Jnet_Uri; OpenLinkIntent: JIntent; PDFFileName: string; sr:TSearchRec; bchars, Tws:TSysCharSet; Intent: JIntent; begin PDFFileName :=TPath.Combine(TPath.GetSharedDocumentsPath, SAMPLE_PDF_FILENAME); { Внутренний доступ} Label1.Text:=PDFFileName; if (FindFirst(TPath.GetDocumentsPath+'/*.pdf', faAnyFile, sr) = 0) then begin Memo1.Lines.Add(sr.Name); while (FindNext(sr) = 0) do begin Memo1.Lines.Add(sr.Name); end; end; FindClose(sr); Intent := TJIntent.Create; Intent.setAction(TJIntent.JavaClass.ACTION_VIEW); Intent.setDataAndType(StrToJURI('file:'+PDFFileName), StringToJString('application/pdf')); try SharedActivity.startActivity(Intent); except on E: Exception do ShowMessage('Не удалось открыть PDF. В системе нет доступных приложения для просмотра pdf'); end; end; Вот такой код открывает файлы, но только если они в SharedDocumentsPath. Если пытаюсь открывать в DocumentsPath - не получается. Пытаюсь идти обратным путем - добавляю файлы в проект, запускаю Deployment, меняю assets\internal на assets - ни хрена.... При заливе проекта файлы в DocumentsPath не копируются. Мне нужно, чтобы человек скачал программу, содержащуюв себе PDFки, установил ее, и мог из программы эти PDF открыть. Возможно ли вообще в принципе сделать так, чтобы не скачивать PDF отдельно и не записыват в специаьную папку?
  9. А вы не могли бы поточнее? Вот добыл я имя файла PDFFileName :=TPath.Combine(TPath.GetDocumentsPath, '222.pdf'); Присобачиваю это к 'file://' - не пашет.
  10. Я просто думал, что могу не только программой получить доступ, но и проводником посмотреть. К слову - интересная штука, я просканировал папку пользователькую - в мемо имена загруженных файлов выводятся, то есть они скопировались и обнаруживаются. Но вот не открывается PDF
  11. Вот! Как раз этого у меня и нет. У меня несколько приложений и когда я пытаюсь открыть файл из диспетчера - вопрос о программе задается. А в мой программе - нет. Пишет - не удалось открыть файл.
  12. А у меня вообще что-то не получается... Пишет - не получается открыть файл. Я думал какие-то проблемы с папками - скинул PDF в проверенную папку - Downloads, написал кусок кода, который в этой же папке роется и формирует список файлов, чтобы понять, что программа в папку лезет.. procedure TForm7.btnOpenPDFClick(Sender: TObject); const SAMPLE_PDF_FILENAME = '978.pdf'; var Uri: Jnet_Uri; OpenLinkIntent: JIntent; PDFFileName: string; sr:TSearchRec; bchars, Tws:TSysCharSet; begin PDFFileName :=TPath.Combine(TPath.GetSharedDownloadsPath, SAMPLE_PDF_FILENAME); { Внутренний доступ} Label1.Text:=PDFFileName; if (FindFirst(TPath.GetSharedDownloadsPath+'/*.pdf', faAnyFile, sr) = 0) then begin Memo1.Lines.Add(sr.Name); while (FindNext(sr) = 0) do begin Memo1.Lines.Add(sr.Name); end; end; FindClose(sr); Uri := StrToJURI(PDFFileName); // Формируем намерение об открытии файла в стандартном приложении OpenLinkIntent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW, Uri); // Устанавливаем тип данных OpenLinkIntent.setType(StringToJString('application/pdf')); OpenLinkIntent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_CLEAR_TOP); // Запускаем приложение и передаем ему наше намерение try SharedActivity.startActivity(OpenLinkIntent); except on E: Exception do ShowMessage('Не удалось открыть PDF. В системе нет доступных приложения для просмотра pdf'); end; end; Что у меня не так?
  13. Господа, пишу в Embarcadero DELPHI Вот проект, который открывает PDF по нажатию кнопки, по определенному адресу. А я хочу чтобы этот PDF поставлялся с программой. Я добавил в проект файл 222.pdf. Залил программу. Рылся в памяти телефона - нет такого файла. Что делать? OpenPDF.rar
×
×
  • Создать...