Jump to content

Uwe Raabe

Members
  • Content Count

    2490
  • Joined

  • Last visited

  • Days Won

    143

Posts posted by Uwe Raabe


  1. What prohibits you to take the files installed in CatalogRepository?

     

    Even a standalone installer would not make a difference when you are using a dedicated repository.

     

    Let me explain my workflow with 3rd party libraries:

    1. install as usual (Setup or GetIt) and  remove any unwanted references (mostly search paths) in Delphi inserted during the installation
    2. if not done before, create a new repository at a convenient place and create a vendor branch
    3. switch the repository to vendor branch
    4. copy the files from the installation to the repository and commit to vendor branch
    5. merge vendor branch into main branch.

    Depending on your situation you may get away with global library repositories used for all projects, but I prefer local sub-repositories for each project. I also remove any 3rd party library folders in the IDE and have the local libraries added to the project search path.

    • Like 1

  2. 48 minutes ago, Attila Kovacs said:

    How can I install Delphi without their running servers?

    You still can install from ISO.

     

    49 minutes ago, Attila Kovacs said:

    What happens when these servers are gone forever for any reason?

    I suggest converting any Workstation License into a Named Network License and setting up your own ELC server. (see Software Licensing and Management)

     

    IMHO, all professional developers, especially companies, using Delphi should already have done this.

    • Like 3

  3. 39 minutes ago, Lars Fosdal said:

    Has anyone found a good solution to this?

    Don't use GetIt to handle your library sources.

     

    Although I may use GetIt to install some of its libraries, I always put those into my own repository where they can be accessed from the build server. 

    • Like 1

  4. During the upgrade process the unknown resources are moved to the .otares file and the dpk gets a reference for that. The recommended process in such a case is to use decent resources for the unknown ones and get rid of the .otares and the corresponding entry in the dpk.

     

    In the majority of cases the otares only contains a resource named PLATFORMTARGETS, which references targets no longer supported by the newer Delphi version. A typical otares file in that case has 96 bytes and can just be removed completely. Unfortunately some library vendors and open source libraries didn't grasp this and deliver these otares files.

     

    The warning you are referring to may be caused by something else. Perhaps one or more of those unknown resources were later added as regular resources to the project, which leads to the duplicate warning. The linker just detects resources with the same name, which cannot be resolved into one module.

    • Thanks 4

  5. When a project is loaded all changes are local to the project. 

    When no project is loaded all changes should be permanent.

     

    This has been the behavior since the beginning of Delphi, but that volatile unchecking bug crept in some time ago. Versions up to Delphi 7 even had a checkbox to make it permanent while a project is open (sorry, I only have a German D7 at hand)

    image.thumb.png.c458fffb7b8fce7acf3b959120a81876.png

    • Like 2

  6. 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

  7. 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

  8. 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
×