Welcome to the Paradox Community Wish List - Page 5. To have your own wishes added to the list click here.
ObjectPAL Language
- DLLs and API calls
- Support for structures when using external DLLs
- Hardware Support
- Direct support for COM and USB ports
- New Events
- A 'postClose' event that fires after the form is closed. Could be used for table cleanup, lots of things.
- Init event for libraries which would fire every time a method in the library is called.
- New! 30 April 2004 An event added to library (form & script if possible) that allows a developer to trap variable assignments and unassignments.
Eventinfo would have var type and var name (and var value would be nice). With this event info, a developer could record opening/closing and assigning/unassigning in a dynarray. At close, everything could be removed gracefully.
- New/Modified Methods/Procedures
- AnyType: parse( <datatype>, "<format>", "<valuestring>" )
This is the inverse of the 'format' procedure. Justification: converting a string to a date, time, number, etc. always uses the currently set default format for the target type. To use a format peculiar to one conversion requires either (1) saving the current default setting, setting the default to the peculiar format, executing the conversion, and restoring the original setting, or (2) terminating the current setting with extreme prejudice. The 'parse' procedure would allow specifying a format to be used, instead of the currently set default, for just the instant conversion.
The syntax seems self-explanatory. The first argument primarily instructs the procedure how to cast the result, even if it is then stored into an anytype. I know the compiler could be coded to determine the type from context, but explicit is less confusing to programmers.
The actual type returned by this procedure might have to be 'anytype', which would then be appropriately cast upon assignment. If possible, though, the compiler should be coded to cast its result according to the first argument.
I don't think any new format codes will be needed. This procedure should be implemented so that a value string can always be parsed with the same format string that was used to produce it. Many -- perhaps most -- format codes, such as leading zeros, total width, etc. should have no meaning when parsing and must be ignored. Other codes, particularly element ordering in dates and times, are the vital reason for the 'parse' procedure.
Possible errors would include 'mismatched <datatype> and <format>' and '<valuestring> cannot be parsed as specified >> illegal character "@"'.
- Array: AppendToTable, LoadFromTable methods for arrays
- Array: ConcatenateArrayToString: lets me specify a string to put in between, each element, and strings them together. (Opposite of breakApart)
- Array: Multidimensional arrays
- Form: You can swap master tables in reports and forms at run time using the formOpenInfo masterTable property. I would like to be able to swap child and other tables in the data model at run time, or even swap data models! I understand they would have to be the same structure, but would be useful.
- General: Ability to call a method based on a string
- Queries: Be able to use an in memory tcursor in a query (in place of a table).
- String: We have rTrim and lTrim, how about xTrim? (removes all chars specified). We used to have this Paradox DOS I think.
s = "I Love Programming In Paradox"
s.xTrim("P")
s now is "I Love rogramming In aradox"
- String: substr ( const startIndex LongInt [ , const numberOfChars LongInt ] ) String
Would be nice to be able to specify a start index and go to end or beginning of string:
s = "abcdef"
s.substr(2,3) returns "bcd"
s.substr(2) returns "b"
want a way to get "def" by specifying substr(4,'toTheEnd'), so I don't have to parse out the size and subtract the first 4 chars.
- String: advMatch improvements.
Add another grouping besides (), such as {}, that does not contribute to the match variables. This would allow using ?, , * with multiple characters.
Allow arrays to capture matches:
var
myar array[] string
endvar
st = "abc def ghi jkl"
;match one or more of the set a-z
st.advmatch("([a-z] )",myar)
results:
myar[1] = "abc"
myar[2] = "def"
myar[3] = "ghi"
myar[4] = "jkl"
Like Perl allow matching with previous match (I forget the Perl syntax):
st.advmatch("#([.-])(#FIRSTMATCH)*", FIRSTMATCH, SECONDMATCH)
so that you can use the character matched in "[.-]" to further clarify the rest of the match.
Allow for a parameter for matching "inside" vs "outside".
st = "test1_ test2_ test3_ some other text"
st.advmatch("(..)_",mymatch)
;current method of matching
advmatchInside = False
mymatch = "test1_ test2_ test3"
AdvMatchInside = True ;new method
mymatch ="test1"
Overall give the very handy advMatch more Perl-like matching ability.
- Table: Is there a way to tell the file name a table var is attached to? You can with a tcursor.
- Table: Improve the restructure method such that all interactive capabilities are fully supported in ObjectPAL
- Table: Ability to repair a table using ObjectPAL
- Table: Ability to determine table level using ObjectPAL
- TCursor/Array of: Ability to use a tcursor from a var declaration as follows within a scan loop:
var
arTcursors Array[3] TCursor
endVar
..
scan arTcursors[1] :
..
endScan
..
- TCursor: Be able to open an in memory tcursor without doing a query
- TCursor: switchIndex with optional arguments that result in automatic setRange(), e.g. tc.switchIndex("indexname",10144,10233).
- TCursor: open that allows not only index selection, but range also, e.g. tc.open("tablename","indexname",10144,10233).
- TCursor: When a tcursor attaches to a table in a data model that has a one-one to another table, the tcursor should be able to reference fields on the second table, including locates (and interactive locates).
- TCursor, UIObject: add locateLast method
- TCursor, UIObject, Table: Allow blanks to be used as criteria for any field in a range, both interactively and via setRange(), and ensure the behavior is consistent and accurate
- TCursor, UIObject, Table: "Tail-wag-the-dog" filters. Currently you can make a child table master of the intrinsic master table in data model but sometimes that doesn't easily allow the type of view that may be desired. It would be good to have a ???-filter as well as a normal filter, whereby when setting the ???-filter only those records in the master table having child records complying with filter are shown in master table (and only those child records complying with filter are shown). Yes, can be done with code but what a nuisance for such a simple thing.
-
- New/Modified Types
- Real multidimensional variables (yes they can be imitated but the real thing would be better).
- OLEAuto
- Improved OLEAuto support (like being able to receive values back from commands)
- Spell Checker
- Method to invoke spell checker via code.
- A way to invoke spell checker via code and just return a true or false if any errors.
- Use spell checker on a string.
- Variables
Note: See the suite integration page for suggestions and ObjectPAL methods/procedures to assist in that.
Page 1: Data Model Designer/Dialog and Design Mode Features
Page 2: Miscellaneous
Page 3: Object Additions/Improvements
Page 4: Object Explorer, ObjectPAL Editor and Debugging Tools
Page 6: Printing and Reports and Project Viewer
Page 7: Tools/Experts/Interactive Features
Page 8: General (or Miscellaneous 2)
Page 9: Suite Integration
Paradox Community Newsgroups
|