-
Постов
394 -
Зарегистрирован
-
Посещение
-
Победитель дней
45
Активность репутации
-
AngryOwl получил реакцию от Евгений Корепов в Мультиязычность в андроиде
В общем я тупо вырезал часть из своего проекта. И создал маленький демо-проект.
Работает везде!
Хоть на Винде, хоть на Маке, хоть на Андроиде.
Думаю - разберетесь. Тем-более, что там все очень просто.
В демке сделал только два языка (в моем проекте их 11).
Все в Ini-файлах, работает очень быстро.
P.S. Все желающие могут использовать как хотят. Можете что-то добавлять, исправлять и т.д. Ну и не забываем делиться с другими...
P.P.S. Позже выложу приложение (GUI) для редактирования файлов языков. С автоматическим переводчиком и прочими мелочами, упрощающими редактирование.
Test_Translator.zip
-
AngryOwl отреагировална Rusland в А как хочется что бы Delphi опять стал «Первым в мире».
Первым не был, но был очень популярен во времена Delphi 7... сколько форумов тогда было, сколько тем. Потом все как-то стало грустно на несколько лет, до появления Firemonkey, когда студия снова заинтересовала.
А насчет цен - сильно дорого ИМХО, но тут уж ничего не поделать, кто разрабатывает такой мощный инструмент, тот и устанавливает цену (спасибо хоть акции подобно этой устраивают, когда Стартер бесплатно раздают, а потом предлагают Pro+Mobile со скидкой)
-
AngryOwl отреагировална Vitaldj в Как Вы используете RAD Studio
Я использовал ранее только для себя. Я с его помощью получил часть данных в диссертацию и успешно защитился в 2007 году. Помню удивление моего диссертационного совета, когда узнали, что я сам написал эту программу. Совет был по иммунологии/клинической фармакологии. Но со временем мой основной программы продукт понравился многим. И с 2009 года я выпустил первую публичную версию еще на delphi7. С 2015 года полностью переписываю его на FMX, что добавило кроссплатформанности. Мой программный продукт является автоматизированным рабочим местом врача - клинического фармаколога. Самое главное, он абсолютно бесплатный и без рекламы. Пользователи - врачи со всей РФ. Поэтому в опросе наверху я не смог выбрать "как я использую студию".
-
AngryOwl получил реакцию от Vitaldj в Как скрыть MasterButton?
Попробуйте использовать PreloadContent (если, конечно, Вы его уже не используете)
З.Ы. Это в смысле - по поводу первого появления и прочих лагов "в первый раз"
-
AngryOwl отреагировална Fedor K в TNotificationCenter. Можно ли изменить иконку?
Чтобы не лезть в исходники, можно сделать так для Android:
1. В Deployment : добавляешь нужную картинку X.png и устанавливаешь у картинки "Remote Path" "res\drawable\";
2. В коде перед созданием уведомления добавляешь:
const IMAGE = 'drawable/X'; //расширение картинки не указывается var lId : Integer; begin lId := TAndroidHelper.Context.getResources().getIdentifier( StringToJString(IMAGE), StringToJString('drawable'), TAndroidHelper.Context.getPackageName); TAndroidHelper.Context.getApplicationInfo.icon := lId; //именно отсюда потом берется Id картинки для локального уведомления *Проверял на Android 4.4, в более поздних версиях могут быть различия, версия IDE = Delphi 10 Seattle.
**В прошивках типа MIUI код выше может не работать из-за жестокого кеширования.
-
AngryOwl получил реакцию от sinuke в Как скрыть MasterButton?
Попробуйте использовать PreloadContent (если, конечно, Вы его уже не используете)
З.Ы. Это в смысле - по поводу первого появления и прочих лагов "в первый раз"
-
AngryOwl получил реакцию от zekelive в Загрузка PNG в Image из Deployment
В конкретном случае - речь идет о Android.
Тут, в некотором смысле, проще - воспользуйтесь замечательными компонентами FGX от автора данного форума. У компонента TfgApplicationEvents есть все события, которые Вам необходимы. А именно - событие ДО отображения формы (и куча других).
Ну если Вам не хватает отладчика - тупо натыкайте в нужных местах "тостов" (Toast), и смотрите - что будет "последним" событием...
З.Ы. А зависание программы происходит однозначно из-за того, что Вы пытаетесь что-то изменить в интерфейсе, до момента пока форма еще не стала активной. Решить можно не только синхронизацией, но и каким-нибудь Splash.
-
AngryOwl получил реакцию от zekelive в Загрузка PNG в Image из Deployment
Попробуйте загрузку ваших картинок оформить в:
TThread.Synchronize(TThread.CurrentThread, procedure begin // тут загрузка ваших картинок end);
-
AngryOwl получил реакцию от Евгений Корепов в Использование своего шрифта под Windows
В общем можно сделать, конечно, установку шрифта в инсталлере программы. И это будет оптимальным решением.
Но можно обойтись и без него.
Не буду расписывать детали, просто закину приложение и фрагменты кода. Думаю разберетесь. Естественно изменив на свои шрифты и т.п.
Все нижеперечисленное - в файл проекта DPR, перед Application.Initialize;
const CKey = '\Software\Microsoft\Windows NT\CurrentVersion\Fonts'; CFontFileName = 'spherelive.ttf'; CFontName = 'spherelive (TrueType)'; procedure ExecuteWait(const sProgramm: string; const sParams: string = ''; fHide: Boolean = false); var ShExecInfo: TShellExecuteInfo; begin FillChar(ShExecInfo, sizeof(ShExecInfo), 0); with ShExecInfo do begin cbSize := sizeof(ShExecInfo); fMask := SEE_MASK_NOCLOSEPROCESS; lpFile := PChar(sProgramm); lpParameters := PChar(sParams); lpVerb := 'open'; if (not fHide) then nShow := SW_SHOW else nShow := SW_HIDE end; try if (ShellExecuteEx(@ShExecInfo) and (ShExecInfo.hProcess <> 0)) then try WaitForSingleObject(ShExecInfo.hProcess, INFINITE) finally CloseHandle(ShExecInfo.hProcess); end; except On E : Exception do ShowMessage('font install Exception: ' + E.Message); end; end; if not IsFontRegistered(TPath.Combine(ExtractFilePath(ParamStr(0)), CFontFileName), CFontName) then if FileExists(TPath.Combine(ExtractFilePath(ParamStr(0)), 'RegFontC.exe')) then ExecuteWait(TPath.Combine(ExtractFilePath(ParamStr(0)), 'RegFontC.exe')); Application.Initialize; Где будет лежать файл со шрифтом - это уже ваше дело. Можно его куда угодно поместить. Хоть в ресурсы, хоть файлом просто, хоть с инета скачать.
P.S. Ну и конечно - это все именно под винду...
RegFont.zip
-
AngryOwl получил реакцию от enatechno в Использование своего шрифта под Windows
В общем можно сделать, конечно, установку шрифта в инсталлере программы. И это будет оптимальным решением.
Но можно обойтись и без него.
Не буду расписывать детали, просто закину приложение и фрагменты кода. Думаю разберетесь. Естественно изменив на свои шрифты и т.п.
Все нижеперечисленное - в файл проекта DPR, перед Application.Initialize;
const CKey = '\Software\Microsoft\Windows NT\CurrentVersion\Fonts'; CFontFileName = 'spherelive.ttf'; CFontName = 'spherelive (TrueType)'; procedure ExecuteWait(const sProgramm: string; const sParams: string = ''; fHide: Boolean = false); var ShExecInfo: TShellExecuteInfo; begin FillChar(ShExecInfo, sizeof(ShExecInfo), 0); with ShExecInfo do begin cbSize := sizeof(ShExecInfo); fMask := SEE_MASK_NOCLOSEPROCESS; lpFile := PChar(sProgramm); lpParameters := PChar(sParams); lpVerb := 'open'; if (not fHide) then nShow := SW_SHOW else nShow := SW_HIDE end; try if (ShellExecuteEx(@ShExecInfo) and (ShExecInfo.hProcess <> 0)) then try WaitForSingleObject(ShExecInfo.hProcess, INFINITE) finally CloseHandle(ShExecInfo.hProcess); end; except On E : Exception do ShowMessage('font install Exception: ' + E.Message); end; end; if not IsFontRegistered(TPath.Combine(ExtractFilePath(ParamStr(0)), CFontFileName), CFontName) then if FileExists(TPath.Combine(ExtractFilePath(ParamStr(0)), 'RegFontC.exe')) then ExecuteWait(TPath.Combine(ExtractFilePath(ParamStr(0)), 'RegFontC.exe')); Application.Initialize; Где будет лежать файл со шрифтом - это уже ваше дело. Можно его куда угодно поместить. Хоть в ресурсы, хоть файлом просто, хоть с инета скачать.
P.S. Ну и конечно - это все именно под винду...
RegFont.zip
-
AngryOwl получил реакцию от Rusland в Использование своего шрифта под Windows
В общем можно сделать, конечно, установку шрифта в инсталлере программы. И это будет оптимальным решением.
Но можно обойтись и без него.
Не буду расписывать детали, просто закину приложение и фрагменты кода. Думаю разберетесь. Естественно изменив на свои шрифты и т.п.
Все нижеперечисленное - в файл проекта DPR, перед Application.Initialize;
const CKey = '\Software\Microsoft\Windows NT\CurrentVersion\Fonts'; CFontFileName = 'spherelive.ttf'; CFontName = 'spherelive (TrueType)'; procedure ExecuteWait(const sProgramm: string; const sParams: string = ''; fHide: Boolean = false); var ShExecInfo: TShellExecuteInfo; begin FillChar(ShExecInfo, sizeof(ShExecInfo), 0); with ShExecInfo do begin cbSize := sizeof(ShExecInfo); fMask := SEE_MASK_NOCLOSEPROCESS; lpFile := PChar(sProgramm); lpParameters := PChar(sParams); lpVerb := 'open'; if (not fHide) then nShow := SW_SHOW else nShow := SW_HIDE end; try if (ShellExecuteEx(@ShExecInfo) and (ShExecInfo.hProcess <> 0)) then try WaitForSingleObject(ShExecInfo.hProcess, INFINITE) finally CloseHandle(ShExecInfo.hProcess); end; except On E : Exception do ShowMessage('font install Exception: ' + E.Message); end; end; if not IsFontRegistered(TPath.Combine(ExtractFilePath(ParamStr(0)), CFontFileName), CFontName) then if FileExists(TPath.Combine(ExtractFilePath(ParamStr(0)), 'RegFontC.exe')) then ExecuteWait(TPath.Combine(ExtractFilePath(ParamStr(0)), 'RegFontC.exe')); Application.Initialize; Где будет лежать файл со шрифтом - это уже ваше дело. Можно его куда угодно поместить. Хоть в ресурсы, хоть файлом просто, хоть с инета скачать.
P.S. Ну и конечно - это все именно под винду...
RegFont.zip
-
AngryOwl получил реакцию от #WAMACO в Использование своего шрифта под Windows
В общем можно сделать, конечно, установку шрифта в инсталлере программы. И это будет оптимальным решением.
Но можно обойтись и без него.
Не буду расписывать детали, просто закину приложение и фрагменты кода. Думаю разберетесь. Естественно изменив на свои шрифты и т.п.
Все нижеперечисленное - в файл проекта DPR, перед Application.Initialize;
const CKey = '\Software\Microsoft\Windows NT\CurrentVersion\Fonts'; CFontFileName = 'spherelive.ttf'; CFontName = 'spherelive (TrueType)'; procedure ExecuteWait(const sProgramm: string; const sParams: string = ''; fHide: Boolean = false); var ShExecInfo: TShellExecuteInfo; begin FillChar(ShExecInfo, sizeof(ShExecInfo), 0); with ShExecInfo do begin cbSize := sizeof(ShExecInfo); fMask := SEE_MASK_NOCLOSEPROCESS; lpFile := PChar(sProgramm); lpParameters := PChar(sParams); lpVerb := 'open'; if (not fHide) then nShow := SW_SHOW else nShow := SW_HIDE end; try if (ShellExecuteEx(@ShExecInfo) and (ShExecInfo.hProcess <> 0)) then try WaitForSingleObject(ShExecInfo.hProcess, INFINITE) finally CloseHandle(ShExecInfo.hProcess); end; except On E : Exception do ShowMessage('font install Exception: ' + E.Message); end; end; if not IsFontRegistered(TPath.Combine(ExtractFilePath(ParamStr(0)), CFontFileName), CFontName) then if FileExists(TPath.Combine(ExtractFilePath(ParamStr(0)), 'RegFontC.exe')) then ExecuteWait(TPath.Combine(ExtractFilePath(ParamStr(0)), 'RegFontC.exe')); Application.Initialize; Где будет лежать файл со шрифтом - это уже ваше дело. Можно его куда угодно поместить. Хоть в ресурсы, хоть файлом просто, хоть с инета скачать.
P.S. Ну и конечно - это все именно под винду...
RegFont.zip
-
AngryOwl получил реакцию от zairkz в Использование своего шрифта под Windows
В общем можно сделать, конечно, установку шрифта в инсталлере программы. И это будет оптимальным решением.
Но можно обойтись и без него.
Не буду расписывать детали, просто закину приложение и фрагменты кода. Думаю разберетесь. Естественно изменив на свои шрифты и т.п.
Все нижеперечисленное - в файл проекта DPR, перед Application.Initialize;
const CKey = '\Software\Microsoft\Windows NT\CurrentVersion\Fonts'; CFontFileName = 'spherelive.ttf'; CFontName = 'spherelive (TrueType)'; procedure ExecuteWait(const sProgramm: string; const sParams: string = ''; fHide: Boolean = false); var ShExecInfo: TShellExecuteInfo; begin FillChar(ShExecInfo, sizeof(ShExecInfo), 0); with ShExecInfo do begin cbSize := sizeof(ShExecInfo); fMask := SEE_MASK_NOCLOSEPROCESS; lpFile := PChar(sProgramm); lpParameters := PChar(sParams); lpVerb := 'open'; if (not fHide) then nShow := SW_SHOW else nShow := SW_HIDE end; try if (ShellExecuteEx(@ShExecInfo) and (ShExecInfo.hProcess <> 0)) then try WaitForSingleObject(ShExecInfo.hProcess, INFINITE) finally CloseHandle(ShExecInfo.hProcess); end; except On E : Exception do ShowMessage('font install Exception: ' + E.Message); end; end; if not IsFontRegistered(TPath.Combine(ExtractFilePath(ParamStr(0)), CFontFileName), CFontName) then if FileExists(TPath.Combine(ExtractFilePath(ParamStr(0)), 'RegFontC.exe')) then ExecuteWait(TPath.Combine(ExtractFilePath(ParamStr(0)), 'RegFontC.exe')); Application.Initialize; Где будет лежать файл со шрифтом - это уже ваше дело. Можно его куда угодно поместить. Хоть в ресурсы, хоть файлом просто, хоть с инета скачать.
P.S. Ну и конечно - это все именно под винду...
RegFont.zip
-
AngryOwl отреагировална sinuke в Анимация нажатия
тоже интересно узнать, как убрать этот эффект
добавлено чуть позже:
разобрался. нужно было убрать этот эффект на итэмах ListBox'а. Нашел стиль listboxitem и удалил у него ActiveStyleObject.
-
AngryOwl отреагировална Камышев Александр в Failed to load libssl.so
По всему не установлены SDK Intel x86, соответственно проблема не в них.
Анекдот. При головных болях Врач пациенту: бросай курить, Пациент: я не курю, Врач: попробуй закурить.
1. поискать libssl под х86, пишут что они где-то уже есть в системе у GT.
2. попробовать обновить библиотеки SDK для x86, т.е. если нельзя удалить х86 то надо их поставить
применить метод научного тыка
-
AngryOwl отреагировална Равиль Зарипов (ZuBy) в Failed to load libssl.so
(возможно!) нужно найти libssl.so/libcrypto.so для x86, у вас только для arm. и потом грузить файлы под разные архитектуры, только еще бы определить что запущено на intel'e
-
AngryOwl отреагировална tromani в Ошибка "Bitmap size too big"
в общем вышел из положения, очередным костылем к FMX, если кому понадобиться вот полный текст, работает сносно
procedure JBLoadFromFile(FileName:string; const ABitmap : TBitmap;W,H:integer); procedure SwapRB(var src:TJavaArray<Integer>); var i:integer; begin for i:= 0 to src.Length-1 do src.Items[i]:=(src.Items[i] and $FF00FF00) or ((src.Items[i] and $000000FF) shl 16) or ((src.Items[i] and $00FF0000) shr 16); end; procedure JBitmapToBitmap(const AImage: JBitmap; const ResBitmap: TBitmap); var ImageData: TJavaArray<Integer>; BitmapData: TBitmapData; Width, Height: Integer; begin Width := AImage.getWidth; Height := AImage.getHeight; try ResBitmap.SetSize(Width,Height); ImageData := TJavaArray<Integer>.Create(Width * Height); AImage.getPixels(ImageData, 0, Width, 0, 0, Width, Height); SwapRB(ImageData); if ResBitmap.Map(TMapAccess.maWrite, BitmapData) then try Move(ImageData.Data^, BitmapData.Data^, Width * Height * SizeOf(Integer)); finally ResBitmap.Unmap(BitmapData); end else ResBitmap.Clear(TAlphaColorRec.Green); except ResBitmap.Clear(TAlphaColorRec.Green); end; end; function calculateInSampleSize(options:JBitmapFactory_Options; reqWidth, reqHeight:integer):integer; var nh,nw:integer; heightRatio,widthRatio:integer; begin nh:=options.outHeight; nw:=options.outWidth; result:=1; if (nh> reqHeight) or (nw > reqWidth) then begin heightRatio:=round( nh / reqHeight); widthRatio:= round(nw /reqWidth); if heightRatio<widthRatio then Result:=heightRatio else Result:=widthRatio; end; end; var bmf_options:JBitmapFactory_Options; cbm:JBitmap; begin bmf_options:=TJBitmapFactory_Options.JavaClass.init; bmf_options.inJustDecodeBounds := true; TJBitmapFactory.JavaClass.decodeFile(StringToJString(FileName),bmf_options); bmf_options.inSampleSize := calculateInSampleSize(bmf_options, W, H); bmf_options.inJustDecodeBounds := false; try cbm:=TJBitmapFactory.JavaClass.decodeFile(StringToJString( FileName),bmf_options); except cbm:=nil; end; if Assigned(cbm) then try JBitmapToBitmap(cbm,ABitmap) except ABitmap.Clear(TAlphaColorRec.Blue); end else ABitmap.Clear(TAlphaColorRec.Green); end; может кто улучшит, подскажет чтото новое
-
AngryOwl получил реакцию от Kitty в Какую БД лучше использовать для хранения большога кол-ва аудиозаписей?
Возможно я не прав, но мой личный опыт показывает, что кол-во "задеплоенных" файлов никак не влияет на скорость запуска приложения.
А вот что очень сильно влияет - кол-во визуальных компонентов на форме(ах). И чем их больше - тем, соответственно, дольше запускается приложение. И это независимо от того - видимы они на главной форме или нет.
Ну и, конечно, инициализация различных переменных, невизуальных компонентов, инициализации БД и прочего, - это тоже существенно влияет.
P.S. Ну и сори - что не в тему (какую именно БД использовать)...
-
AngryOwl отреагировална zairkz в Получение результата голосового распознавания
Компонент надо установить только под 32-bit windows->compile->install
А для компиляции проекта надо чтобы в папке проекта лежали выше указанные файлы.
-
AngryOwl отреагировална zairkz в Получение результата голосового распознавания
Упс, не забудьте добавить SpeechRecognition.pas' добавить в проект и в папку с проектом скопировать файлы android.speech.SpeechRecognizer.pas, Androidapi.JNI.Speech.pas, AndroidTTS.pas
-
AngryOwl отреагировална Rusland в Получение результата голосового распознавания
Создал новый проект, кинул компонент, все работает... что не может не радовать )
Но можно ли сделать так чтобы появляющееся окно с Микрофоном
было поменьше или располагалось снизу, не перекрывая компоненты формы?
-
AngryOwl отреагировална Andrey Efimov в Какую БД лучше использовать для хранения большога кол-ва аудиозаписей?
База: SQLite, либо файлы xml - тут от задачи зависит.
Файлы: Деплой (если их немного), файл (.RC или .RES) - удобнее, если файлов много (для авто - генерации, писал утилитку Приложение для создания файла ресурсов (RC, RES)). Либо стягивание с сервера в инете, при необходимости.
-
AngryOwl получил реакцию от Andrey Efimov в Какую БД лучше использовать для хранения большога кол-ва аудиозаписей?
Возможно я не прав, но мой личный опыт показывает, что кол-во "задеплоенных" файлов никак не влияет на скорость запуска приложения.
А вот что очень сильно влияет - кол-во визуальных компонентов на форме(ах). И чем их больше - тем, соответственно, дольше запускается приложение. И это независимо от того - видимы они на главной форме или нет.
Ну и, конечно, инициализация различных переменных, невизуальных компонентов, инициализации БД и прочего, - это тоже существенно влияет.
P.S. Ну и сори - что не в тему (какую именно БД использовать)...
-
AngryOwl получил реакцию от Vitaldj в Какую БД лучше использовать для хранения большога кол-ва аудиозаписей?
Возможно я не прав, но мой личный опыт показывает, что кол-во "задеплоенных" файлов никак не влияет на скорость запуска приложения.
А вот что очень сильно влияет - кол-во визуальных компонентов на форме(ах). И чем их больше - тем, соответственно, дольше запускается приложение. И это независимо от того - видимы они на главной форме или нет.
Ну и, конечно, инициализация различных переменных, невизуальных компонентов, инициализации БД и прочего, - это тоже существенно влияет.
P.S. Ну и сори - что не в тему (какую именно БД использовать)...
-
AngryOwl отреагировална Евгений Корепов в Berlin HTTPClient: сломаны Cookies - ошибка в исходном коде
Оказывается эта проблема была обнаружена еще 26/Apr/16 12:29 AM https://quality.embarcadero.com/browse/RSP-14307 . И пока доступен только патч с хелперами https://quality.embarcadero.com/secure/attachment/17147/RSP14307.patch.zip
Написана что проблема решена в Berlin Update 1. Но как понимаю этого апдейта еще не было?