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

Лидеры

  1. Евгений Корепов

    Евгений Корепов

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


    • Баллы

      5

    • Постов

      738


  2. ENERGY

    ENERGY

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


    • Баллы

      5

    • Постов

      568


  3. krapotkin

    krapotkin

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


    • Баллы

      3

    • Постов

      2 185


  4. estra

    estra

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


    • Баллы

      2

    • Постов

      370


Популярный контент

Показан контент с высокой репутацией 28.04.2017 в Сообщения

  1. Подумайте о будущем, если проект будет развиваться и одной цифры ошибки станет не достаточно. Подумайте о наследниках-программистах (или о себе через пять лет) которые будут чесать репу и угадывать (вспоминать) что же означает каждая цифра ответа. Времена экономии каждого байта трафика прошли. Вспомните истории предшественников - 640 килобайт более чем достаточно для любого компьютера, 4294967296 ip адресов достаточно для всего человечества, размера MTU 1500 байт достаточно для TCP пакета в обозримом будущем, максимального размера файла в 4 гигабайта достаточно для любых нужд и вряд ли в будущем появятся накопители объемом более 9 терабайт (FAT32). Отдавая данные/результат в теле ответа в формате JSON вы развязываете себе руки и делаете задел на будущее. Вначале вам достаточно будет вот такого { "status" : true, "error" : 0 } потом возможно такое { "status" : false, "error" : 123, "errormessage" : "mysql deadlock in tables employments", } а потом еще что нибудь { "status" : true, "error" : 0, "errormessage" : "", "executiontime" : 304, "clastersource" : "bagama_server" } все эти добавления займут у вас одну-две строчки на php и одну-две строчки в приложении. При этом, вы сможете диагностировать ответ сервера, сидя на берегу моря, с помощью браузера вашего телефона.
    3 балла
  2. ENERGY

    Получить размер файла

    function FileSize(const aFilePath: string): Int64; var vSR : TSearchRec; begin if FindFirst(aFilePath, faAnyFile, vSR ) = 0 then begin Result := vSR.Size; FindClose(vSR); end else Result := -1; end; Мультиплатформенный вариант без открытия файла (размер берется из файловой системы).
    3 балла
  3. Периодически членам партии в пушах присылать призывы поддержать материально (из своего кармана) какое-нибудь благое начинание типа скинуться на: ремонт дороги, школы, больницы...
    2 балла
  4. DisposeOf не освобождает память, а просто вызывает деструктор. Можно не использовать его, а использовать обычный Close с TCloseAction.caFree. Я проверял на мобильном компиляторе (Android) - все уничтожается корректно, срабатывает деструктор формы. Обязательно создавать надо форму с Owner nil, иначе форма не уничтожится. frmLoading := TfrmLoading.Create(nil); frmLoading.Show; //В форме: procedure TfrmLoading.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := TCloseAction.caFree; end; //Уничтожаем: frmLoading.Close; frmLoading := nil; Если на ARC компиляторах вместо Close, вызвать FreeAndNil(frmLoading) - форма не уничтожится и останется видимой.
    2 балла
  5. [ОФФТОП] Интересно, а как метод ExtractAll должен поступать в случае, если в нескольких поддиректориях лежат файлы с одинаковыми именами? (Выберите верный вариант) В тихую перезаписывать (в конечном итоге оставляя одну версию файла, да еще непонятно какую) Останавливаться (возможно с выбросом ошибки или исключения) Долбать пользователя запросами (дергая какое-нибудь событие) P.S. выбрав вариант, предложите разработчикам "допилить" этот (метод | класс | компонент).
    2 балла
  6. вот реально в реальной задаче в течение одного года разработки я добавил в этот JSON не менее 5 разных полей...
    2 балла
  7. Нормативная документация (устав, цели, программа) Актуальные вопросы на предстоящую повестку дня на какой-нибудь сессии Обращения от граждан (хотя они гораздо чаще идут на конкретного представителя) "Внутреннее" голосование по какому-нибудь разрабатываемому документу / согласование уполномоченными должностными лицами А вообще - лучше всего уточнить у заказчика. Не "какой функционал должен быть у приложения" , "дайте ТЗ", а "давайте вместе подумаем / пофантазируем - вот у нас есть мобильное приложение. И мы будем его использовать для / чтобы ...". Причем это лучше делать не в письменной форме, а при личной встрече (при наличии такой возможности).
    1 балл
  8. kami

    Get запросы в iOS

    Видимо, они были не универсальны, а расширяемы. То есть - заточены под текущую задачу с большим заделом "на будущее". Справедливости ради надо сказать, что у меня тоже http-обмен всегда затачивался под конкретную задачу, без использования чего-то универсализированного. В отличие от некоторых других областей.
    1 балл
  9. Во время добавления так же можно отключить обработчики ListView1.OnUpdatingObjects и(или) ListView1.OnUpdateObject (если у вас в них есть какой либо код). ListView1.BeginUpdate; ListView1.OnUpdatingObjects:=Nil; ListView1.OnUpdateObjects:=Nil; for i := 0 to List.Count - 1 do begin LVItems := ListView1.Items.Add; LVItems.Data['MyData']:=... ... end; ListView1.OnUpdatingObjects:=ListView1UpdateObjects; ListView1.OnUpdateObjects:=ListView1UpdatingObjects; ListView1.EndUpdate;
    1 балл
  10. Многократное щёлканье получилось вот так. В объявлении класса: #ifdef __ANDROID__ _di_JAudioTrack audioTrack; TJavaArray__1<short>* samples; #endif В конструкторе: #ifdef __ANDROID__ samples = new TJavaArray__1<short>(1); samples->Items[0] = 0x0FFF; audioTrack = TJAudioTrack::JavaClass->init(TJAudioManager::JavaClass->STREAM_MUSIC, 11025, TJAudioFormat::JavaClass->CHANNEL_OUT_MONO, TJAudioFormat::JavaClass->ENCODING_PCM_16BIT, TJAudioTrack::JavaClass->getMinBufferSize(11025, TJAudioFormat::JavaClass->CHANNEL_OUT_MONO, TJAudioFormat::JavaClass->ENCODING_PCM_16BIT), TJAudioTrack::JavaClass->MODE_STREAM); #endif На событие: #ifdef __ANDROID__ audioTrack->write(samples, 0, 1); audioTrack->play(); audioTrack->stop(); #endif В деструкторе: #ifdef __ANDROID__ delete samples; #endif
    1 балл
  11. Например так: var path: TPathData; .......... Path:=TPathData.Create; Path.Clear; Path.MoveTo(PointF(x[0],y[0])); for i:=1 to N do Path.LineTo(PointF(x[i],y[i])); Path.ClosePath;
    1 балл
  12. antarey

    C++Builder Windows 10 Native App

    Подскажите, как в FMX реализовать типа нативное приложение под Вынь 10 - когда заходиш в настройки, потом в какой-то подпункт и в левом верхнем углу в капшине появляется стрелка назад. Убрать капшин , кинуть панель плюс три стандартные кнопки можно, но тогда форма ведет себя не совсем по нативному, когда пристыковываеш ее к краям экрана, она автоматически не ресайзится
    1 балл
  13. krapotkin

    Get запросы в iOS

    нажать ОК кликнуть два раза в строку где написано DCC Error и посмотреть, что за строка такая с ошибкой
    1 балл
  14. Равиль Зарипов (ZuBy)

    Get запросы в iOS

    проверка интернета function CheckInet: boolean; var aResp: IHTTPResponse; aHTTP: THTTPClient; begin Result := false; aHTTP := THTTPClient.Create; try try aResp := aHTTP.Head('http://google.com'); Result := aResp.StatusCode < 400; except Result := false; end; finally FreeAndNil(aHTTP); end; end; get запрос function HTTPGet(const aURL: string): string; var aHTTP: THTTPClient; aResp: TStringStream; begin Result := 'Error'; aResp := TStringStream.Create('', TEncoding.UTF8); aHTTP := THTTPClient.Create; try try aHTTP.Get(aURL, aResp); Result := aResp.DataString; except Result := 'Error'; end; finally FreeAndNil(aHTTP); FreeAndNil(aResp); end; end;
    1 балл
  15. Ура! Я победил проблему. Причем с помощью почти забытой мной процедуры FindFirst ;-) Код работает корректно под Windows и Android. Файл не передергивается, антивирус спокоен. function TFileManager.GetFileSize(APath : String) : String; Var AFileSizeByte : Int64; AFileSizeFloat : Double; SearchRec : TSearchRec; FileAttrs: Integer; begin FileAttrs :=faArchive; FileAttrs := FileAttrs + faAnyFile; Result:='unknow'; AFileSizeByte:=0; try FindFirst(APath,FileAttrs,SearchRec); AFileSizeByte:=SearchRec.Size; FindClose(SearchRec); except Exit; end; if AFileSizeByte<1024 then begin Result:=Format('%d',[AFileSizeByte])+' Byte'; Exit; end; if AFileSizeByte<1048576 then begin AFileSizeFloat:=AFileSizeByte/1024; Result:=Format('%6.3f',[AFileSizeFloat])+' KByte'; Exit; end; if AFileSizeByte<1073741824 then begin AFileSizeFloat:=AFileSizeByte/1048576; Result:=Format('%6.3f',[AFileSizeFloat])+' MByte'; Exit; end; AFileSizeFloat:=AFileSizeByte/1073741824; Result:=Format('%6.3f',[AFileSizeFloat])+' GByte'; end;
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...