Jump to content

Dmitry Arefiev

  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by Dmitry Arefiev

  1. Dmitry Arefiev

    InterBase or Firebird?

    1) DB admin features - PostgreSQL 2) DB developer features - PostgreSQL / FireBird 3) Encryption, and ... speed - InterBase. On many tests IB outperforms FB, at least. 4) Mobile platforms - InterBase 5) Change Views is unique InterBase feature If to put SQLite into this list, then if you does not need multi-user access, scalability, DB is relatively small, then SQLite is the right way. If something from this list is not true, or may become false in future, then not SQLite. In order of descending preferences - SQLite, IbToGo / Firebird embedded, PostgreSQL
  2. Dmitry Arefiev

    New to Json

    This may be coded in a more short form using 10.3.2. First case: var JsonValue: TJSONValue; Branch: string; begin JsonValue := TJSONObject.ParseJSONValue(st, False, True); try Branch := JsonValue.GetValue<string>('data.conditions[0].temp'); memo1.Lines.add('Parsed temperature '+branch); Branch := JsonValue.GetValue<string>('data.conditions[2].bar_sea_level'); memo1.Lines.add('Parsed barometer '+branch); finally JsonValue.Free; end; end; Second case: var JsonValue: TJSONValue; Branch: string; begin JsonValue := TJSONObject.ParseJSONValue(st, False, True); try Branch := JsonValue.GetValue<string>('iWN5p2qfRFeGKXn1m3iGnDW0Vkl2.PROFILE.BIRTHDAY'); memo1.Lines.Add('Parsed BIRTHDAY ' + Branch); Branch := JsonValue.GetValue<string>('iWN5p2qfRFeGKXn1m3iGnDW0Vkl2.PROFILE.FULL NAME'); memo1.Lines.Add('Parsed FULL NAME ' + Branch); finally JsonValue.Free; end; end; This is most simple code. Although not fastest, but may be enough fast. Depending on the requirements it may be optimized.
  3. Dmitry Arefiev

    JSON string value

    No, because they are rather "features", than bugs, introduced from library beginning. "Fixing" them will break backward compatibility.
  4. Dmitry Arefiev

    Firedac and simultaneous connection to different version of Firebird

    More to read: http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Configuring_Drivers_(FireDAC)
  5. Dmitry Arefiev

    TFDEventAlerter bug?

    There are two options: 1) Modify your code. In EventAlert use: TThread.Queue(nil, procedure begin Caption := AEventName + ' ' + DateTimeToStr(Now); end); And in FormCreate set: FEvents.Options.Synchronize := False; 2) Modify FireDAC sources. For that in FireDAC.Phys.pas change method: function TFDPhysEventMessage.Perform(AThread: TFDThread): Boolean; begin FMsgThread := AThread as TFDPhysEventThread; if FMsgThread.Active then begin if FMsgThread.FAlerter.GetOptions.Synchronize then TFDThread.Queue(nil, BasePerform) else BasePerform; end; Result := True; end;
  6. Dmitry Arefiev

    JSON string value

    BTW, the test suite in above link is 98% successfully passed by 10.3.1 System.JSON. From 7 failing tests, 3-4 may be considered as a "feature" ...
  7. Dmitry Arefiev

    JSON string value

    We have two problems: 1) REST, DBX, System.JSON duplicating JSON serialization classes. 2) Non complete docu for (1) classes. We want to keep only System.JSON with options for backward compatibility with REST, DBX. And only to develop System.JSON. When this will happen, then all demos, tests (internal), docu, must be updated to reflect the current RTL state. Now it is not the time for docu work ...
  8. Dmitry Arefiev

    JSON string value

    function JsonEncodeString(const AStr: string): string; var LStr: TJSONString; begin LStr := TJSONString.Create(AStr); try Result := LStr.ToJSON; Result := Result.Substring(1, Result.Length - 2); finally LStr.Free; end; end; It expects AStr without double quotes, and returns text without double quotes. You can adjust it to your own needs. There are several options, eg with/without double quotes, encode non-ASCII chars/do not encode, etc. Probably more simple to implement the above according your needs.
  9. Dmitry Arefiev

    Saving a large project takes soooo Loooonnnnggg..

    In short future this and other IDE performance issues will be resolved ... I hope 🙂
  10. Dmitry Arefiev

    Tool Palette Item properties?

    1. You can see this info in hint for component. 2. Because it serves not only as "Component Palette". 3. Not sure, for example me, need it ...
  11. Dmitry Arefiev

    THTTPReqResp.OnBeforePost breaking change

    The upcoming 10.3.2 Update will address all above issues. They are really reported in JIRA. Stay tuned ...
  12. Dmitry Arefiev

    function stripcslashes()

    May be a bit unexpected approach. And sorry not C but JS, but they are close here. uses System.JSON; function StripJSSlashes(const AStr: string): string; var LVal: TJSONValue; begin LVal := TJSONObject.ParseJSONValue('"' + AStr + '"', False, True); try Result := TJSONString(LVal).Value; finally LVal.Free; end; end;
  13. Dmitry Arefiev

    DPI-change, crashes tDrawgrid.

    Great. Thank you for testing.
  14. Dmitry Arefiev

    ITask.Wait() behaving differently when called multiple times

    Once the exception has been raised, it's considered having notified the caller.
  15. Dmitry Arefiev

    Git UI tools

  16. Dmitry Arefiev

    Can TFDQuery (SQLite) work as fast as TFDmemtable ?

    Using Array DML, or as I wrote above - TFDBatchMove, you can get even better speed.
  17. Dmitry Arefiev

    Can TFDQuery (SQLite) work as fast as TFDmemtable ?

    TFDTable produces many additional queries to mimic TTable and to maintain Live Data Window: http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Browsing_Tables_(FireDAC)#Live_Data_Window_Mode
  18. Dmitry Arefiev

    Can TFDQuery (SQLite) work as fast as TFDmemtable ?

    1) If you need the speed, then dont use TFDTable. At least, use TFDQuery. 2) Consider to use TFDBatchMove with SQLReader from XLS / ODBC data source. And SQLWriter to SQLite DB.
  19. Dmitry Arefiev

    DPI-change, crashes tDrawgrid.

    @A.M. Hoornweg, I created and attached experimental patch. Please, try it and let me know. If all is OK, then I will include it into next 10.3 update. grid.patch
  20. Dmitry Arefiev

    Firedac lost ftDate field type after using the SQLITE date() function

    http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Using_SQLite_with_FireDAC#Adjusting_FireDAC_Mapping Read sentence "For an expression in a SELECT list ..."
  21. Is it bad to use official DLL ? Several questions: * are you limited in distributing capabilities of this DLL (license, space, what ever) ? * who will support you, when something is broken, and you are using non-official connectivity ? * with whom you you can discuss your connectivity problems on INet, if you are using some from 3d party ? * how long will live your software, when 3d party provider is out of business, and DLL "insides"/protocol are changed ?
  22. This is IProviderSupport or IProviderSupportNG.
  23. Dmitry Arefiev

    FireDAC - Change Expired Password

    Yes, it is.
  24. Dmitry Arefiev

    FireDAC - Change Expired Password

    This issue was (most probably) fixed in 10.2.2. Your workaround is almost correct.
  25. You can do, when both conditions are met: * TOracleDataSet and TgQuery both are inherited from TDataSet * and properly implement IProviderSupport methods: procedure Form1.Proc1( aQry : TDataSet ); begin ... aQry.Close; (aQry as IProviderSupport).PSSetCommandText('select * from xyz'); aQry.Open; ... end;