Mine is TPS file so I might be more restricted than an SQL backend. I have been looking at the view position.
Some of the fields in the Parameter group structure are self explanatory, but others not. Funnily enough this is one of those situations where the C4 driver development kit or maybe an earlier version of clarion would be handy for the documentation if not anything else. I know Z said in the recent ClarionLive podcast on youtube, someone asked if that could be made available for developing a postgres driver, and Z said its come up alot so would commit to doing a postgress driver, but he also said its (Database Driver Development Kit) not in a state fit to release without tidying up, which might include documentation.
So at this stage I’d dont know if I’m hitting a TPS limit or not. I’ve already changed some of those values @Mark_Sarson has mentioned, but no joy this end, which is why I said it might be a TPS limit.
Still testing though…
Along time ago I was hitting a limit with the length of the filter statement, because the user selected some options which built a filter statement so I have had to expand the filter statement in the classes before. This was early C6 days.
So here is where things dont make sense.
In the ThisWindow.Init you get the browseclass.inits.
The BrowseClass.Init is where *string Posit is used to make the StandardBehavior S 1000 characters.
In the code its Queue:Browse.ViewPosition which is passed and this is 1024 characters or bytes. So where is the 24 chars disappearing to between the BRWxy.Init(?ListBox,Queue:Browse.ViewPosition,…
It doesnt make sense where those 24chars or bytes are disappearing to.
BRowseClass.Init Procedure(Signed ListBox, *String Posit, View V, Queue Q, RelationManager F, WindowManager WM)
Self.Behavior &= New StandarBehavior
*String Posit = Queue:Browse.ViewPosition which is 1024 chars, and there is no value in view position its all chr(32) spaces, yet when you call BRowseClass.Init *string posit becomes 1000bytes.
It seems to be losing the 24 byte spaces when the BrowseClass.Init method is called, which would suggest some sort of runtime restriction.
Oh well, I could modifiy one of the classes to force it to use 1024 bytes or more, but if the runtime is cutting off 24bytes, where else is it cutting of 24 bytes.
This is in C6, mind, havent tested in C11 yet, the runtime in C11 might be fine.
So none of marks suggestions would work because these are all 1024 bytes/chars and the issue I have is tracking down where this 1000 char/byte limit is set.
What I’ve done is searched for 1000 char limits in the templates and classes.
So far tried with no success,
and by trying a smaller number of bytes ie 512, that way I should be able to tell if its the code in question or not.
The only other possibility is the function Position() which might be limited to 1000 chars which I’ve got not control over and the help docs dont say if its return value is limited to 1000chars.
But I am at a total loss as to what is controlling this 1000char limit at this stage.
The thing that just does not make any sense is the procedure method accepting a string passed by address and when that string has a different declared size, its not not reflected in the passed parameter which would suggest some sort of interception is taking place.
Maybe time to look at the assembler and see whats going on there because there isnt anything else in the classes I can change from 1000chars to something else that affects this class. All very Spooky!
Well stepping through the assembler I can see posit is being passed in the EDX register on the stack when the browseclass.init is called, I can see the 1000 chars at the EDX memory address, but cant tell where this is set. I cant see anything in the viewmanager class which is its parent, so I’m still wondering if this is a limit in the Position() function because the help doc suggests the format seen is what can be seen in the class, ABBrowse Standardbehavior class
self.s &= Pos
So this is looking like a TPS file limit which Position() is showing.
Yet the help docs say a TPS Key size can be 15,000 bytes, the only 1000byte restriction seen is the table name.
Well Position() is returning a string which is 2056 chars long when I pass the key with with two fields that total 2056 characters in length, so its back to the classes to find out why Posit in BRowseClass.Init Procedure(Signed ListBox, *String Posit, View V, Queue Q, RelationManager F, WindowManager WM) is a 1000 chars in size.