Jump to content

Dany Marmur

  • Content Count

  • Joined

  • Last visited

  • Days Won


Dany Marmur last won the day on December 18 2018

Dany Marmur had the most liked content!

Community Reputation

22 Excellent

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Dany Marmur

    ISAPI in Delphi 10.2,10.3 TranslateURI

    Isapi or apache?
  2. Dany Marmur

    Am I using IF correctly?

    Must admit i fret over this thing from time to time.
  3. Dany Marmur

    Am I using IF correctly?

    Yes! 99,9% of cases (when not micro-optimising as mentioned above) readability is preferable IMHO. However, readability is often subjective too. So. Btw, please edit your code above in order not to throw off beginners (two : [colons] are missing).
  4. Dany Marmur

    VCL/WinAPI programming/consultations

    And perhaps adjust your gustatory preferences as a daily deluge of beluga caviar may make employers nervous about you salary demands
  5. Dany Marmur

    any suggestions on how to "lazy load" a BLOB/CLOB from Oracle DB?

    Just did a small test with my DAC (IBObjects), TDataSource and vanilla VCL TDBGrid + TDBMemo. This is only one query containing all field, even the BLOB. The grid only shows "(MEMO)" or "(memo)" for the cell. All rows are fetched (i have an SQL Monitor) w/o the BLOB content for the grid (only the reference). The BLOB fetch is done when i navigate to a record, not when the grid is filled. If i disable the (standalone) TDBMemo control - blobs content is never fetched. Is this what you are after? Perhaps it's some magic done by IBObjects, but i think not. Either way - i do not think it's possible to have an "all data all scenario"-solution for this. As some already said; the GUI needs affects the tactical here.
  6. Dany Marmur

    any suggestions on how to "lazy load" a BLOB/CLOB from Oracle DB?

    This is because the dataset now contains references to the CLOBs and for each row it needs to do a fetch. So 0.5 seconds "one" fetch. 60 sec, one "fetch" + one new fetch for each CLOB. So you will either need DACs and dataaware components that can show the user whether there is data or not (this is determined in the first fetch) and then do the actual BLOB/CLOB fetch when the user for example clicks the cell for that field. I do not have the time to research if this is possible, use a SQLMonitor* and experiment. Or (much simpler) set up a dataset as a child (one to one) of the master so that it is fetched when the user navigates to the record. If TDataset compliance is needed (and i assume it is) then i would go about it like so: Select T.ID, T.B, T.C, CAST(SUBSTRING(T.M from 1 for 10) as VARCHAR) AS M from T ... Select T.ID, T.M from T Where T.ID = :ID (This is firebird syntax from the top of my head - not oracle). The second query being a "detail". This way you can show the user the first 10 characters (0.5 seconds) and either when the user navigates or clicking a cell, put code there to set the parameter of query 2 and open it. After a BLOB/BLOB post you would need to update that record in the "master" dataset (query 1). HTH, /Dany * It will show you when a BLOB/CLOB reference is fetched as part of a row and when the actual BLOB/CLOB is fetched.
  7. Dany Marmur

    General DB access question -- paging query results

    So both FireDAC, IBObjects and other DACs have the capability to server a component in "gridMode". This means that the key index will be fetched first and then the rows will be filled as requested. The key here being that you can present what looks like a huge dataset to the user and it will be fetched as needed. Users can see rows 1-10 and then jump to rows 4951-5000. These datasets can be writable. Since people are interested in paging here (i'm not) i have a question. Imagine you have a set of 5000 sorted rows that users can mark, for example checking records and confirming them. Let's say there are summaries too. So if user one sees rows 1-100 and user two sees rows 101-200 working along. And user one inserts or deletes a row... when user two is supposed to look at rows 201-300 s/he will either see one row again (delete) or /miss/ one row (insert). No? If yes, how would you tackle this in a multiuser read-write environment? Or perhaps you are working with fuzzy data like google results where veracity is not required? Regards, /Dany
  8. Dany Marmur

    Delete Error With Delphi and Access Table

    You forgot a space after And.
  9. Dany Marmur

    Blast from the past: BDE and Win10 W/S

    Loong time since BDE. Sounds like you could try TS/Citrix for the 50 in order to minimize corruption. The clients would be "closer" to the pdx tables and could maybe exit gracefully when connection problems arise. /D
  10. Dany Marmur


    Really sorry to have to do this; i have seen posts about this project with the strange name both here and on G+. Several posters have asked what the project does. Not one viable answer yet. To me these threads are ... hugely annoying! Please explain what the code actually do. Just once. Sharing is caring and that is all good. But a lot of us have limited time on out hands and w/o knowing anything there's simply not time to compile and look, dig and do trial-n-error. Argh!
  11. Dany Marmur

    Do I need to test my applications on 4K monitor?

    IMHO, *absolutely*! Compile your project, take care to set "manifest" options so that Windows do not scale your application. Test on a 4K display scaled to an "odd" number (250%, not just 200%). Test on a dual monitor setup where the two monitors are differently scaled (ona at 100% and the other at 250%). Be ware that if windows is scaling your application to 200% or 300% it will look rather ok. However as soon as it's 225%, 250% et. cetera anti-aliasing will be very visible). Do you persist sizes of windows, positions of dialogs and such? Test that too under all viable situations. What i mean is, do your users have laptops (at 4K) and docking stations at the office. If you persist "at home" on 250% scaling what happens back at work? And so on and so forth.... HTH, /Dany
  12. Dany Marmur

    Date Time Differance

    So turn on "Debug" and trace along to see where you are getting the error. Amend that line of code. Is this a console project? No, it looks like a GUI project. Why writeln? Can't you just put a TMemo on your form and output the text there? Memo1.Lines.Add(Format(...)); Also, (after you get your stuff working), why Encode and then Decode? HTH, /Dany
  13. Dany Marmur

    Date Time Differance

    Look at the types returned from EncodeDate and EncodeTime and see if there isn't any output/property with the same type in your visual controls. Also read the documentation on those functions and the documentations on the control's properties. I'm sure you will ba able to figure it out. Do not forget all the DatTime conversion routines in the RTL (run-time-library). HTH, /D
  14. Dany Marmur

    What does TDataSet.CopyFields do?

    @Kryvich, well, that is proof! /D
  15. Dany Marmur

    What does TDataSet.CopyFields do?

    @Kryvich, exactly. And that is the case for the fields inside NestedDataSet. Because of recursion it will work. Property NestedDataSet is of type TDataSet and so on. Agree?