Recent

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

Seenkao

  • Full Member
  • ***
  • Posts: 115
Это ошибка при компиляции в 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: 1209
  • 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).
o Lazarus 2.1.0 r64368, FPC 3.3.1 r48100, macOS 10.14.6, Xcode 11.3.1
o Lazarus 2.1.0 r64392, FPC 3.3.1 Jan 13 21:24, macOS 11.1 (aarch64), Xcode 12.3
o Lazarus 2.1.0 r61574, FPC 3.3.1 r42318, FreeBSD 12.1 amd64 (VMware VM)
o Lazarus 2.1.0 r61574, FPC 3.0.4, Ubuntu 20.04 (Parallels VM)

Seenkao

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

trev

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1209
  • Former Delphi 1-7, 10.2 User
Да, это правильно.
o Lazarus 2.1.0 r64368, FPC 3.3.1 r48100, macOS 10.14.6, Xcode 11.3.1
o Lazarus 2.1.0 r64392, FPC 3.3.1 Jan 13 21:24, macOS 11.1 (aarch64), Xcode 12.3
o Lazarus 2.1.0 r61574, FPC 3.3.1 r42318, FreeBSD 12.1 amd64 (VMware VM)
o Lazarus 2.1.0 r61574, FPC 3.0.4, Ubuntu 20.04 (Parallels VM)

Seenkao

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

trev

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1209
  • Former Delphi 1-7, 10.2 User
Вы компилируете исходный код с помощью fpc, а не с помощью Lazarus.
« Last Edit: September 20, 2020, 03:14:19 pm by trev »
o Lazarus 2.1.0 r64368, FPC 3.3.1 r48100, macOS 10.14.6, Xcode 11.3.1
o Lazarus 2.1.0 r64392, FPC 3.3.1 Jan 13 21:24, macOS 11.1 (aarch64), Xcode 12.3
o Lazarus 2.1.0 r61574, FPC 3.3.1 r42318, FreeBSD 12.1 amd64 (VMware VM)
o Lazarus 2.1.0 r61574, FPC 3.0.4, Ubuntu 20.04 (Parallels VM)

Seenkao

  • Full Member
  • ***
  • Posts: 115

Seenkao

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

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

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

 

TinyPortal © 2005-2018