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

krapotkin

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

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

  • Посещение

  • Победитель дней

    209

Весь контент krapotkin

  1. сам шрифт, который включает те или иные начертания и "жирность" причем каждое в отдельном файле идет обычно, и свойства одного, выбранного в font-family это не совсем одно и то же даже в графических программах это тот еще геморрой, а на уровне общего множителя для кроссплатформы так и вообще ...
  2. все как обычно, данные дайте посмотреть и о каких последних строчках идет речь? по идее в первом примере должно быть JSON := TJSONObject.ParseJSONValue(JSONText) as TJSONObject; JSONArray := JSON.Get('c').JsonValue as TJSONArray; а во втором JSON:= SO(JSONText); и все
  3. нет. динамически создавать надо только сам dm. он создаст свои компоненты настолько же динамически как и вы ) подойдет. НО. использовать его надо через синхронизацию. Создать cs:TCriticalSection. Каждый поток перед доступом к списку делает cs.enter, забирает оттуда dm, делает cs.leave. Т.е. в один момент времени только один поток может работать со списком Эта же функциональность просто встроена в TThreadList. Чем пользоваться - по сути все равно
  4. Dm самый обычный только создавать его автоматически не нужно как и все формы приложения кроме главной. Про массив все верно. Только вместо него лучше взять tthreadlist. Можно сделать так. Поток стартует, смотрит, нет ли уже готового дм, если есть, забирает его из списка, если нет, создаёт. По окончании работы кладёт дм в список.
  5. P.S. даже если вы начинающий, аккуратность никто не отменял account пишется через O
  6. Хорошей практикой является следующая концепция. Есть модель данных (МД) - набор классов, описывающий все, что происходит в вашей программе, и хранящий все нужные данные. А есть отдельный модуль, который отвечает за загрузку и сохранение этой МД. В нем класс-"загрузчик". Чтобы вам было удобнее, можно в качестве такого модуля сделать Datamodule, в котором будут все нужные все компоненты и методы. При этом становится не суть важно, откуда идет загрузка, хоть из интернета, хоть из БД. Вопросов с выделением этих процессов в отдельные потоки не будет, только нужно помнить только одно - один поток - один Datamodule. Т.е. создавать их надо динамически. создали объект модели данных, создали datamodule, вызвали некий метод для загрузки данных в объект. Хорошим тоном будет не создавать/уничтожать Datamodule каждый раз заново, потому что процесс подключения к БД довольно длительный по сравнению с простым запросом в БД. Поэтому можно создать какой-то пул(массив, список) уже созданных DM и брать одну штуку из него для совершения операции, и возвращать обратно по ее окончанию. Получается, что каждый поток будет иметь свой Datamodule и следовательно свой FDConnection и свой FDQuery для каждой операции. Надеюсь, я ответил на ваш вопрос
  7. Написал бы сразу статью сюда. Для всех полезно было бы
  8. пока вы не дадите свой pas+fmx файл дальнейшие гадания считаю бессмысленными
  9. а куда мне тыкать-то?? вы кода не даете, fmx не показываете в том обрывке что показали тыкать некуда Откройте свой fmx и смотрите object AAA: TLayout ... object BBB: TLabel ... end end если ААА нету, а в TForm он указан, то надо его вписать руками во внешнем редакторе после этого закрыть и открыть файл в IDE
  10. у нас налицо битый .DFM в смысле .FMX исправить его можно руками, приписав недостающее кроме того в папке _history хранится несколько десятков предыдущих версий всех файлов проекта, можно смотреть там
  11. еще раз. почему оно пишет Ancestor??? это говорит о некоем наследовании проблема не в том месте которое вы нам показываете а выше скорее всего в районе слова inherited есть такое?
  12. судя по "Ancestor" там вообще какое-то наследование форм и ТС очень много скрыл от нас ))
  13. ну, я уверен, что такого нет ) кто решится разбирать формат нативно, если есть хоть какая-то возможность не делать этого? )))
  14. очень коротко глянул проект и faq по 7z архив открывается, только файлы там видны не все. сам 7z работает через 7z.dll и ISO открывает хорошо, следовательно проблема в устаревшей библиотеке How can I add support for 7z archives to my application? One way is to use the 7z.dll or 7za.dll (available from sf.net for download). The 7za.dll works via COM interfaces. It, however, doesn't use standard COM interfaces for creating objects. You can find a small example in "CPP\7zip\UI\Client7z" folder in the source code. A full example is 7-Zip itself, since 7-Zip works via this dll also. There are other applications that use 7za.dll such as WinRAR, PowerArchiver and others. The other way is to call the command line version: 7za.exe. мораль - смотреть, как сделано в указанном примере но если надо по-быстрому и чтоб точно работало я бы просто взял и использовал запуск 7z.exe с перенаправлением вывода в мою программу
  15. смотрю https://github.com/zedalaye/d7zip/blob/master/sevenzip.pas поддержка ISO заявлена - CLSID_CFormatIso может, что то не так в коде? скидывайте проект, посмотрим
  16. krapotkin

    XSuperObject

    потому что она удобнее
  17. onPaint вызывается не когда вы хотите, а когда система считает нужным а чтоб она посчитала нужным, вызывайте Invalidate.
  18. если все правильно понимаю, 7z умеет. и у них есть 7z.dll
  19. В том числе. Также все созданные формы будут удалять не себя а именно form1
  20. Ну в целом это общий момент. Класс это чертежи автомобиля, а объект это сам автомобиль, сделанный по этому чертежу. Понятно, что если вы делаете всегда только одну машину, вы можете к ней обращаться прямо из чертежа. Но вы же понимаете, что это неверно?
  21. Если вы удаляете объект в обработчике этого объекта, будьте готовы, что при выходе из обработчика программа вполне может обратиться к уже несуществующему объекту Естественно, вы получите AV Лучший выход IMHO procedure TForm1.Button1Click(Sender: TObject); begin TThread.ForceQueue(nil, procedure begin ???.Free; end); end; обращаю внимание, что никакого FreeAndNil(Form1) не предполагается. потому что по-прежнему, что в D1, что в D10 обращаться из класса к экземпляру этого класса, это моветон и ошибка архитектуры Нужно придумывать что-то еще. поэтому и ??? поставил если хотите иметь какие-то глобальные ссылки на форму, значит, стоит делать какой-то менеджер этих форм и удалять через его методы. но если прямо просто побыстрогнокодить то конечно FreeAndNil(Form1) работать будет. Без ошибок.
  22. krapotkin

    [Android]RAD10.4.1

    Лучше всего по-мне, не устанавливать Android SDK/NDK вместе с каждой версией делфи, да еще в такие длинные пути, а потом поставить Android Studio и настроить в несколько кликов все что нужно.
  23. вот apk. попробуйтеFtpTest.apk у меня работает и по wifi и по мобиле на версиях Android 9 и 10 более ранних нет
  24. пока не перестанете писать по хардкодному пути, можете не присылать ни apk ни код попробуйте записать в System.IOUtils.TPath.GetSharedDownloadsPath
×
×
  • Создать...