Jump to content

sjordi

Members
  • Content Count

    196
  • Joined

  • Last visited

Posts posted by sjordi


  1. Do you actually create the "BackupFile"?
    With its structure (built-in tables)?
    I think that the file should exist first before being able to open it.
    Also make sure that you create the file somewhere where you have the right to write (sandboxing), either it the app space or in the public space.


  2. I would love to have data change (change views) without the server in between.
    It would be nice to have only IBToGo on each smartphone, the Mac, the PC and be able to sync together.

    For example, sync an iPhone directly to an Android smartphone or an iPad over local WiFi. No Server here.
    But a protocol to compare both device contents.

    I don't want the server. That means you need a server dedicated to sync AND an internet connection. On the go, it's a problem for me. And I don't want an internet connection to sync my iPhone with my Mac.

    That's what TMS XData/Echo is kind of doing by comparing datasets. But it's not perfect the way I need it.

     

    I use plenty of paid apps that do this over wifi, no server anywhere. One DB compared to another DB (same structure of course, but different devices)


  3. Did you try an empty FMX form?
    Remove all current projects entitlement files first from your hard disk and recompile.
    I recompiled all my apps in 11.2, with Xcode 14 under PAServer 13.2.11.7 and they all work on iOS 15.7 and iOS 16.0


  4. 8 hours ago, Fr0sT.Brutal said:

    That's why the only really reliable option is to record log of all changes and then replay it over replica.

    If it's not trading secrets, hints and tips to achieve this, or a tutorial blog would be nice for others.
    But I totally understand that's it's not always possible, and always time consuming...


  5. Replication is very complex.

    TMS Echo offers some kind of help but doesn't really handle conflicts besides "the latest record" wins over the oldest.

    But now what if user A changes a record's FirstName field and user B changes the same record's Address field? The latest change would win, meaning that either the FirstName or the Address would be lost.

    Real sync should take into account everything at fields level, not only record levels.

    That means handling tables of changes and then trying to reconcile.

    Reconcile should also be able to offer, as an option, a dialog box to ask the user which field wins over which, in case both users A and B change, say, the FirstName field. Which one is correct?

    I still struggle with that but will move forward with Echo for now. No choice. Be aware that to use TMS Echo you need TMS Aurelius and TMS XData

     

    Another solution is to use Interbase Change Views. But for this to work you need an Interbase server as a broker (and pay for it).

    You can't use Change Views in an embedded solution like when you want to sync smartphones/tablets with a Mac or Windows standalone embedded desktop app (that would be my case).

    It's a shame.


  6. 3 hours ago, Sriram said:

    Depending on your deployment plans/forecast

    To me everything is said here: no-one could forecast the sales. 
    I always found the VAR agreement totally imbecile. Handing out $5K upfront in prevision, that is rollbacked to the next year, etc is so cumbersome. And some freelance developers can't afford this.

    That's why a one-time payment with then royalty free distribution is, to me, the only way to go.

    And unlike what you say, if you contact sales, no, you won't have a clear picture of the future, it's always confused, blurred, and it always gives the feeling that prices and conditions will vary depending on the customer. Doesn't make you feel confident. Leaves you with a feeling that you are just a cow being milked against your will...

     

    • Like 2

  7. 11 hours ago, Brian Evans said:

    Gave up on this decades ago and used FlashFiler then NexusDB instead.

    Me too when developing Windows apps. 
    NexusDB is great but is not available for cross-platform apps. That's very unfortunate.
    I'm also against pay as you go solutions and think that the VAR program is pretty obscure. For single developers, you need to know the costs in advance, you have no way to determine how successful an app will be. Could be 10 users or 300k users.

    As a single developer, I want to pay a fixed price and then have the freedom of royalty free distribution, just like NexusDB.

    For cross platform, I switched to SQLite, even if not as powerful as Interbase, but it also has a much much much smaller footprint that IB... even if this is a selling point for them to be small...

    • Like 1

  8. Hi all,

    Just spent 3 days pulling my hair trying to understand why a list view is crashing each time I remove the grouping option for iOS.

     

    You know, if you set the ListView.ControlType to Platform, add FillHeader + FillBreak in Visual Binding (with custom format as "SubString(%s, 0, 1)"), on iOS you get your list displayed with Alphabetic groups and the nice vertical Alphabet index on the right to quickly navigate in the list. Works fine.

     

    Now if I sort my list using another non alphabetical parameter, I have to disable that index first. So I remove the visual binding to the list Headers.

          LinkListControlToField1.FillBreakCustomFormat := '' ;
          LinkListControlToField1.FillBreakFieldName := '' ;
          LinkListControlToField1.FillHeaderFieldName := '';
          LinkListControlToField1.FillHeaderCustomFormat := '' ;

     

    Problem is that it crashes each time (also on Android), telling me that the value I pass is "out of range".

    It's fine on Windows and macOS.

     

    Now I think I found the reason... if I set the ListView.ControlType to "Styled" instead of "Platform", everything is fine, no crash (but no index either on iOS).

    As a workaround, I actually switch the ControlType to Styled, remove the links, and set it back to Platform. Of course it's not elegant.

     

    Could someone try the attached project and tell me if it crashed too on your side: iOS, iPadOS?

    The db is test.sqlite and should normally be deployed to your app.

    As-is, it should work.

     

    If it works, then try to comment out
       ListView1.BeginUpdate ;
       ListView1.ControlType := TControlType.Styled ;

    and 

       ListView1.ControlType := TControlType.Platform ;
       ListView1.EndUpdate ;

    in the TForm1.ToolBar1Click procedure.

    Does it crash now that you stay in Platform mode instead of Styled?
     

    Any idea if I'm doing something wrong or if this is a bug, in which case I will open a bug report at QC (Embarcadero)

     

    Thanks for your help.

    Steve

     

     

     

     

    ListIndexed.zip


  9. @Mavarik offers a nice solution.
    I use TFrameStand too. The advantage here is that you can create the frame only when you need it, no other one is created before being used. And it's released once you leave it.


    The advantage of Maverick solution is that you can switch the appearance of the form at design time between Windows, mac, iOS and Android. This is not possible with Frames...

    But I have no problems using stands.


  10. Dang! I have FNC UIPack... but I didn't check "list"... only "tag" or whatever close to this...
    I knew I saw this somewhere.

    Thanks...


  11. Hi,

    Before I start trying to create one myself, does anyone here know an FMX component to use tags with add, delete, move functionalities.

    Something looking like (a little cross to delete next to each tag text would be nice)

    TageEditExemple.png.5c3ffe9383799d21c848c8a5c98d46c3.png

     

    or from this forum

    1911794677_ScreenShot2022-05-03at15_42_29.png.4b8707e4084eb90d6ca1c44e86b19909.png

     

    Thanks for any help.
    Steve


  12. ok,

    I think I faced a border effect... I copied the System.StartUpCopy from here and pasted it into my IDE.
    Didn't work. Some extra characters? No idea. Then, I erased it, typed System. and saw StartupCopy in the completion list, selected it and still, the IDE was complaining, not even possible to compile.
    Then I typed it in manually and it was fine.

    Just tried to redeploy my app and I correctly kept my actual data. Cool

     

    Thanks all.

    Steve


  13. Actually, I don't find it. It's not known from the compiler, and I have no trace whatsover of any file that looks like it besides a DCU file... but not seen
    I'm under Alexandria...

    Docwiki at Embarcadero doesn't reference it either... nor does the help...

    I think I'm missing something.


  14. Hi all,
    A generic question. I'm deploying my apps with an embedded SQLite DB. Each time I compile/deploy, that existing on device DB file is overwritten by the default one.

    It's fine for development. But how do you actually proceed if you want to deploy an update? If a user has the app already with personal data, I don't want her/him to lose that data.

     

    Testing whether the DB already exists is not possible since it's deployed each time within the new binary.

    One way would be to have all the code to check whether the DB exists. If not, programmatically create it and fill it with sample data. If it does, just check its version and apply possible structure upgrades? But it feels like this would embark a lot of code that may not really be useful.

     

    How do you guys deploy news versions of your apps without overwriting exists DBs? I especially think about iOS and Android devices.

     

    Thanks for any light.

    Steve


  15. Nope, didn't find the Arlésienne 🙂 
    It looks like the OnclickEx part works fine as it also allows to react to a click on the item (outside of the checkbox). I'm moving forward with this for now, but can definitely refactor later on.

    I had your blog article in my personal ressource wiki and didn't see it ... (no comments)

×