-
Content Count
160 -
Joined
-
Last visited
-
Days Won
4
Everything posted by Dmitry Arefiev
-
FireDAC / SQL Server "Connection is busy with results for another hstmt"
Dmitry Arefiev replied to Nathan Wild's topic in Databases
This is because ODBC 17 is unknown version for FireDAC. -
For unlimited number of items for "IN" clause, may be possible to use SQL Server Table Valued Parameter. For details see "Object Pascal\Database\FireDAC\Samples\DBMS Specific\MSSQL\TVP" demo. PS: I am not tested that ...
-
TFDBatchMoveSQLWriter and table structure updates
Dmitry Arefiev replied to Stéphane Wierzbicki's topic in Databases
TFDBatchMoveSQLWriter cannot alter table structure, it can only create a new table. -
THTTPReqResp.OnBeforePost breaking change
Dmitry Arefiev replied to A.M. Hoornweg's topic in Network, Cloud and Web
@A.M. Hoornweg, did you checked THttpClient API ? accept gzip encoded data: set THttpClient.AutomaticDecompression to [THTTPCompressionMethod.GZip] accept an invalid/self-signed SSL certificate: set THttpClient.OnValidateServerCertificate to event handler which optionally can analyze Certificate and set Accepted to True / False -
[FireDAC][Phys][SQLite]-326. Cannot perform the action, because the previous action is in progress.
Dmitry Arefiev replied to Edson.pol's topic in Databases
@Edson.pol, could you please provide a test application, reproducing the issue. Also, do you have any non default settings in FetchOptions or ResourceOptions ? -
Leave it amBlocking.
-
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
-
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.
-
No, because they are rather "features", than bugs, introduced from library beginning. "Fixing" them will break backward compatibility.
-
Firedac and simultaneous connection to different version of Firebird
Dmitry Arefiev replied to Jacek Laskowski's topic in Databases
More to read: http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Configuring_Drivers_(FireDAC) -
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;
-
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" ...
-
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 ...
-
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.
-
Saving a large project takes soooo Loooonnnnggg..
Dmitry Arefiev replied to Ian Branch's topic in General Help
In short future this and other IDE performance issues will be resolved ... I hope 🙂 -
Tool Palette Item properties?
Dmitry Arefiev replied to PeterPanettone's topic in Delphi IDE and APIs
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 ... -
THTTPReqResp.OnBeforePost breaking change
Dmitry Arefiev replied to A.M. Hoornweg's topic in Network, Cloud and Web
The upcoming 10.3.2 Update will address all above issues. They are really reported in JIRA. Stay tuned ... -
function stripcslashes()
Dmitry Arefiev replied to chkaufmann's topic in RTL and Delphi Object Pascal
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; -
Great. Thank you for testing.
-
ITask.Wait() behaving differently when called multiple times
Dmitry Arefiev replied to Der schöne Günther's topic in RTL and Delphi Object Pascal
Once the exception has been raised, it's considered having notified the caller. -
https://www.syntevo.com/smartgit/
-
Can TFDQuery (SQLite) work as fast as TFDmemtable ?
Dmitry Arefiev replied to Stéphane Wierzbicki's topic in Databases
Using Array DML, or as I wrote above - TFDBatchMove, you can get even better speed. -
Can TFDQuery (SQLite) work as fast as TFDmemtable ?
Dmitry Arefiev replied to Stéphane Wierzbicki's topic in Databases
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 -
Can TFDQuery (SQLite) work as fast as TFDmemtable ?
Dmitry Arefiev replied to Stéphane Wierzbicki's topic in Databases
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. -
@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