Jump to content

Incus J

Members
  • Content Count

    157
  • Joined

  • Last visited

Everything posted by Incus J

  1. It's a good while back - maybe as far back as XE4, so definitely the previous macOS 32-bit compiler. But it all worked including SSL. It helps that macOS includes OpenSSL. I can try 8.62 and see what happens. Yes, it does seem odd that the Win64 compiler is happy to consider Integer vs Longint equivalent, but not the macOS compiler, since they target the same CPU. OK, I'll plough on and see how far I can get. Ah the Z80 - lovely instruction set (my misspent childhood with a Sinclair ZX Spectrum 🙂
  2. OK, that error hasn't appeared so far in the overnight zip. Here's some quick progress notes from the overnight zip: - Opened Install/D104InstallVclFmx.groupproj - Build IcsCommonD104Run.dproj (bplIcsCommonD104Run.dylib) - Target Platform set to macOS 64-bit - With PUREPASCAL added as a project compiler directive: [dccosx64 Error] OverbyteIcsUtils.pas(7015): E2003 Undeclared identifier: 'FileSetAttr' function IcsDeleteFile(const Fname: string; const ReadOnly: boolean): Integer; var attrs: integer ; begin result := -1 ; // file not found attrs := FileGetAttr (Fname); if attrs < 0 then exit; if ((attrs and faReadOnly) <> 0) and ReadOnly then begin result := FileSetAttr (Fname, 0); if result <> 0 then result := 1; if result <> 0 then exit; // 1 could not change file attribute, ignore system error end ; if DeleteFile (Fname) then result := 0 // OK else result := GetLastError; // system error end ; FileSetAttr is Windows only I think. To continue I surrounded with {$IFDEF MSWINDOWS} to bypass file attribute routines. [dccosx64 Error] OverbyteIcsStreams.pas(263): E2137 Method 'SetSize' not found in base class In the base class Stream, the SetSize parameter NewSize takes a LongInt or Int64, but not an Integer. To continue I changed NewSize to a LongInt. [dccosx64 Error] OverbyteIcsStreams.pas(288): E2137 Method ‘Read’ ‘Write’ ‘Seek’ not found in base class In the base class TStream, parameters and Result for Read, Write, Seek are LongInt (not Integer). To continue I changed all offending parameters to LongInt. [dccosx64 Error] OverbyteIcsStreams.pas(1362): E2037 Declaration of 'Create' differs from previous declaration To continue I changed BufferSize to LongInt. [dccosx64 Error] OverbyteIcsStreams.pas(328): E2137 Method 'Create' not found in base class To continue I changed BufferSize to LongInt. [dccosx64 Error] OverbyteIcsStreams.pas(380): E2137 Method 'Create' not found in base class To continue I changed BufferSize to LongInt. [dccosx64 Error] OverbyteIcsCRC.pas(237): E1025 Unsupported language feature: 'ASM' Note: Inline assembly not supported by 64-bit compiler. Got stuck at this point because I don’t know the equivalent pascal for the assembly instruction: bswap eax Since the function is only a single line of code, I can probably figure out the intension from the function declaration. If it is useful I can zip up the files I've modified?
  3. At the moment I've got as far as: [dccosx64 Error] Ics.InterlockedApi.inc(3): E1025 Unsupported language feature: 'ASM' {$IFDEF CPUX64} function InterlockedIncrement(var Addend: LongInt): LongInt; asm MOV EAX,1 LOCK XADD [RCX].Integer,EAX INC EAX end; I don't think there's a PUREPASCAL version of that function. I will grab the overnight zip now and have another try.
  4. That sounds brilliant - thank you Angus. I'm happy to test Mac stuff (macOS Catalina, VMWare Fusion hosting a Windows 10 guest running Delphi 10.4)
  5. OK, PUREPASCAL added as a Compiler Directive in the project options. I think this is called winging-it. Next up: [dccosx64 Error] OverbyteIcsUtils.pas(6956): E2033 Types of actual and formal var parameters must be identical function TIcsFindList.AddSorted(const Item2: Pointer; Compare: TListSortCompare): Integer; begin if NOT Sorted then Result := Count else begin if Find (Item2, Compare, Result) then exit; end ; Insert (Result, Item2) ; end; Result is an Integer, but Find defines its 3rd 'index' parameter as a LongInt. Oh! - lightbulb moment. ICS expects a 32-bit compiler, where Integer and LongInt are likely the same size. But macOS requires a 64-bit compiler, where one of those (either Integer or LongInt, but not both) will be 64-bits. Out of my depth - what do you mean you can tell? :)
  6. OK I've corrected (I think) $IFNDEF to $IFDEF and the compiler gets further. The sticking point is now in OverbyteIcsUtils: [dccosx64 Error] OverbyteIcsUtils.pas(2391): E1025 Unsupported language feature: 'ASM' function IcsSwap16(Value: Word): Word; {$IFDEF PUREPASCAL} begin Result := (Value shr 8) or (Value shl 8); {$ELSE} asm {$IFDEF CPUX64} MOV AX, CX {$ENDIF} XCHG AL, AH {$ENDIF} end; It doesn't like the line 'asm' which makes sense because (unlike 32-bit) the 64-bit compiler doesn't support inline assembly. My guess is it needs to use the PUREPASCAL version when compiling for macOS 64-bit. However I haven't found where PUREPASCAL is defined yet. Maybe I can add it as a directive in the project options?
  7. Thanks Vincent - I've corrected it to $MESSAGE, and now when building, the compiler actually displays that error i.e. "This unit should not be included in a Windows project..." But this is not a Windows project - it's a macOS 64-bit project. So I was wondering whether it should actually read { $IFDEF MSWINDOWS } - would make more logical sense?
  8. Incus J

    Restore Delphi File Associations?

    OK I couldn't find anything in the IDE, but a quick browse of the Windows registry revealed a key named: Disabled IDE Packages ...containing three package entries. I exported a copy of this key for safety, then deleted the three entries. Restarted Delphi, and the macOS platform reappeared. If anyone finds that bits of the IDE are no longer loading, this might be useful.
  9. Incus J

    Restore Delphi File Associations?

    After my issues with the Platform Manager on Friday, the IDE began displaying missing .bpl package errors when starting up, and the macOS platform was no longer available to add to a project. So I've uninstalled and reinstalled Delphi 10.4 (using the web installer, same as before). The IDE starts up without errors now, and the Help documentation is back, though oddly the documentation refers to '10.4 Denali' - should that be 'Sydney' ? Unfortunately the macOS platform is still missing, though it appears to be installed - I suspect the IDE is just no longer attempting to load the necessary macOS packages. Is there a listbox of IDE .bpl packages, maybe with checkboxes to enable them? I've found a list of Design packages for a Project, but not packages for the IDE itself.
  10. I suspect there were server issues on Friday. I kept getting "Invalid Serial Number" errors while trying to use the Tools > Platform Manager in Delphi 10.4 to install Help documentation. After that the IDE started reporting missing .bpl packages when starting up, and the MacOS platform had vanished. I haven't got as far as Patches 2 & 3 yet - I'm currently reinstalling Delphi 10.4.
  11. Incus J

    Restore Delphi File Associations?

    Thanks Vandrovnik, In Tools > Manage Platforms, the Help documentation was marked as installed. So I unticked it, then clicked Apply to remove. Next I opened Manage Platforms again, re-ticked Help and Apply to (hopefully) reinstall Help. It seemed to be downloading and installing Help, but at the end announced: "Operation error, Invalid serial number" I restarted Delphi, checked the software is still licensed in the Help About box - that seems OK. So I tried again, and got the same error. Any ideas? I have a current update subscription, which is listed in the License Manager, and 10.4 seemed to be running OK over the weeks I've been attempting to migrate from 10.3. (Edit: The error sometimes changes to "Operation error, Internal check error")
  12. Incus J

    Restore Delphi File Associations?

    I think uninstalling 10.3 may have also uninstalled the Documentation for 10.4. How do I find and run that Repair option?
  13. I'm trying to install a package EmbeddedWebBrowser_Tokyo.bpl in Delphi 10.4 which contains the following procedure: procedure TIEParser.Stop; begin if Assigned(Doc) then Doc := nil; if Assigned(All) then All := nil; FreeAndNil(Element); FUrl := EmptyStr; FBusy := False; Finalize; end; When Building I get a compiler error at FreeAndNil(Element). Incompatible types: TObject and TElementInfo. This makes sense in that Element is a TElementInfo, which is a record, not a TObject. That suggests FreeAndNil may be the wrong thing to use here - but what could I use instead? (not being sure exactly what the author's intention is). I realise _Tokyo indicates the package is for an older release, but it is the most up to date version of the package I can find at present. I had it installed and working OK in Delphi 10.3 - so hopefully I just need to tweak a couple of things?
  14. Thank you Stefan - I'll try commenting out the line and see what happens.
  15. Incus J

    Restore Delphi File Associations?

    Thank you. I haven't found the repair option yet - sometimes software offers repair in the Add/Remove Programs window. But I could only see Uninstall offered there. I tried setting file associations manually via the Windows right-click Open With... option, but couldn't get the setting to stick. Windows kept displaying the Open With... dialog in a never ending loop. Not sure why. Luckily I found an answer in another post on this forum. Just in case it helps someone else: In Delphi IDE Options there is a section listing File Associations. Unticking them all, then ticking them again seems to have fixed the issue. Phew!
  16. OK - don't laugh... I’d like to update my Delphi Rio 10.3.1 installation to 10.3.2 - but I’m not sure how. I’ve had a look on the Help menu, but can’t see a Check For Updates menu item. I’m aware there is a full ISO image available - I run Delphi in a Virtual Machine, so I could mount that. However I’m not looking to install from scratch here - I’d just like to update with the latest improvements and fixes, keeping my current environment intact. Is there a quick straight forward, hassle free way to update an existing installation to 10.3.2?
  17. In XE4 I can save and load IDE layouts using a field on the main toolbar. In Delphi Rio the main toolbar doesn't have these IDE layout controls, and I haven't located an equivalent on the view menu. - Whenever I start Rio, it defaults to a layout with very narrow Structure/Inspector panes about 100 pixels wide. I drag to widen the panes to a useful size, but my adjustments are forgotten when I next start Rio. - In Delphi Options, Save desktop layout is ticked, but this setting seems to be ignored by the IDE. - I can see options for selecting Default, Startup and Debug layouts, but I don't currently understand what to do with them. Can I add my own layouts to the list somehow? What is the difference between Startup and Default? What does a layout set to 'None' mean? Basically, how can I customise the IDE layout in Rio? I'm using a 13" laptop, so need to customise carefully to be efficient/productive with the limited screen space available.
  18. OK progress - If I toggle the Maximise button those Desktop Layout controls appear ... but they appear overlapping the form designer, not in the title bar:
  19. The Delphi Rio UI has the new appearance skin - so I think themes is enabled (I haven't disabled themes that I know of). I'm running Windows 10.
  20. Thanks for the info. I think there might be something wrong with my setup. There are no controls or fields displayed in the title bar on my system, except the usual minimise, maximise and close icons on the right hand side. Is it an option I need to enable somewhere?
  21. How can I move some existing TMenuItems from one TPopupMenu to another, on the same form? In the form designer, I can drag a TMenuItem in the Structure pane - but as soon as I hover over the target TPopupMenu, the cursor changes to a 'no entry' symbol, so I'm unable to drop the item where I'd like it to be. Edit Cut/Paste don't seem to be available for a selected TMenuItem either? I'm probably missing the really obvious. Any ideas?
  22. That worked perfectly - thank you!
  23. Thanks for all the replies. I think I used the web installer to install 10.3.1 - so I'll give that a try (backing up the VM first). Yes, I've found that some projects, especially those originating in older releases (e.g. Delphi 7 or 2010) and then dragged through later releases, start to behave in odd ways. For example the application version and build number settings don't stick - or when compiling, a different version number is assigned to the build than what is displayed in the project Options dialog. It trips up source control too. Perhaps there's an easy way to say 'start a new clean .dpr/.dproj file for this project'? It would be great if the Delphi Help menu included a Check For Updates item, as a quick foolproof way to update within the same series (e.g. 10.3.1 to 10.3.2 etc.)
  24. Incus J

    Windows App Store icon sizes - unplated?

    Experiment 2 : In the Project Deployment Manager, simply rename the Remote Name of the original existing 44x44 icon so it ends '.targetsize-44_altform-unplated'. Rather than trying to provide an additional 44x44 icon. OK that's more promising - the newly generated AppxManifest.xml icon entry matches the renamed file in the Assets folder: <uap:VisualElements ... Square44x44Logo="Assets\Logo44x44.targetsize-44_altform-unplated.png" .../> ...but unfortunately the deployed app still runs showing a tiny plated icon in the Task Bar.
  25. Incus J

    Windows App Store icon sizes - unplated?

    As an experiment I just tried adding a separate copy of the UWP 44x44 icon to the Project Deployment Manager. I named this copy with the extension '.targetsize-44_altform-unplated' as suggested in Microsoft's documentation. Then I set its Remote Path to 'Assets\' so it would appear in the Assets folder, and built the app. 
 No joy - perhaps because the auto-generated AppxManifest.xml file does not contain a path to that icon filename. When the app is run, its Task Bar icon is still very small and surrounded by a grey 'plate'. But maybe I'm heading in the right direction. Anyone have any ideas? Perhaps Delphi includes an option to customise the generated AppxManifest.xml file somewhere?
×