Jump to content

Uwe Raabe

Members
  • Content Count

    2910
  • Joined

  • Last visited

  • Days Won

    169

Posts posted by Uwe Raabe


  1. 58 minutes ago, alogrep said:
    Embarcadero, can you please do your (paid work)???
     Why do I have to spend days fixing your bugs? 

    You know that Embarcadero is barely monitoring this forum, don't you?

    If you want your rant being heard better contact a PM or sales representative.

     

    1 hour ago, alogrep said:

    Can you test your installation app maybe 20 or 30 times before selling it to me and others"?

    What do you think is done during beta tests? The actual number of installation tests most likely exceeds your request of 20 or 30 by magnitude. Unfortunately there are still some scenarios not covered by the testers. The best way to get these covered is to analyze the cause for the error and file a QP report with that information.

     

    Thinking about past events with a similar error: Did you by any chance make use of the "Remove unused paths" action in the library editor?

    • Like 1

  2. 1 hour ago, Attila Kovacs said:

    For me it sounds like an indexing task, store the data to the integer and not the opposite.

    I cannot speak for Tommi, but I had a need for such a data structure where ranges of numbers were given in string format like "2,3,5,7-11,15-31" and the numbers going up to 6 digits. The actual testing for a given number being part of that was implemented by parsing the string each time, which turned out to be a bit time consuming. So we refactored it using a data structure similar to that shown above. 

    • Like 1

  3. A pretty simple implementation (assuming ranges are non-overlapping and added in the right order) could look like this:

    type
      TRanges = class
      private
        FLow: TArray<Integer>;
        FHigh: TArray<Integer>;
        FType: TArray<Integer>;
      public
        procedure AddRange(ALow, AHigh, AType: Integer);
        function Contains(AValue: Integer; out AType: Integer): Boolean;
      end;
    
    procedure TRanges.AddRange(ALow, AHigh, AType: Integer);
    begin
      FLow := FLow + [ALow];
      FHigh := FHigh + [AHigh];
      FType := FType + [AType];
    end;
    
    function TRanges.Contains(AValue: Integer; out AType: Integer): Boolean;
    var
      idx: Integer;
    begin
      Result := False;
      if not TArray.BinarySearch<Integer>(FLow, AValue, idx) then begin
        if idx < 1 then Exit;
        Dec(idx);
      end;
      if AValue <= FHigh[idx] then begin
        AType := FType[idx];
        Result := True;
      end;
    end;
    

     

    • Thanks 1

  4. 1 hour ago, Remy Lebeau said:

    There is nowhere you can "put the app" that will make the OS run your app during sleeps/wakeups.

    You could execute the app with a Windows Task Scheduler event triggered by the different conditions. The tricky part is to find the appropriate event ids, where The Kernel-Power Event Provider can be helpful. It also is possible that the app doesn't get the time to execute its task before the system goes to sleep and finishes it after waking up.


  5. Sorry, that is only an excuse to not report bugs. It will only lead to the ability to lament on bugs not being fixed, while the reason they are not fixed is not being reported in the first place.

     

    While there indeed exist bugs that are not fixed in decades if ever, there are a lot more being fixed only because they were reported. F.i. my statistics list 145 reported bugs, from whom 30 are still open, while only 8 were closed as Works as expected.

     

    Reporting bugs is necessary for having them fixed - it may not be sufficient, but it just is necessary!

     

    So let me quote Thomas here:

    49 minutes ago, dummzeuch said:

    If nobody files a bug report, there will be no fix.

     


  6. 23 minutes ago, Gary said:

    I could not get Embarcadero to do it no matter who I talked to.

    If that is indeed the case you should escalate this until you succeed. This would be the first case where Embarcadero actually denies the bump even when the request was made through the required channels.

     

    I have been involved in a couple of cases in the German Delphi-PRAXiS where the hint contacting Embarcadero Germany was sufficient to get it done. I don't know which sales office is responsible for your case, but I suggest pestering them on and on to get this straight.


  7. Although it has been mentioned before: The license isn't invalidated after subscription has run out. It keeps working and it can even be installed on another system. In case the installation counter needs to be bumped one has to contact Embarcadero Sales (in contrast to Support while on subscription) to get this increased. I have not heard of anyone where that has been denied.

    • Like 3

  8. 57 minutes ago, Sherlock said:

    sadly it did not take flight.

    Indeed, a bit sad. I still have hope that this will get some traction shortly.

     

    It might be worth to know that a fork of that repo, namely https://github.com/UweRaabe/Delphi-Unit-Tests, is actually part of the regression tests run by Embarcadero. It also has a couple of contributors as well as branches, albeit lacking some activity, too.

    • Like 1
    • Thanks 1

  9. The point is that if you want to test for invalid parameters, you have to pass them inside another test method instead of a separate test case.

     

    Currently we have one test method

    procedure TestAdd(Value1, Value2, _Result: Int64);

    Unfortunately we don't have the implementation, so I have to do a bit of guessing here:

    procedure TMyTestClass.TestAdd(Value1, Value2, _Result: Int64);
    begin
      Assert.AreEqual(_Result, Add(Value1, Value2));
    end;

    Whatever is passed to the TestAdd method, the parameters given to the Add method are always valid types.

     

    To test some invalid parameter we need another test method TestAddInvalidParams passing invalid parameters to the Add method.

    procedure TMyTestClass.TestAddInvalidParams;
    begin
      // call Add with some invalid params and chec if it fails
    end;

    Passing invalid parameters to TestAdd via a TestCase attribute only tests the capability of DUnitX to detect invalid parameters in a TestCase attribute. It does not test Add to fail with invalid parameters.

     

    BTW, whether you even can pass invalid parameters to Add depends on the declaration of Add which we cannot see.

    • Like 1
×