kami
-
Постов
643 -
Зарегистрирован
-
Посещение
-
Победитель дней
41
Активность репутации
-
kami отреагировална Vitaldj в Обновление до Seattle (будут ли проблемы)
Мне кажется должны сработать, вроде там обратная совместимость. Я бы на твоем месте просто бы сделал бекап мака через Time Machine и установил новую xcode с paserver. Если что пойдет не так, откатись назад)).
И еще, дельфи стоит в виртуалке?
-
kami отреагировална Равиль Зарипов (ZuBy) в Обновление до Seattle (будут ли проблемы)
1) paserver'a можно оставить два
2) в XCode загрузить SDK для IOS 8.4
3) а вот с миграцией будет жопа, приготовьтесь
-
kami отреагировална krapotkin в Числовая клавиатура в InputQuery
я просто сделал свой аналог inputquery
это не просто, а очень просто...
-
kami получил реакцию от Rusland в Какие компоненты использовать в клиент-сервере
Даже если и умеете писать - толстые клиенты это зло. Именно сервер должен заниматься не только хранением, но и иметь бОльшую часть функционала по обработке данных. Это значительно упрощает всяческие обновления, нововведения и устранения глюков. Попробуйте выпустить мобильного толстого клиента с какой-нибудь незамеченной ошибкой, которая приводит к нестыковке данных в БД, а потом заставить всех пользователей обновить приложение - да половина не сделает этого в разумные сроки. И будете вставлять костыли в свои хранимки.
В Windows далеко не все клиенты толсты, у вас устаревшие сведения.
"Есть магаз" - я вот принципиально не обновляю из магаза некоторые приложения: часть из них убили отвратительным переводом на Material Design, а часть от версии к версии все больше кушает память, что для моего телефона уже непозволительно.
И чтобы вы знали - "толстость" клиента к "независимому интерфейсу" отношения не имеет. Если я правильно вас понял, то под независимым интерфейсом вы понимаете MVC. А "толстость" определяется тем, где производится основная работа с данными: обработка, преобразование, вылавливание ошибок и т.п. Если на клиенте - он толстый, если на сервере - то тонкий.
-
kami отреагировална krapotkin в Кому нужны программисты Fire Monkey?
теперь осталось сравнить цены на жизнь и определяться )
-
kami получил реакцию от Andrey Efimov в FireDAC + ODBC + Excel (.xls; xlsx)
Логично.
Нужно запустить 64-битный Odbcad32.exe и посмотреть доступные источники данных для 64 битных приложений, есть ли там драйвер для Excel
Для 32 битных нужно запустить его же, но из папки %systemdrive%\Windows\SysWoW64.
https://support.microsoft.com/ru-ru/kb/942976
Заодно - посмотреть в настройки драйвера, возможно там выставлено "открывать только для чтения"
-
kami получил реакцию от Andrey Efimov в FireDAC + ODBC + Excel (.xls; xlsx)
Win 8.1, 64 бит, Офис 2010.
Исходники не смотрел, exe отработал нормально,
-
kami отреагировална #WAMACO в Кому нужны программисты Fire Monkey?
Ну во-первых, хорошо смеется тот, кто смеется последним!
Во вторых, наблюдаю тенденцию на других форумах
- "обучился на JAVA, где искать работу?"
- "как то не все сладко в JAVA. правлю legacy сраный код"
- "группа C# кодеров запрограммерит любую задачу за еду"
и т.д.
такая же тенденция со всякми скрипт-языками (JavaScript и иже с ними), пока Да - закрывают нужды времени, ваяя на коленках скрипты!
НО, потом встанет задача оптимизации всего этого - и начнется время натива! Вот тут многие с испорченными знаниями фреймворков и прочей шелухи начнут выпадать из жизни! уже есть конкретные заявки на именно "нативные" реализации!
поэтому направление развития RAD абсолютно верное! а качество реализации придет! поверьте!
P.S. два знакомых менеджера по продажам (уже смешно) закончили курсы по JAVA, говорят бабла хотим много!
но при поиске работы на 1 предложение - уже 100 человек в очереди стоят! говорят: "нас обманули!"
я говорю "на вас деньги заработали!" (по 140 тыщ. руб - курсы по JAVA, 2х140=280 тыщ.) че, неплохо так!
-
kami отреагировална haword в Какие компоненты использовать в клиент-сервере
некоторые ответы меня вводят в замешательство ибо что то я не слышал про версии MySQL 2005 и MySQL 2014
-
kami получил реакцию от baklanoid в Возможно ли сделать сабкласс (subclass) стандартных компонентов?
Вместо создания своих компонентов, можно воспользоваться таким трюком, который существует с незапамятных времен. На примере TEdit (используется в реальном проекте для ввода чисел - целых/дробных, положительных/отрицательных и не мешающий работе текстовых TEdit):
1. Создаем новый unit:
unit uCustomEditForNumbers; interface uses System.Classes, FMX.Types, FMX.Edit; type TCustomEditForNumbers = class(FMX.Edit.TEdit) private FMaxLength: integer; protected procedure KeyDown(var Key: Word; var KeyChar: WideChar; Shift: TShiftState); override; public property MaxLength: integer read FMaxLength write FMaxLength; end; TEdit = class(TCustomEditForNumbers) // а вот он и трюк - теперь TEdit это не FMX.Edit.TEdit end; // а наш TCustomEditForNumbers implementation uses System.SysUtils; { TCustomEditForNumbers } procedure TCustomEditForNumbers.KeyDown(var Key: Word; var KeyChar: WideChar; Shift: TShiftState); var bAllowed: Boolean; s: string; Ch: WideChar; begin if FMaxLength > 0 then if Text.Length >= FMaxLength then if KeyChar <> #13 then KeyChar := #0; if KeyboardType = TVirtualKeyboardType.NumberPad then begin case Tag of 0: // беззнаковые целые bAllowed := (KeyChar >= '0') and (KeyChar <= '9'); 1: // знаковые целые. Надо бы проверять и положение каретки. begin s := Text; bAllowed := ((KeyChar >= '0') and (KeyChar <= '9')) or // ((KeyChar = '-') and (CaretPosition = 0) and (not s.Contains('-'))); end; 2: begin // беззнаковые Float s := Text; Ch := TFormatSettings.Create.DecimalSeparator; bAllowed := ((KeyChar >= '0') and (KeyChar <= '9')) or // ((KeyChar = Ch) and (not s.Contains(Ch))); end; 3: // знаковые Float begin s := Text; Ch := TFormatSettings.Create.DecimalSeparator; bAllowed := ((KeyChar >= '0') and (KeyChar <= '9')) or // ((KeyChar = '-') and (CaretPosition = 0) and (not s.Contains('-'))) or // ((KeyChar = Ch) and (not s.Contains(Ch))); end; else bAllowed := True; end; if not bAllowed then KeyChar := #0; end; inherited; end; 2. В uses формы/фрейма подключаем этот unit после штатного FMX.Edit
Все. Новый функционал уже работает.
P.S. Хоть пример и на Delphi, а не C++, но суть от этого не меняется, думаю.
-
kami получил реакцию от Cody71727172 в ScrollBox лагает
Есть мнение, что для (например) списка контактов нужно использовать ListView, а не ScrollBox
-
kami отреагировална Brovin Yaroslav в [Событие] Мировой тур RAD Studio 10 Seattle - Санкт-Петербург
Места проведения и даты:Санкт-Петербург (26.11.15) Официальный сайт мероприятия: http://www.delphitour.ru Регистрация: http://forms.embarcadero.com/EM15Q4RUDeveloperDirectLive Приглашаем вас принять участие в Мировом туре RAD Studio 10, который пройдет 26 ноября в Санкт-Петербурге в отеле Golden Garden.
У вас будет возможность не только ознакомиться с новыми возможностями продуктов, но и своими глазами увидеть, почему комплексная среда RAD Studio 10 является универсальным решением для разработчика, позволяющая заниматься быстрым созданием приложений, обладающих всем необходимым функционалом по взаимодействию с практически любыми устройствами, корпоративными источниками данных и популярными облачными сервисами.
В программе:
Разработка приложений для Windows 10 и использование новых компонент VCL; Ускорение разработки мобильных приложений для Android и iOS (отладка iOS 64-bit, тестирование кода); Использование нового компилятора C++ 11 CLANG; Эффективное использование среды разработки и новые возможности GetIt; Создание приложений для «Internet of Things» и Beacons; Применение новых возможностей FIreDAC для расширенной поддержки JSON и BSON Быстрое создание приложений для работы с NoSQL СУБД MongoDB с помощью новых компонент, классов, реализующих MongoDB API, и нового драйвера FireDAC для MongoDB. Кроме этого вы сможете задать все ваши вопросы экспертам, поделиться впечатлениями о продуктах и узнать о дальнейших планах по развитию портфеля решений компании. Ни один вопрос не останется без внимания! Количество мест ограничено!
Участие в мероприятии бесплатное!
Участие в мероприятии бесплатное.
-
kami отреагировална bigjorj в Не учитывается размер шторки
Вот кстати и подоспело решение проблемы со статусбаром под Intel аппаратами
https://magnumlabs.wordpress.com/2015/10/10/delphiandroid-misalignment-status-bar-on-intel-based-devices/
-
kami получил реакцию от zairkz в Thoma Bravo Announces Sale of Embarcadero to Idera, Inc.
Andy, вы просто не умеете их готовить
В других IDE/языках тоже проблем и глюков более чем есть.
А по факту - я надеюсь, что FMX не остановят в развитии. Имхо, Embarcadero сейчас в направлении кросс-платформенности впереди планеты всей.
Повторюсь - это было имхо и не повод для холиваров.
-
kami получил реакцию от Brovin Yaroslav в access violation в windows7
Прежде чем что-то обновлять, неплохо было бы вычислить виновника, поскольку исходное сообщение AV - не информативно совсем.
При компиляции под винду задействуйте MadExcept /EurecaLog, etc..., он покажет полный стек, включая строки кода, который привел к возникновению AV. Таким образом можно вычислить, кто сплоховал, а дальше ... по обстоятельствам.
-
-
kami отреагировална krapotkin в RAD XE9 (RAD X Seattle)
после чтения bug-fix прямо в раздумьях -- как хоть что-то работало ? и что делать если ошибки того же уровня есть в новой версии...
-
kami получил реакцию от zairkz в [Android] программа закрывается при использовании LocationSensor и Memo
{$IFDEF offtop}Мсье знает толк в извращениях {$ENDIF}
-
kami получил реакцию от Равиль Зарипов (ZuBy) в [Android] программа закрывается при использовании LocationSensor и Memo
{$IFDEF offtop}Мсье знает толк в извращениях {$ENDIF}
-
kami отреагировална Brovin Yaroslav в Как узнать сколько пикселей в 1 см?
То же самое можно получить проще:
uses System.Devices; TDeviceInfo.ThisDevice -
kami получил реакцию от Brovin Yaroslav в Нагрев устройства при работе программы Android
Кирилл, это вечная дилемма между удобством/красотой приложения, задействуемыми ресурсами и скоростью его работы. Разумеется, анимации влияют на загрузку процессора. Но вот так однозначно сказать - это не употребление, а именно "зло" - нельзя. Если есть возможность - запустите под Windows под профилировщиком (AQTime Standart, например) - сразу увидите, какие методы максимально грузят процессор.
Вспоминаются жалобы в плеймаркете (не реклама) на яндекс.карты - в одной из версий приложение разряжало аккумулятор вхлам, даже постоянная зарядка не спасала. Разработчики что-то сделали, внешне ничего не поменялось (вроде), но проблема ушла.
-
kami получил реакцию от Brovin Yaroslav в Нагрев устройства при работе программы Android
Зависит
Например:
- злоупотребление процессорным временем (постоянная загрузка процессора на 100% - неоптимальность алгоритмов и не-использование аппаратных возможностей ускорения)
- злоупотребление частотой получения данных от периферии (датчики ускорения/GPS/наклона...)
- злоупотребление яркостью экрана (некоторые устройства при включенном экране и максимальной яркостью разряжаются даже при подключенной штатной зарядке)
Да мало ли еще чего, например - злоупотребление программированием вообще
-
kami получил реакцию от enatechno в Нагрев устройства при работе программы Android
Зависит
Например:
- злоупотребление процессорным временем (постоянная загрузка процессора на 100% - неоптимальность алгоритмов и не-использование аппаратных возможностей ускорения)
- злоупотребление частотой получения данных от периферии (датчики ускорения/GPS/наклона...)
- злоупотребление яркостью экрана (некоторые устройства при включенном экране и максимальной яркостью разряжаются даже при подключенной штатной зарядке)
Да мало ли еще чего, например - злоупотребление программированием вообще
-
kami получил реакцию от Andrey Efimov в Отправка содержимого Edit на сервер
Разве Tethering работает через интернет? Емнип, он способен обнаруживать "коллег" и подключаться только в одной подсети.
-
kami отреагировална Brovin Yaroslav в Аналог Post в FMX android
С моей точки зрения, метод TThread.Queue имеет один весомый недостаток. А именно:
Если вызов метода TThread.Queue идет в главном потоке, то код будет вызыван немедленно. class procedure TThread.Queue(const AThread: TThread; AMethod: TThreadMethod); var LSynchronize: PSynchronizeRecord; begin if AThread <> nil then AThread.Queue(AMethod) else begin New(LSynchronize); try LSynchronize.FThread := nil; LSynchronize.FSynchronizeException := nil; LSynchronize.FMethod := AMethod; Synchronize(LSynchronize, True); // <-- Смотрим сюда finally if MainThreadID = CurrentThread.ThreadID then Dispose(LSynchronize); end; end; end; А потом на кусочек этого кода:
class procedure TThread.Synchronize(ASyncRec: PSynchronizeRecord; QueueEvent: Boolean = False); var SyncProc: TSyncProc; SyncProcPtr: PSyncProc; begin if CurrentThread.ThreadID = MainThreadID then begin if Assigned(ASyncRec.FMethod) then ASyncRec.FMethod() else if Assigned(ASyncRec.FProcedure) then ASyncRec.FProcedure(); end else Из реализации метода Synchronize, как раз и видно, что код будет вызван немедленно, если текущий тред - это главный поток.
Итог
TThread.Queue заменяет PostMessage, если вызов идет не из главного потока. Если вызов TThread.Queue идет из главного потока, то это равносильно прямому вызову процедуры или метода.