Jump to content

Kryvich

Members
  • Content Count

    402
  • Joined

  • Last visited

  • Days Won

    8

Everything posted by Kryvich

  1. I encountered a strange behavior when using the Continue procedure in a repeat statement. The simplified snippet: program RepContinue; {$APPTYPE CONSOLE} {$R *.res} var i: Integer; begin i := 5; repeat Writeln(i); Dec(i); if i > 0 then Continue; until True; Readln; end. It was expected that this program will print 5 numbers: "5 4 3 2 1". But in fact, it stops immediately after “5”. Is it a compiler error, or is it the way it should be?
  2. @Remy Lebeau It was a simplified snippet to highlight the problem. In my code I tried to use a repeat-until statement instead of a label and a goto statement. This statement is intended to direct an execution back to the top of code block in a special case. Now I add a control variable to bypass the check. repeat var DoRepeat := False; ... if ... then begin ... if ... then begin DoRepeat := True; Continue; end; ... end; ... until not DoRepeat;
  3. @Uwe Raabe Thank you. Although in my shining new Delphi 10.3.2 the wording is a little different: Moreover, in the IDE a little green arrow behind Continue suggests that the control flow will go to the beginning of the cycle.
  4. Kryvich

    Delphi not responding to errors..

    Check Build configuration in your project (Debug, Release). In a new project the build configuration is Debug by default. Then check Runtime errors settings for the current configuration in Project options | Building | Delphi compiler | Compiling. There is good reason to have all three settings (I/O, overflow, range checking) enabled for any type of Build configuration.
  5. Kryvich

    Delphi 10.3 Update 2 available

    On my computer IDE Fix Pack showed 2 errors: And this: So for me it was needed to disable two patches: Variable name: IDEFixPack.DisabledPatches Variable Value: "CodeGenMod.Win32.FastFuncProlog";"VCL.Styles.StyleUtils" After this the messages are gone.
  6. Kryvich

    Pas2js for Delphi

    I have made an adaptation of Pas2js for Delphi compiler. So now it's possible to compile and debug the code of this utility in Delphi IDE. If somebody interested you can find it here: https://github.com/Kryuski/pas2js-for-delphi. The original Pas2js transpiler for Free Pascal is here: http://wiki.freepascal.org/pas2js
  7. Kryvich

    10.3.1 has been released

    When removing say "NO" to "Do you want to remove all Embarcadero RAD Studio 10.3 entries from your registry?"
  8. Kryvich

    10.3.1 has been released

    @mijn Same here. But I saved IDE settings before updating using Migration tool. So I still hope to install Delphi 10.3.1 without reinstalling all components. P.S. I uninstalled Delphi 10.3 and installed Delphi 10.3.1. All components are here. Only IDE Fix Pack had to be reinstalled.
  9. Try overloaded functions function pass(aRec: TMyRecord1): Boolean; overload; function pass(aRec: TMyRecord2): Boolean; overload; ...
  10. I can do it without RTTI, but get a compiler error when using RTTI: procedure TForm1.Button1Click(Sender: TObject); var ctx: TRttiContext; rt: TRttiType; fld: TRttiField; proc: TWndMethod; begin proc := TabSet1.WindowProc; // Compiles and works OK without RTTI ctx := TRttiContext.Create; try rt := ctx.GetType(TControl); fld := rt.GetField('FWindowProc'); ShowMessage(fld.GetValue(TabSet1).TypeInfo.Name); // 'TWndMethod' if fld.GetValue(TabSet1).IsType<TWndMethod> then // True proc := fld.GetValue(TabSet1).AsType<TWndMethod>; // E2010 Incompatible types: 'procedure, untyped pointer or untyped parameter' and 'TWndMethod' finally ctx.Free; end; end; Any suggestions?
  11. @Stefan Glienke Just checked your suggestion, brilliantly! proc := fld.GetValue(TabSet1).AsType<TWndMethod>(); No compiler errors.
  12. Kryvich

    IDE Fix pack for Rio

    @Sue King uData.dfm in binary format opens without error with any version of IDEFixPack installed. But OK... Usually, IDEFixPack is the first plugin I install in a new version of Delphi.
  13. Kryvich

    IDE Fix pack for Rio

    @Sue King Try to save your data module in the text format (right click - Text DFM), and then reopen with the previous version of IDEFixPack installed.
  14. Kryvich

    IDE Fix pack for Rio

    @jbg I rechecked uData.pas, the error is gone. Thank you for your support of the community!
  15. Kryvich

    IDE Fix pack for Rio

    @Sue King Good processor, but it seems it supports SSE4a only too.
  16. Kryvich

    IDE Fix pack for Rio

    Of course, I can debug Delphi in Delphi. There is an exception: The debugger stopped here: 0B69F215 F30F6F0A movdqu xmm1,dqword ptr [edx] 0B69F219 660F3817CB ptest xmm1,xmm3 // <--------- here 0B69F21E 0F8582000000 jnz $0b69f2a6 0B69F224 660F6FE1 movdqa xmm4,xmm1
  17. Kryvich

    IDE Fix pack for Rio

    @jbg I've tested on AMD Phenom II X4 955. Yes, it seems that this processor supports SSE4a only.
  18. Kryvich

    IDE Fix pack for Rio

    That's strange. I disabled all third party design packages, but the error is still here. I just open uData.pas without creating any project. See the video: https://youtu.be/RfB0Lo4ggL4 May be somebody else can test it on his/her computer.
  19. Kryvich

    IDE Fix pack for Rio

    Delphi shows "Error creating form: External exception C000001D." when I try to open one of my data modules. When I uninstall the IDE Fix Pack, the error disappears. I deleted all the code from the module, left only one memory table with a data source object, and the error is still here. Please see the files attached. Tested on Delphi Win 32-bit. IDE Fix Pack dev 2019-01-31-1645 for Delphi 10.3. uData.ZIP
  20. Kryvich

    operator overloding Equal vs Multiply

    @Eugine Savin Is it possible to rewrite your C++ snippet as: MyArray myArr; if (myArr == {0} && myArr == {0, 0}) {} As I understand you need to inline array constants to the Delphi expressions.
  21. Kryvich

    Splash screen doesn't show icon in taskbar

    @Mike Torrettinni Check my demo app (attached). Works as needed in Windows 7 (I haven't Win10 here, sorry). Look at the project source: program SplashApp; uses SysUtils, Vcl.Forms, uSplashMain in 'uSplashMain.pas' {Form1}, uSplashForm in 'uSplashForm.pas' {Form5}; {$R *.res} begin Application.Initialize; Form5 := TForm5.Create(nil); try Application.MainFormOnTaskbar := True; Form5.Show; Form5.Update; Application.CreateForm(TForm1, Form1); Sleep(3000); finally Form5.Free; end; Application.Run; end. Form5 is a splash form, and Form1 is a app's main form. Also check menu Project | Options | Application | Forms. The splash Form5 is in the list of available forms (the right list). SplashApp.zip
  22. Kryvich

    Splash screen doesn't show icon in taskbar

    I tried this suggestion for Delphi 7, and it still works in Rio and Windows 7. In TForm5: protected procedure CreateParams(var Params :TCreateParams); override; ... procedure TForm5.CreateParams(var Params: TCreateParams); begin inherited; Params.ExStyle := Params.ExStyle OR WS_EX_APPWINDOW; end;
  23. Kryvich

    operator overloding Equal vs Multiply

    To tell the compiler the type of operand, I can advise the following: Replace array of Integer with TArray<Integer>. (In 10.3 Rio it is the same type.) Create a helper function: function AsArray(const [ref] Arr: TArray<Integer>): TArray<Integer>; inline; begin Result := Arr; end; ... b := r = AsArray([10]); // It compiles
  24. Kryvich

    Rio quality disappoint

    If VS is so great, then why RemObjects create Water - their own IDE for Windows?
×