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

slav_z

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

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

  • Посещение

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

    33

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

  1. может у вас там открытие файлов doc после копирования.... поэтому он не может заменить открытый в другой программе файл...
  2. тогда давайте проект вместе с файлами которые в ListBox1.. можете в личку...
  3. скорее всего на исходных файлах из списка ListBox1 стоят атрибуты "Только для чтения"... при копировании файлов атрибуты для новых файлов копируются тоже... поэтому первое копирование проходит, а следующие попытки не могут заменить файл т.к. он "только для чтения"...
  4. Почему имя файла FileName не меняется для каждого файла из ListBox? Код из примера не реальный код? Где указание на другой "диск" (путь назначения)? Это все для Windows или Android?
  5. конечно он не будет работать... вы пытаетесь копировать файлы из списка ListBox1 в один и тот же файл FileName... копирование для первого файла проходит, но для следующей операции копирования вы получите ошибку "такой файл уже существует".. если вам нужно перезаписывать файл при каждой операции копирования используйте TFile.Copy(ListBox1.Items, FileName, True) что должен делать ваш код на самом деле? то, что я вижу, меня пугает...
  6. Посмотрите выше картинку. Окно Project Options\Uses Permissions.
  7. если не будет в манифесте, не сможете запросить и программно... это нужно чтобы ОС Android знала какие разрешения может запросить программа... ей это нужно... а сами разрешения у ПОЛЬЗОВАТЕЛЯ! должны запрашиваться в момент когда они действительно нужны, а не в момент первого запуска программы (как было раньше) ... тут все правильно.. потом разберетесь...
  8. для любых (они должны быть добавлены так же в Uses Permissions для того чтобы попасть в файл манифеста)
  9. закр. скобку поставьте ")"... это анонимная функция... (см. картинку с кодом)
  10. такое поведение было у старых андроидов... теперь необходимо запрашивать разрешение у пользователя прям тогда, когда программе это реально нужно... подключить модули в uses не забыли ? (см. картинку с кодом)
  11. объявите переменную WRITE_EXTERNAL_STORAGE обычным способом типа string. все остальные ошибки компиляции - следствие первой... при сборке он автоматически включается в APK-файл.. ничего делать для этого не нужно... APK-файл это обычный ZIP-файл... измените расширение на ZIP и откройте, посмотрите что у него внутри... хотя бы здесь: http://www.proghouse.ru/programming/126-ioutils
  12. Изучите особенности программирования под Android, общее устройство этой ОС, структуру apk файлов (сначала будет трудно, но иначе ничего у вас не получится). Про манифест: https://developer.android.com/guide/topics/manifest/manifest-intro Отвечу на ваши вопросы, но сейчас толку будет мало: Файл-шаблон манифеста AndroidManifest.template.xml создается автоматически при создании проекта (копируется в папку проекта), окончательный файл манифеста формируется при сборке проекта, разрешения для работы с внешним хранилищем даны по-умолчанию (чтение+запись). но перед работой с внешним хранилищем в программе необходимо явно запросить разрешение у пользователя (если пользователь уже дал разрешение, то диалога-запроса не будет, код выполнится сразу без запроса): System.IOUtils - кроссплатформенная библиотека для работы с файлами (папками и прочее).. Пример вызова: TFile.WriteAllText(). Советую изучить ее исходный код.
  13. Android Ниже код который компилируется без проблем во всех ОС и в версии 10.3.3 и в версии 10.4.1 (тут нет никакого подвоха, код непростой для понимания, но верный... ) type TChain = class abstract end; TBaseChain<T: record> = class abstract (TChain) public type BlockType = T; end; TDataBlock<T> = record end; TDataChain<T: record> = class(TBaseChain<TDataBlock<T>>) end; TBlockMaster = record end; TMasterChain = class(TDataChain<TBlockMaster>) end; procedure TForm1.Button4Click(Sender: TObject); var A: TMasterChain.BlockType; begin end; Проблема возникает если объявление типов перенести в отдельный модуль. Решение в данном случае зависит от дальнейшего способа использования переменной A. Расписывать дальше не буду, т.к мало кто создает свои обобщенные типы, а с использованием встроенных типов (TArray<T>, TList<T> и прочее) я проблем не заметил.
  14. хорошо... если вам комфортнее работать со своим кодом, то попробуйте сделать так: будет утечка? я привел пример кода который вызывает проблемы, конечно, его можно переписать иначе и проблема исчезнет.. но с точки зрения языка проблем в коде нет... Response:=nil (уменьшение количества ссылок на интерфейс) это костыль который решает проблему (его быть не должно, и в версии 10.3.3 он не нужен - там все хорошо) при else этот костыль не нужен.... (только не говорите "зачем объявлять переменные в теле процедуры?" - это допустимо в языке... почему надо делать именно так - это отдельная тема)
  15. slav_z

    Переход 10.3.3 -> 10.4.1

    Переход с Delphi 10.3.3 на версию 10.4.1 вызвало проблемы во всех ОС без исключения. Начну с простых случаев: Linux (Ubuntu) При компиляции вылезла ошибка: ld-linux.exe: error: cannot find -lgcc_s Помогла установка (с последующим обновлением SDK) на ubuntu: sudo apt install gcc При компиляции вылезла ошибка: ld-linux.exe: error: cannot find -lz Помогла установка (с последующим обновлением SDK) на ubuntu: sudo apt install zlib1g-dev iOS Приложение при запуске стало занимать 2/3 экрана по высоте (в новом приложении хелловорд все было хорошо). Для решения проблемы надо добавить следующую строку в "старый" файл info.plist.TemplateiOS.xml Windows В приведенном ниже коде перестал освобождаться интерфейс Response. При выходе программа сообщала о не освобожденных объектах (ReportMemoryLeaksOnShutdown:=True) Вот код (помечена строка которую пришлось добавить для решения проблемы... сломали подсчет ссылок для интерфейсов, а это уже плохо...): macOS При деплое вылезло следующее: [PAClient Error] Error: E0264 Unable to execute '"/usr/bin/codesign" --entitlements "/Users/macbookpro/PAServer/...../Contents/xxxx.entitlements" -s "-" -f "/Users/macbookpro/PAServer/scratch-dir/xxxx.app"' (Error 1) [PAClient Error] Error: E0264 Failed to parse entitlements: AMFIUnserializeXML: duplicate dictionary key near line 19 Не знаю почему и как, но помогло убрать галочку здесь: Android Самые большие проблемы. В двух словах: ошибка при компиляции F2084 Internal Error: URW1237 или G14486 при использовании обобщенных классов (тот же код для других OC компилируется без проблем). Позже покажу пример кода и как получилось уговорить компилятор.
  16. slav_z

    macOS Big Sur & Delphi

    спасибо всем за ответы!
  17. slav_z

    macOS Big Sur & Delphi

    на windows будет работать? (хотел сделать вторую загрузочную систему на маке, но места не хватает...)
  18. slav_z

    macOS Big Sur & Delphi

    главное запускается - уже здорово.. приложение собранное на delphi 10.3.3 просто не запускается у пользователей на Big Sur... или расположение библиотек изменили или что... непонятно...
  19. slav_z

    macOS Big Sur & Delphi

    Есть ли проблемы с запуском приложений на macOS Big Sur у Delphi 10.4.1? Очень страшно обновлять macOS...
  20. if TFile.Exists(TPath.Combine(TPath.GetSharedDocumentsPath,'7.doc')) then +нужно разрешение на доступ
  21. да (после патча System.o конечно)
  22. вы не верите на слово, и это очень ценное качество для программиста... поэтому все надо уметь проверять... попробуйте положить в ваш список объекты такого типа (см. картинку)... и увидите когда разрушаются ваши объекты... (такое переопределение деструктора полезно когда возникают подобные вопросы)
×
×
  • Создать...