Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 10/20/21 in all areas

  1. David Heffernan

    D11 - A bridge too far.. :-(

    You'd think that a good engineering department would be able to develop programs to a sufficient level of quality that you wouldn't need the public to do the testing by trial and error. I don't agree with the sentiment here that it is not possible to create good quality software without getting the public to test it.
  2. Second but without Egyptian begin/end.
  3. Uwe Raabe

    IDE Code Coverage Plugin available

    @Jim McKeeth As it was a Mercurial repo it went down the drain when Bitbucket dropped Mercurial support. It seems I missed to convert it to Git, but I will see what can be done timely to make it available on GitHub again.
  4. First time I see this phrase. Makes sense.
  5. The code can be further simplified: if Utc.IsZero then Continue; _UtcValid := Utc; ...
  6. FPiette

    D11 - A bridge too far.. :-(

    Could you be more specific about what doesn't work as you expect? Maybe add some screen shots showing the issues? Which component is not showing correctly? If you think Delphi 11 has a problem, please write a report at https://quality.embarcadero.com.
  7. Fred Ahrens

    Where are the FD Enterprise Connectors hiding?

    Wow. We started using CDATA connectors already two years before Embarcadero started bundling it with some of the Delphi SKUs. I wasn't aware that license conditions have changed. I just checked and compared with older EULAs shown during the CDATA component installation and there wasn't a limitation to inhouse distribution only. The 2018 version of the EULA was more similar to typical other component packages - only the typical restrictions did apply. With this license change we'll have to stop using CDATA components. I guess we could afford to pay the costs for upgrading our existing licenses and bring them back to a royalty-free distribution model. Finally it would be a stupid investment as we don't know what other changes might be introduced in the licenses through the backdoor and might render our investment useless (again). I'll be happier with spending that money at other component developers who have a more developer-friendly business model.
  8. Hi, I have a routine that I've been using successfully for a long time to start a process with admin rights elevation. But I've lately noticed that the UAC request is minimized in the task bar, instead I'd like it to appear full-screen as if the user had clicked on the executable himself. I'm using: FillChar(seExecShell, SizeOf(seExecShell), 0); seExecShell.cbSize := SizeOf(seExecShell); seExecShell.Wnd := hndCaller; seExecShell.fMask := SEE_MASK_NOCLOSEPROCESS; seExecShell.lpVerb := PWideChar(RUN_CMD); seExecShell.lpFile := PWideChar(fnFile); seExecShell.lpParameters := PWideChar(strParams); seExecShell.nShow := SW_SHOWNORMAL; Result := ShellExecuteEx(@seExecShell); ShellExecuteEx(@seExecShell); Then to manage the waiting for the the process to terminate: GetExitCodeProcess(seExecShell.hProcess, ExitCode); But even without waiting there is always the issue of the minimized UAC request. Do you think there is a workaround or this is a "by-design" feature of Windows?
  9. FredS

    D11 - A bridge too far.. :-(

    Or offer a Community Edition first? The only problem with that would be that would increase the reported bug count dramatically..
  10. Alberto Fornés

    D11 - A bridge too far.. :-(

    Maybe if you don't have the human resources and / or time to do a good test and find bugs before releasing the product, and you hope that the customers will find and report them, maybe Embarcadero could offer that version at a lower price and establish a more honest relationship.
  11. Rollo62

    D11 - A bridge too far.. :-(

    I hope that I make my first D11 AppStore Upload soon ... thats usable enough if it works as expected
  12. Rollo62

    D11 - A bridge too far.. :-(

    But you have to sometimes, in case of you have to use Android / iOS. Anyway, I find D11 quite stable so far, but I'm still in the process of porting and testing. At least I can say that I have no show-stoppers yet 🙏
  13. mvanrijnen

    D11 - A bridge too far.. :-(

    main problem is that we have now a buggy D11, but they don't look back and fix the D10 version, there a lot of bugs that they could fix, but they just don't. i thought part of the subscription program was that they would fix bugs from a previous release. They entered a path where they never gonna get a (reasonable) bug fixed product. very very disappointed.
  14. dummzeuch

    D11 - A bridge too far.. :-(

    Many of the still existing problems should have been found during the beta tests and should have been fixed before the release. The current state of D11 should be considered public beta, not ready for production, but they charge for it (quite a lot). It's a hen and egg problem really: E.g. The VCL designer is not usable in the current state (IMHO), so why should one use it? But if nobody uses it, the bugs will not be found, reported and fixed.
  15. Choosing between several Break/Continue/Exit's and numerous nested begin-end's, I prefer the former. procedure TBla.SearchValidEntry(out _UtcValid, _TimeByUtc: TMeasurementTime); var i: Integer; Utc: TMeasurementTime; begin for i := 0 to FReader.Count - 1 do begin FReader.Seek(i); Utc := FReader.Data.Time; if Utc.IsZero then Continue; _UtcValid := Utc; _TimeByUtc := FReader.MeasurementTime(i); Exit; end; raise EMyException.CreateFmt(_('%s has no valid entry'), [FReader.DataFilename]); end; I'd do it as above
  16. I don't share this opinion, but hey, readability is highly subjective, isn't it?
  17. A redundant begin/end block around a single Continue, maybe? It just increases the number of lines and clutters the view, IMHO. if Utc.IsZero then Continue else begin _UtcValid := Utc; ...
  18. I'd go for the second alternative, but I'd do it as a function returning a boolean for found/not found and an optional boolean flag on whether to raise an exception or not.
  19. David Heffernan

    D11 - A bridge too far.. :-(

    All prior experience tells us this is what happens with a new release. Now they spend a year or two fixing this round of bugs. We'll, fixing the most significant ones. Some will be with us for a while.
  20. Remy Lebeau

    update indy to use tls 1.2 in c++builder 6?

    My bad, too many *s in the DLL's event handlers. Try this instead: static void __fastcall MyOnWorkBeginHandler(void *AData, TObject *ASender, TWorkMode AWorkMode, __int64 AWorkCountMax) { OnWorkBeginFunc func = static_cast<OnWorkBeginFunc>(AData); func(AWorkMode, AWorkCountMax); } static void __fastcall MyOnWorkEndHandler(void *AData, TObject *ASender, TWorkMode AWorkMode) { OnWorkEndFunc func = static_cast<OnWorkEndFunc>(AData); func(AWorkMode); } static void __fastcall MyOnWorkHandler(void *AData, TObject *ASender, TWorkMode AWorkMode, __int64 AWorkCount) { OnWorkFunc func = static_cast<OnWorkFunc>(AData); func(AWorkMode, AWorkCount); }
  21. let's see what did I break with that the very few occasions that the OTA handles something perfectly procedure TKeyboardBinding.CatchInsert(const Context: IOTAKeyContext; KeyCode: TShortCut; var BindingResult: TKeyBindingResult); begin if not Context.EditBuffer.BufferOptions.InsertMode then begin Context.EditBuffer.BufferOptions.InsertMode := True; BindingResult := krHandled; end; end;
  22. Lachlan Gemmell

    Where are the FD Enterprise Connectors hiding?

    I haven't confirmed it with Embarcadero but I heard they no longer have a bundling deal with CData. I looked into those connectors but decided against using them for licensing reasons. Look closely at the license for those bundled connectors. They are only allowed to be used for your internal software. If you redistribute your software to any third party you have to buy a full license from CData. OK so how much is a full license? Well for just one connector the price varies by connector but the Gmail connector for example is $799 per developer, per year. Now can you distribute to third parties with that license from CData? No you can't. That $799 connector can still only be used for internal use. So how can you distribute to anyone outside your company? The website says contact CData for further pricing. I didn't bother. Buying the full suite of connectors is somewhat more economical. You can get all their FireDAC connectors for $1999 but that's per developer, per year and still doesn't let you distribute software outside your own company. If they were $50 each and you could distribute them as you liked as with almost every other Delphi component I'd consider them. With their licensing as it stands today I find it very difficult to justify purchasing them. See here for the details from CData https://www.cdata.com/subscriptions/firedac/#faq
  23. You can use OnClick normally with this code: uses FMX.Objects, FMX.Math, FMX.Math.Vectors; type TipControl = class(TRectangle) private const DEFAULT_MOVEMENT_TOLERANCE = 4; private FAbsolutePressedPoint: TPointF; FIsMouseDown: Boolean; FIsValidClick: Boolean; FLastMouseActivePoint: TPointF; FMovementTolerance: Single; function IsMovementToleranceStored: Boolean; protected function CheckHasValidClick: Boolean; virtual; procedure Click; override; procedure DoClick; virtual; procedure MouseDown(AButton: TMouseButton; AShift: TShiftState; X, Y: Single); override; procedure MouseMove(AShift: TShiftState; X, Y: Single); override; procedure MouseUp(AButton: TMouseButton; AShift: TShiftState; X, Y: Single); override; public constructor Create(AOwner: TComponent); override; property IsValidClick: Boolean read FIsValidClick; published property MovementTolerance: Single read FMovementTolerance write FMovementTolerance stored IsMovementToleranceStored; end; function TipControl.CheckHasValidClick: Boolean; function CheckIsMouseOver: Boolean; begin Result := FIsMouseOver and TouchTargetExpansion.MarginRect(LocalRect).Contains(FLastMouseActivePoint); end; begin Result := FIsValidClick and FIsMouseDown and CheckIsMouseOver and ((FMovementTolerance = 0) or ((PressedPosition.Distance(FLastMouseActivePoint) <= FMovementTolerance) and (FAbsolutePressedPoint.Distance(LocalToAbsolute(FLastMouseActivePoint)) <= FMovementTolerance))); end; procedure TipControl.Click; begin if Pressed then begin if not CheckHasValidClick then FIsValidClick := False; if IsValidClick then DoClick; end else DoClick; end; constructor TipControl.Create(AOwner: TComponent); begin inherited; FMovementTolerance := DEFAULT_MOVEMENT_TOLERANCE; FLastMouseActivePoint := PointF(-10000,-10000); end; procedure TipControl.DoClick; begin inherited Click; end; function TipControl.IsMovementToleranceStored: Boolean; begin Result := not SameValue(FMovementTolerance, DEFAULT_MOVEMENT_TOLERANCE, TEpsilon.Position); end; procedure TipControl.MouseDown(AButton: TMouseButton; AShift: TShiftState; X, Y: Single); begin FAbsolutePressedPoint := LocalToAbsolute(PointF(X, Y)); FIsValidClick := True; FIsMouseDown := True; FLastMouseActivePoint := PointF(X, Y); inherited; end; procedure TipControl.MouseMove(AShift: TShiftState; X, Y: Single); begin if CheckHasValidClick then begin FLastMouseActivePoint := PointF(X, Y); if not CheckHasValidClick then FIsValidClick := False; end else FLastMouseActivePoint := PointF(X, Y); inherited; end; procedure TipControl.MouseUp(AButton: TMouseButton; AShift: TShiftState; X, Y: Single); var LInvalidPressed: Boolean; begin FLastMouseActivePoint := PointF(X, Y); LInvalidPressed := not CheckHasValidClick; if LInvalidPressed then FIsValidClick := False; FIsMouseDown := False; inherited; end;
  24. David Heffernan

    Love your competitor :-) ..... ?

    That's a strange way to spell C# and Typescript
×