Jump to content

Uwe Raabe

Members
  • Content Count

    2750
  • Joined

  • Last visited

  • Days Won

    162

Everything posted by Uwe Raabe

  1. 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.
  2. 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;
  3. Uwe Raabe

    Is there any edit/memo which allows multiselect?

    SynEdit has a feature request for Multi-Select, but I am not sure if that was meant for this use case.
  4. AFAIK, that is only sent to applications already running. I have not tested, but when the scheduler executes the task the sleep probably cannot be avoided anymore. It should be doable to check this, but I refused to invest that time.
  5. Uwe Raabe

    Firebird 3.0 problem

    Maybe this is the time to prepare a minimal test case so that we can reproduce.
  6. Uwe Raabe

    Firebird 3.0 problem

    You can try to set the connection offline during the backup. For more information see Offlining Connection (FireDAC)
  7. Uwe Raabe

    MMX Parsing Errors

    This seems to be an error in the parser. I will have a look at it when time allows.
  8. Not that I am aware of.
  9. 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.
  10. Uwe Raabe

    INTAServices.AddMasked seems to be broken in Delphi 12

    Not until you mentioned it. Will be fixed in the next release.
  11. Uwe Raabe

    INTAServices.AddMasked seems to be broken in Delphi 12

    I have dropped using AddMasked for quite a while in favor of AddImages using a T(Virtual)ImageList and TActionList in dedicated datamodules. You can find that approach in https://github.com/UweRaabe/DelphiCodeCoveragePlugin. Note that unloading and reloading a plugin may scramble the image mapping. Alas I have not found a reliable test case up to now.
  12. 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:
  13. Uwe Raabe

    Delphi 12 and *.dsv

    The docs explains it:
  14. 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.
  15. Uwe Raabe

    Your experience with custom styles - do they work well?

    Ehm, what were your hope based on then? Random mutations of code caused by solar flares?
  16. 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.
  17. Uwe Raabe

    Your experience with custom styles - do they work well?

    Can you list the corresponding QP issues. I would like to have a look at that to push it a bit.
  18. 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.
  19. Uwe Raabe

    Strang problem with Delphi 12 IDE

    AFAIK, that is simply not meant to work in the first place.
  20. 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.
  21. Uwe Raabe

    Create a new instance of a generic class

    Even if it would compile this way, it is quite possible that it does not do what you expect it to do: result := tSomeclass<T>(Classtype).Create(fSomeParameters);
  22. Seems your are trying to test the test method or even DUnitX here instead of the method of your math unit.
  23. Uwe Raabe

    Extract from encrypted ZIP?

    While Delphi 12 supports ZIP encryption, the actual encryption algorithm has to be provided by the developer itself or a library implementing the new IZipCryptor interface. For the common PKWARE Zip 2.0 encryption (see APPNOTE.TXT) an implementation can be found in PKWAREZipCryptor.pas. The usage is shown in the following example, which extracts all files from an encrypted zip file: var bytes: TBytes; fileName: string; zipFile: TZipFile; begin zipFile := TZipFile.Create; try zipFile.Cryptor := TPKWAREZipCryptor.Create; zipFile.Password := cPassword; zipFile.Open(zipFileName, zmRead); for var I := 0 to zipfile.FileCount - 1 do begin fileName := zipFile.FileNames[I]; zipFile.Read(I, bytes); TFile.WriteAllBytes(fileName, bytes); end; zipFile.Close; finally zipFile.Free; end; end;
  24. Uwe Raabe

    Delphi 12 Athens Refactoring Broken

    https://docwiki.embarcadero.com/RADStudio/Athens/en/What's_New#Moving_Deprecated_Features
×