Jump to content

Joe Sansalone

Members
  • Content Count

    92
  • Joined

  • Last visited

Posts posted by Joe Sansalone


  1. Hi,

     

    When compiling/deploying to iPhone, Delphi freezes at

    the step when deploying *.dSYM file.

     

    How do I fix this?

     

    Delphi 11.1  (Version 28.0.44500.8973) 

    Xcode: 13.4.1

    macOS: 12.2.1

    PAServer: 13.1.11.0

    sdk: iOS 15.5

    device: iOS 15.5

    Delphi_Freeze.png


  2. Hi,

     

    I'm writing a stored procedure to get a list of records AND

    replace some of those records with other records IF they have

    an "override" - which is indicated by other columns.

     

    When I use the stored procedure it correctly REMOVES the record

    that has an override BUT does not replace it with its override record.

     

    This indicates that I'm not writing the correct code to get new

    record and then Suspend to return that record.

     

    Below is my stored procedure ....

     

    Does anybody see the problem?

     

     

    Joe

     

     

     

    ALTER PROCEDURE OVERRIDE_LIST 
    RETURNS
    (
      ID NUMERIC(18, 0),
      DBID INTEGER,
      TABLENAME VARCHAR(15),
      DIMNAME VARCHAR(20),
      DIMVALUE VARCHAR(30),
      RECNO INTEGER,
      DATA BLOB SUB_TYPE 0 SEGMENT SIZE 1024,
      TEXT BLOB SUB_TYPE TEXT SEGMENT SIZE 80,
      REFID NUMERIC(18, 0),
      ISROOT BOOLEAN
    )
    AS
    declare variable I NUMERIC(18, 0);
      declare variable R NUMERIC(18, 0);
    begin
      For select ID, DBID, TABLENAME, DIMNAME, DIMVALUE, RECNO, DATA, TEXT, REFID, ISROOT
      From DN
      into :ID, :DBID, :TABLENAME, :DIMNAME, :DIMVALUE, :RECNO, :DATA, :TEXT, :REFID, :ISROOT
      Do
      begin
        i = :ID;
        R = 0;
        execute procedure Override :i Returning_Values :R;

        if (:R is not null) then
        begin
          for select ID, DBID, TABLENAME, DIMNAME, DIMVALUE, RECNO, DATA, TEXT, REFID, ISROOT
          From DN where ID = :R
          into :ID, :DBID, :TABLENAME, :DIMNAME, :DIMVALUE, :RECNO, :DATA, :TEXT, :REFID, :ISROOT
          do
            Suspend;
        end
        else
          Suspend;    
      end
    end^


  3. Things were working before.

    I think there was an update for Xcode to install command line tools

    and also I updated to the latest 11.1 patch which required a re-install of PAServer.

     

    The connection to PAServer is fine.

     

    Don't know what this error is:

     

    [PAClient Error] Error: E6664 xcode-select: error: tool 'actool' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

     

     


  4. Hi,

     

    I need to add a license to Delphi. But the computer does not have access

    to the licensing server via the internet because it has restricted internet access (corporate environment).

     

    Can I register the license on some website, then get some file and copy it to that machine?

     

    Thanks,

    Joe


  5. Ok. Thanks.

     

    I noticed that some packages are installed without any components.

    And they are not used by other packages.

    Example:  AWS SDK (from GetIt).

     

    In a case like AWS SDK, the package doesn't need to be installed, right?

    If compiling without runtime packages, we are accessing DCUs or PAS files.

    In the case of compiling with runtime packages, we simply need access to the bpl/dcp files.

     

    Why are those packages installed?

     


  6. @Sriram

     

    We have 1 column that we need to encrypt.  Although it will be in a very used table.

    And we are thinking of encrypting the entire database too.

    5 to 10% overall performance impact is not bad.

     

    For our website, we do custom connection pooling.

    But also have direct connections to the server, via desktop apps.

     

    Even a full 10% hit is ok.

     

    Thank you for the detailed reply.  Useful to have as reference.

    Good to know that using Change Views also helps reduce impact because of encryption.

     

    Thank you.


  7. Jeff, 

     

    CachedUpdates is true.  And I had the rtDeleted in FilterChanges property. 

    I compiled again with 11.1 (just in case) and connected to a InterBase 2017 server (version 13.4.0.350).

     

    Are you sure you were using Interbase 2017?  

     

    I don't see deletes (tried both with DeltaMerge and DataMerge in the EventAlerter).

     

    It works with Interbase 2020.

     

    What exact version are you using with Interbase 2017?

     

    Joe

     

     


  8. After downloading the Web Install file, I ran it and soon after popped up some 

    error (I don't remember what it was), I clicked continue and it kept popping up

    some error even though it kept continuing.

     

    At some point, it would not continue ... so I ran the Web Install file again.

    That's when it installed Delphi ... but did not keep registry entries.


  9. Hi,

     

    (Delphi 11, also tried Delphi 10.4)

     

    I'm running an application 24/7 that works for a few weeks and

    then gets STUCK waiting for a response from executing a REST Client Request.

     

    No exception.  No timeout.  Does not return from 

      FRESTRequest.Execute

     

    The server that is being Requested, gets the request

    AND does respond.


    Below is the code.  

    The ModifyCall procedure gets executed many times and works before hitting this problem.

    Sometimes restarting the application is not enough to fix the problem. I need to restart windows!

     

    1. Can I force a max timeout?  So that if it gets stuck, at least I can handle the timeout.

     

    2.  Any idea why this would occur?

     

     

    Joe

     

     

     

     

     

    constructor TTwilioAPI.Create(aAccountSID, aPassword: string);
    begin
      inherited Create;
      FTwiML := TTwilioML.Create;

      FAccountSID := aAccountSID;
      FPassword := aPassword;

      FRESTClient := TRESTClient.Create('https://api.twilio.com/2010-04-01');
      FRESTRequest := TRESTRequest.Create(FRESTClient);
      FRESTResponse := TRESTResponse.Create(FRESTClient);
      FHTTPBasicAuthenticator := THTTPBasicAuthenticator.Create(FAccountSID, FPassword);

      FRESTClient.Authenticator := FHTTPBasicAuthenticator;
      FRESTRequest.Client := FRESTClient;
      FRESTRequest.Response := FRESTResponse;
      FRESTClient.ContentType := 'application/x-www-form-urlencoded';


      FRESTClient.SecureProtocols := [THTTPSecureProtocol.TLS12, THTTPSecureProtocol.TLS11, THTTPSecureProtocol.TLS1];

      FBaseURL := cBaseURL;  // default
    end;
     

     

     

     

    function TTwilioAPI.ModifyCall(aTwiML, aCallSid: string; sync: boolean = false): boolean;
    var statusCode: integer;
    begin
      result := True;
      FRESTRequest.Params.Clear;
      FRestRequest.Resource :=  '/Accounts/{AccountSid}/Calls/{Sid}.json';

      FRestRequest.Params.AddItem('AccountSid', FAccountSID, TRestRequestParameterKind.pkURLSEGMENT);
      FRestRequest.Params.AddItem('Sid', aCallSid, TRestRequestParameterKind.pkURLSEGMENT);
      FRestRequest.Params.AddItem('Twiml', aTwiML, TRestRequestParameterKind.pkGETorPOST);

      FRESTRequest.Method := rmPOST;
      try
        FRESTRequest.Execute;     <=============== does not Return from this
      except on E:EHTTPProtocolException do  
        begin
          if Assigned(FLog) then FLog.WriteTimeStamp(lctHTTP, lptImportant, 'ModifyCall API: error executing request');
          result := false;
          raise ETwilioCallError.Create('HTTP protocol exception');
        end;

      on E:ERESTException do  
        begin
          if Assigned(FLog) then FLog.WriteTimeStamp(lctHTTP, lptImportant, 'ModifyCall API: ERESTException');
          result := false;
          raise ETwilioCallError.Create('HTTP protocol exception');
        end;

      end;

      statusCode := FRESTResponse.StatusCode;
      //TODO: IF 400 or 500 raise Exception ETwilioError

      FResponseData := TJSON.JsonToObject<TTwilioResponseObj>(TranslateJsonNames(FRESTResponse.Content));

      if Assigned(FLog)  then FLog.WriteTimeStamp(lctHTTP, lptNormal, 'ModifyCall API response: status: ' +
                                    FResponseData.status + '  sid(call): ' + FResponseData.sid + '   statusCode: ' + InttoStr(statusCode)
                                    + '    raw response:' + FRESTResponse.Content + '  message: ' + FResponseData.msg);

     

      if (statusCode = 400) then
      begin
        if Pos('Call is already in transferring', FResponseData.msg) > 0 then
        begin
          if Assigned(FLog) then FLog.WriteTimeStamp(lctHTTP, lptImportant, 'ModifyCall API - BUG');
        end;

        if Pos('Call is not in_progress', FResponseData.msg) > 0 then
          raise ETwilioHungup.Create('No call in progress')
        else
          raise ETwilioCallError.Create('status code 400');
      end;


    end;
     


  10. I also noticed something in Quality Central that referred to a similar issue.  

    Updated to latest versions of IB2017 and IB2020 just recently (per Sriram's suggestion) .. still same problem.

     

    I use IBX.  

    Just recently used FireDAC because of FDEventAlerter/Subscription/DataMerge ability.

     

    Is updating a dataset in IBX via Subscriptions/events similar to how FireDAC does it?

    Where can I read up on IBX and Subscriptions?

     

     


  11. Hi,

     

    I'm using the sample project Change Views,Generic that came with Delphi 11.

    I changed the EventAlerter to use DataMerge instead of DeltaMerge, so that the query dataset is up to date exactly

    like in the database.

     

    It works with Interbase 2020 server perfectly (inserts, updates and deletes).

     

    But if it's an Interbase 2017 server, deletes do NOT get processed.

    (inserts and updates work properly)

     

    Is this a bug?

     

    Joe

     

     


  12. Interbase 2017 server, with Change Views Generic sample Delphi 11

    does NOT handle deletes properly.

     

    But changing the server to IB2020 makes it work.

     

    Any work around?

×