

dmitrybv
Members-
Content Count
94 -
Joined
-
Last visited
Community Reputation
5 NeutralTechnical Information
-
Delphi-Version
Delphi 12 Athens
Recent Profile Visitors
The recent visitors block is disabled and is not being shown to other users.
-
Runtime error 217 when launching Delphi FMX Linux 64-bit application (RAD Studio 12, Ubuntu 22.04)
dmitrybv replied to dmitrybv's topic in Cross-platform
If I place a breakpoint in the initialization section of the very first unit in my project, the debugger hangs when exiting the method procedure System.StartUpCopy.CopyStartUpFiles; -
Runtime error 217 when launching Delphi FMX Linux 64-bit application (RAD Studio 12, Ubuntu 22.04)
dmitrybv posted a topic in Cross-platform
I’m having trouble running my Delphi FMX application on Linux 64-bit (Ubuntu 22.04.4 LTS, FmxLinux 1.78). The application runs fine on Win32, Win64, Android-64, macOS-64. On Linux 64-bit, when I try to start it in debug mode, the IDE immediately stops execution without showing any error. PAServer doesn’t print anything either. A simple test app (just one form with a button) runs without issues on Linux. My real project has several dozen forms. When I run it in debug mode in Embarcadero RAD Studio 12 (Version 29.0.55362.2017), the debugger just stops with no messages. If I try “Run without debugging”, PAServer prints: Runtime error 217 at 00000000012AFEFC According to ChatGPT, this usually means the crash happens inside the initialization section of one of the units included in the project’s uses. 👉 My question: What’s the best way to identify which unit or initialization block is causing the crash on Linux, and how can I debug this further? -
Refactor – Rename (Type, Field, Property) Alternatives in Delphi 13
dmitrybv posted a topic in Delphi IDE and APIs
In previous versions of Delphi, there was a Refactor → Rename menu for renaming types, fields, and properties across the entire project. In Delphi 13, this menu seems to be missing. I tried using MMX Code Explorer, but I couldn't find an equivalent. MMX offers Rename in Scope, but it only works at the unit level and does not rename the identifier throughout the entire project. Are there any alternatives or tools in Delphi 13 that provide full-project renaming functionality similar to the old Refactor → Rename? -
FMX Frame always marked as modified when opened (RAD Studio 12.3)
dmitrybv replied to dmitrybv's topic in Delphi IDE and APIs
This issue is easily reproducible, was reported back in 2023 and has a high priority (Priority: Major), although it is still not resolved. This is strange. -
FMX Frame always marked as modified when opened (RAD Studio 12.3)
dmitrybv posted a topic in Delphi IDE and APIs
Hi, Embarcadero® RAD Studio 12 Version 29.0.55362.2017 I noticed a strange behavior in RAD Studio 12.3 (FireMonkey Application): Whenever I open my custom FMX Frame in the IDE designer, it is immediately marked as modified. The IDE then asks me to save changes when I close the frame, even though: the frame is completely empty (no components, no property changes), no changes were made manually, saving does not actually alter the .fmx or .pas files (their timestamps remain the same). The issue only happens with Frames. With regular Forms, this does not occur. I cannot understand whether this is an intended feature of the IDE (some hidden metadata handling) or a bug. Has anyone else noticed the same behavior? -
You may be wrong. There is no native control like TDBLookupComboBox in Windows OS. That is why Owner-drawn Control – TDBLookupComboBox is written in VCL.
-
Hello everybody. What is the equivalent of Vcl.TDBLookupComboBox in FMX?
-
Android 64-bit Package Compilation Fails in Delphi 12 After SDK Update Prompt ([Error] Failed)
dmitrybv posted a topic in Cross-platform
Product and Version: Embarcadero® RAD Studio 12 — Version 29.0.55362.2017 Installed from: RADStudio_123_2017_E9E8FB1D4F9F.iso (7,256 MB) Platform: Android 64-bit Issue Description: When attempting to compile a runtime package for the Android 64-bit platform in Delphi 12, I receive the following warning: Would you like to update the platform SDK now? Regardless of whether I choose Yes or No, the build immediately fails with the error: [Error] Failed In Tools → Options → Deployment → SDK Manager → Android 64-bit, several fields (e.g., SDK paths or tools) are marked with exclamation marks (!), although I did not encounter any errors during installation. File sizes of installed Android SDK components: CatalogRepository\AndroidSDK-2525-23.0.55362.2017 — 159 MB CatalogRepository\AndroidSDK-NDK-23.0.55362.2017 — 981 KB The SDK and NDK appear to be partially installed or missing components, but no installation errors were reported. Questions: What is the reason for the exclamation marks in the SDK Manager? Why does the build fail with [Error] Failed after the SDK update prompt? How can I fully verify and repair the Android 64-bit platform SDK installation? What I’ve tried: Clicking Yes or No on the SDK update prompt makes no difference — the build still fails. I haven’t manually modified the SDK folders. The SDK was installed by the ISO installer without any visible issues. Any guidance on resolving this issue would be appreciated. -
programmatically determine the edition of RAD Studio 12.3
dmitrybv replied to dmitrybv's topic in Delphi IDE and APIs
I tested RAD Studio 12.1 Community Edition. For this edition, the "Detail" properties of the bds.exe contain the value “Personal”. I don’t know what the value Personal means and whether it is related to the concept of Edition at all. -
programmatically determine the edition of RAD Studio 12.3
dmitrybv replied to dmitrybv's topic in Delphi IDE and APIs
Yes, in a real application I use the registry branch Computer\HKEY_CURRENT_USER\Software\Embarcadero\BDS\23.0 to get the value for the App parameter that stores the path to bds.exe I try to keep the demo code to a minimum so that it is clear what problem I am discussing here. -
programmatically determine the edition of RAD Studio 12.3
dmitrybv replied to dmitrybv's topic in Delphi IDE and APIs
It seems that the solution with "bds.exe /ProductInfo:SKU" is suitable, but it does not work in the classic function of outputting the results of the StdOutput work via CreatePipe. Can you tell me how to correctly redirect the results passed to StdOutput to TMemo? I am trying to use the following code, but TMemo remains empty. At the same time, if you create a BdsGetSKU.Cmd file with the text C:\RADStudio\23.0\bin\bds.exe /ProductInfo:SKU and run it in cmd, the text "Enterprise" is output in cmd. procedure RunConsoleAppAndCaptureOutput(const ACommandLine, AWorkingDir: string; AMemo: TMemo); var SecurityAttr: TSecurityAttributes; ReadPipe, WritePipe: THandle; StartupInfo: TStartupInfo; ProcessInfo: TProcessInformation; Buffer: array[0..255] of AnsiChar; BytesRead: DWORD; AppRunning: DWORD; Output: TStringStream; CommandLineMutable: array[0..1023] of Char; begin AMemo.Clear; SecurityAttr.nLength := SizeOf(TSecurityAttributes); SecurityAttr.bInheritHandle := True; SecurityAttr.lpSecurityDescriptor := nil; if not CreatePipe(ReadPipe, WritePipe, @SecurityAttr, 0) then begin AMemo.Lines.Add('Failed to create channel.'); Exit; end; FillChar(StartupInfo, SizeOf(StartupInfo), 0); StartupInfo.cb := SizeOf(StartupInfo); StartupInfo.hStdOutput := WritePipe; StartupInfo.hStdError := WritePipe; StartupInfo.dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW; StartupInfo.wShowWindow := SW_HIDE; StrPLCopy(CommandLineMutable, ACommandLine, Length(ACommandLine) + 1); if not CreateProcess( nil, CommandLineMutable, nil, nil, True, 0, nil, PChar(AWorkingDir), // <- working directory StartupInfo, ProcessInfo ) then begin AMemo.Lines.Add('Failed to start process.'); CloseHandle(ReadPipe); CloseHandle(WritePipe); Exit; end; CloseHandle(WritePipe); Output := TStringStream.Create; try repeat BytesRead := 0; if ReadFile(ReadPipe, Buffer, SizeOf(Buffer) - 1, BytesRead, nil) and (BytesRead > 0) then begin Buffer[BytesRead] := #0; Output.WriteString(String(AnsiString(Buffer))); end; GetExitCodeProcess(ProcessInfo.hProcess, AppRunning); until AppRunning <> STILL_ACTIVE; // Read the rest while ReadFile(ReadPipe, Buffer, SizeOf(Buffer) - 1, BytesRead, nil) and (BytesRead > 0) do begin Buffer[BytesRead] := #0; Output.WriteString(String(AnsiString(Buffer))); end; AMemo.Lines.Text := Output.DataString; finally Output.Free; CloseHandle(ReadPipe); CloseHandle(ProcessInfo.hProcess); CloseHandle(ProcessInfo.hThread); end; end; procedure TForm1.Button1Click(Sender: TObject); begin // RunConsoleAppAndCaptureOutput(Edit1.Text, 'C:\RADStudio\23.0\bin', Memo1); // RunConsoleAppAndCaptureOutput('cmd /c dir', 'C:\Windows', Memo1); RunConsoleAppAndCaptureOutput('C:\RADStudio\23.0\bin\bds.exe /ProductInfo:SKU', 'C:\RADStudio\23.0\bin', Memo1); // RunConsoleAppAndCaptureOutput('C:\RADStudio\23.0\Projects\CommandLineInterpreter\BdsGetSKU.Cmd /ProductInfo:SKU', 'C:\RADStudio\23.0\bin', Memo1); end; -
programmatically determine the edition of RAD Studio 12.3
dmitrybv replied to dmitrybv's topic in Delphi IDE and APIs
dcc32.exe does not generate any error. You can understand that something went wrong only at the end of the installation, when bpl packages are registered in the registry for IDE. dcc32.exe does not create bpl packages and then it is already clear. But I want to give the user information about the impossibility of installation before the installation process begins. -
programmatically determine the edition of RAD Studio 12.3
dmitrybv replied to dmitrybv's topic in Delphi IDE and APIs
dcc32.exe is present in RAD Studio 12.3 Community Edition. It runs without errors. After running dcc32.exe %ERRORLEVEL% = 0. -
programmatically determine the edition of RAD Studio 12.3
dmitrybv replied to dmitrybv's topic in Delphi IDE and APIs
Actually I need to determine the edition of RAD Studio from an external program, from my installer program, in order to understand whether I can use dcc32.exe to compile the library source codes to generate packages for installation or not. RAD Studio 12.3 Community Edition does not support compilation via dcc32.exe. I am trying to understand how I can determine in advance in the LibInstaller program whether I can generate packages and install the library in the IDE or not. -
programmatically determine the edition of RAD Studio 12.3
dmitrybv replied to dmitrybv's topic in Delphi IDE and APIs
1. RTLVersion and RAD Studio Edition (Professional, Enterprise, Community Edition) are different concepts. 2. RTLVersion for RAD Studio 12.3 cannot be called from an external program.