Перейти к содержанию

slav_z

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

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

  • Посещение

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

    19

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

  1. 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> и прочее) я проблем не заметил.
  2. хорошо... если вам комфортнее работать со своим кодом, то попробуйте сделать так: будет утечка? я привел пример кода который вызывает проблемы, конечно, его можно переписать иначе и проблема исчезнет.. но с точки зрения языка проблем в коде нет... Response:=nil (уменьшение количества ссылок на интерфейс) это костыль который решает проблему (его быть не должно, и в версии 10.3.3 он не нужен - там все хорошо) при else этот костыль не нужен.... (только не говорите "зачем объявлять переменные в теле процедуры?" - это допустимо в языке... почему надо делать именно так - это отдельная тема)
  3. Переход с 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 компилируется без проблем). Позже покажу пример кода и как получилось уговорить компилятор.
  4. slav_z

    macOS Big Sur & Delphi

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

    macOS Big Sur & Delphi

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

    macOS Big Sur & Delphi

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

    macOS Big Sur & Delphi

    Есть ли проблемы с запуском приложений на macOS Big Sur у Delphi 10.4.1? Очень страшно обновлять macOS...
  8. if TFile.Exists(TPath.Combine(TPath.GetSharedDocumentsPath,'7.doc')) then +нужно разрешение на доступ
  9. да (после патча System.o конечно)
  10. вы не верите на слово, и это очень ценное качество для программиста... поэтому все надо уметь проверять... попробуйте положить в ваш список объекты такого типа (см. картинку)... и увидите когда разрушаются ваши объекты... (такое переопределение деструктора полезно когда возникают подобные вопросы)
  11. что будет с объектом A под ARC в этом случае? та же история и с вашими объектами в списке... DisposeListObjects() в моем примере нужен для обеспечения работы на всех платформах... посмотрите как реализована работа с объектами в TStringList (свойство OwnsObjects)... а конкретно посмотрите реализацию метода TStringList.Clear;
  12. вы как свой компонент регистрировали? там же и редактор для своего свойства укажите... (я delphi программист.. но думаю у вас все так же должно быть..)
  13. звучит тревожно.. еще и наследники будут? вот это метка! становится похоже на российский сериал какой-то... оно того стоит?
  14. не советую делать свои компоненты... надо стремиться к тому, что ваш проект должен быть скачан из репозитория и сразу запущен... без дополнительных установок чего-либо... то, что вы хотите сделать с TLabel, точно можно сделать с помощью стилей (прости господи) или фрейма...
  15. не знаю.. ничего не падает.. все работает на windows, android, ios: (скорее всего у вас проблема в DisposeOf и :=nil после этого но этого и не нужно делать)
  16. удаление было в дизайнтайме? попробуйте открыть форму как текст, найти там этот TLabel и удалить его руками... глюк какой-то IDE... и из заголовка формы если он там остался... Label23... при создании форма пытается прочитать его из файла ресурса и не может...
  17. у всех примитивных типов есть хелперы и в них уже реализован метод ToString... поэтому так и пишите Edit1.text:= myComponent.Value.toString НО! как раз для типа Real хелпера нет!!! просто используйте другой вещественный тип (учитывая что type Real = Double)
  18. slav_z

    XSuperObject

    все сторонние библиотеки рано или поздно превращаются в "камень в ботинке"... вопрос только во времени когда это случится... и если написано уже много кода, то переписывание и тестирование заново всего - это очень неприятная ситуация... я бы не стал самому себе на будущее подкладывать такую свинью... только когда стандартными компонентами не обойтись никак.. или время жизни проекта 3-4 года...
  19. а.. вот еще что: THTTPClient сам кодирует строку запроса, без всякой дополнительной фигни... очень хороший объект... реализованный просто замечательно... Client:=THTTPClient.Create; var Response:=Client.Get('http://fire-monkey.ru/topic/6993-закодировать-строку-в-utf8-для-передачи-в-get-запросе/#comment-40498'); if Response.StatusCode=200 then ... Client.Free;
  20. S:=TNetEncoding.URL.EncodeQuery('http://fire-monkey.ru/topic/6993-закодировать-строку-в-utf8'); ...и вам вполне подойдет THTTPClient для любых запросов...
  21. вообще запрос с русскими буквами выглядит примерно так: fire-monkey.ru/topic/6993-%D0%B7%D0%B0%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D1%83-%D0%B2-utf8-%D0%B4%D0%BB%D1%8F-%D0%BF%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%87%D0%B8-%D0%B2-get-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B5/ Используйте это: uses System.NetEncoding; ... S:=TNetEncoding.URL.EncodePath('http://fire-monkey.ru/topic/6993-закодировать-строку-в-utf8');
  22. uses iOSapi.Foundation, FMX.Helpers.iOS, iOSapi.UIKit, Macapi.CoreFoundation, Macapi.Helpers; procedure OpenURL(const URL: string); var _NSUrl: NSURL; begin _NSUrl:=TNSUrl.Wrap(TNSUrl.OCClass.URLWithString(NSStr(URL))); SharedApplication.openUrl(_NSUrl); end;
  23. посмотрите реализацию Release и сделайте точно так же как там... но с формой не советую... в случае с формой вызывайте Close а на событие OnClose укажите CloseAction = caFree тогда форма разрушится корректно... должна, сам не проверял, но судя по коду в исходниках все должно быть хорошо...
  24. вообще, чтобы получить HICON, достаточно только этого:
×
×
  • Создать...