Recent

Author Topic: Internal error 200609171 macOS и ещё кучу хлама буду добавлять, что найду.  (Read 2600 times)

Seenkao

  • Sr. Member
  • ****
  • Posts: 261
Это ошибка при компиляции в MacOS при выборе неправильного дебаггера.

Где вообще смотреть какие ошибки и к чему они относятся? Надоедает в угадайку играть. Вроде развитая система, а ошибки, которые обычному пользователю не решить, ни где не прописаны.

Далее:
https://wiki.freepascal.org/FPC_PasCocoa
Code: Pascal  [Select][+][-]
  1. program simplewindow;
  2.  
  3. {$mode objfpc}{$H+}
  4. {$modeswitch objectivec2}
  5.  
  6. uses
  7.   CocoaAll;
  8.  
  9. var
  10.   appName: NSString;
  11.   window: NSWindow;
  12.   pool: NSAutoreleasePool;
  13. begin
  14.   pool := NSAutoreleasePool.new;
  15.   NSApp := NSApplication.sharedApplication;
  16.   NSApp.setActivationPolicy(NSApplicationActivationPolicyRegular);
  17.   appName := NSProcessInfo.processInfo.processName;
  18.   window := NSWindow.alloc.initWithContentRect_styleMask_backing_defer(NSMakeRect(0, 0, 200, 200),
  19.     NSTitledWindowMask, NSBackingStoreBuffered, False).autorelease;
  20.   window.center;
  21.   window.setTitle(appName);
  22.   window.makeKeyAndOrderFront(nil);
  23.   NSApp.activateIgnoringOtherApps(true);
  24.   NSApp.run;
  25. end.

работать не будет. Пока вы не пропишите NSApp, на всякий случай прописать
Code: Pascal  [Select][+][-]
  1. var
  2.   myNSApp: NSApplication;
и в коде заменить все NSApp на myNSApp

На самом деле можно не прописывать NSApp - если он будет в вызываемом модуле.

//-------------------------------------------------------------------------------------
Себе на память. Компилятор FPC во время отладки спокойно выдаст ошибку, даже если программа без отладки запускалась. (править это не собираются)
Поэтому, при ошибке Error 201 зачастую надо искать какие-то мелкие ошибки/недоработки в своём коде, которые могут вызвать исключения, которые вы поставили на отладку.
При том!!! Что даже если это просто число! Обычная опечатка и вам отладчик об этом может не сообщить.

Ошибка может быть при работе с OR, AND, XOR и подобными функциями. Следом за ними вставляется отладочный код, который проверяет переполнение. Поэтому ошибка при отладке как может быть, так её может и не быть.
« Last Edit: November 28, 2020, 06:09:45 pm by Seenkao »

trev

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1684
  • Former Delphi 1-7, 10.2 user
Далее:
https://wiki.freepascal.org/FPC_PasCocoa
Code: Pascal  [Select][+][-]
  1. program simplewindow;
  2. [...]
  3. end.

работать не будет. Пока вы не пропишите NSApp, на всякий случай прописать
Code: Pascal  [Select][+][-]
  1. var
  2.   myNSApp: NSApplication;
и в коде заменить все NSApp на myNSApp

Эта программа у меня работает без изменений (FPC 3.0.4 и FPC 3.3.1).
Lazarus 2.3, FPC 3.3.1 macOS 12.0.1 x86_64 Xcode 13.1
Lazarus 2.3, FPC 3.3.1 macOS 12.0.1 aarch64 Xcode 13.1
Lazarus 2.3, FPC 3.2.2 FreeBSD 13.0 amd64 VM
Lazarus 2.3, FPC 3.2.2 FreeBSD 12.2 amd64 VM
Lazarus 2.1 r61574 FPC 3.0.4 Ubuntu 20.04 VM
Lazarus 2.0.10 FPC 3.2.0 Win10 VM

Seenkao

  • Sr. Member
  • ****
  • Posts: 261
trev, это должно работать без объявления LCL-зависимости. У вас это так?

trev

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1684
  • Former Delphi 1-7, 10.2 user
Да, это правильно.
Lazarus 2.3, FPC 3.3.1 macOS 12.0.1 x86_64 Xcode 13.1
Lazarus 2.3, FPC 3.3.1 macOS 12.0.1 aarch64 Xcode 13.1
Lazarus 2.3, FPC 3.2.2 FreeBSD 13.0 amd64 VM
Lazarus 2.3, FPC 3.2.2 FreeBSD 12.2 amd64 VM
Lazarus 2.1 r61574 FPC 3.0.4 Ubuntu 20.04 VM
Lazarus 2.0.10 FPC 3.2.0 Win10 VM

Seenkao

  • Sr. Member
  • ****
  • Posts: 261
Тогда я бы хотел узнать, откуда вы получили зависимость NSApp? Если проект не LCL, то зависимость проявляется как ссылка на объект в NSApplication, не как сама зависимость от NSApplication.

trev

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1684
  • Former Delphi 1-7, 10.2 user
Вы компилируете исходный код с помощью fpc, а не с помощью Lazarus.
« Last Edit: September 20, 2020, 03:14:19 pm by trev »
Lazarus 2.3, FPC 3.3.1 macOS 12.0.1 x86_64 Xcode 13.1
Lazarus 2.3, FPC 3.3.1 macOS 12.0.1 aarch64 Xcode 13.1
Lazarus 2.3, FPC 3.2.2 FreeBSD 13.0 amd64 VM
Lazarus 2.3, FPC 3.2.2 FreeBSD 12.2 amd64 VM
Lazarus 2.1 r61574 FPC 3.0.4 Ubuntu 20.04 VM
Lazarus 2.0.10 FPC 3.2.0 Win10 VM

Seenkao

  • Sr. Member
  • ****
  • Posts: 261

Seenkao

  • Sr. Member
  • ****
  • Posts: 261
Так, для себя на памятку, но может кому тоже пригодится.

Если вы скомпилировали приложение и оно работает, но когда решаете отладить какие-то части кода и после этого начинает падать приложение:
 - отключаем все отладочные флаги и проверяем работу приложения.
 - если приложение не LCL, убираем галочку "использовать внешний отладочный файл"
 - меняем тип отладочной информации
 - пробуем поменять отладчик.

Так же!!! Будьте внимательны, отладочные флаги включают в программу код, который может быть "вреден" для программы. Отладочные флаги старайтесь вообще не включать! Особенно если вы не собираетесь ими пользоваться.

 

TinyPortal © 2005-2018