Re: [Warning] Settings properties values on object field by object notation

2017-10-31 Thread David Adams via 4D_Tech
> it is an interesting point of view,
> to frame it as an issue of the assignment operator being different,
> as opposed to how objects and their properties are different "because
they are references".

I think that the real issue for a 4D programmer is that a record is a
persistent data store and that field modifications are supposed to be
stored reliably. How 4D handles all of that internally is, literally, none
of our business. (4D refuses to discuss any of this.) The data should be
stored reliably 100% of the time. If that can be done in a more optimized
way, great!
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: [Warning] Settings properties values on object field by object notation

2017-10-31 Thread Keisuke Miyako via 4D_Tech
like a global preference, to the effect of

"Call OB Copy implicitly when performing object assignments"

it is an interesting point of view,
to frame it as an issue of the assignment operator being different,
as opposed to how objects and their properties are different "because they are 
references".

> 2017/11/01 13:14、Tim Nevels via 4D_Tech <4d_tech@lists.4d.com> のメール:
> Make the assignment operator “:=“ work as we all expect it to work.




**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: [Warning] Settings properties values on object field by object notation

2017-10-31 Thread Cannon Smith via 4D_Tech
This bug was first discovered in July of 2016. See the NUG thread "Does 4D 
Support Dotted Notation in Object Fields?” if you are interested in how it was 
discovered (thanks to Douglas Von Roeder). ACI0095526.

Even though I filed the bug report, I can think of at least twice since then 
that I’ve been bitten by this behavior because I forgot about it. I think this 
is an example where documenting doesn’t help that much. Thinking 4D will save 
the changes I’ve made to an object is so natural a thought that I keep 
forgetting it won’t work in these situations, even though I had documented it 
myself.

If it is true that this wasn’t implemented as we naturally think it should have 
been for performance reasons, I’d like to express that I would prefer it to be 
slower and know that it is saved than faster and find out later it wasn’t saved.

--
Cannon.Smith
Synergy Farm Solutions Inc.
Hill Spring, AB Canada
403-626-3236




> On Oct 31, 2017, at 7:46 PM, Tim Nevels via 4D_Tech <4d_tech@lists.4d.com> 
> wrote:
> 
> It is quite alright to have different behaviors for things IF YOU DOCUMENT 
> IT! How can we defensively programing around unknown problems? 

**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: [Warning] Settings properties values on object field by object notation

2017-10-31 Thread Robert McKeever via 4D_Tech
Is a ‘2’ in BOLD type sufficiently large, David?

> On Oct 31, 2017, at 5:39 PM, David Adams via 4D_Tech <4d_tech@lists.4d.com> 
> wrote:
> 
> On Wed, Nov 1, 2017 at 10:23 AM, Tim Nevels via 4D_Tech <
> 4d_tech@lists.4d.com> wrote:
> 
> 
>> I can guess the answer to that. The engineer responsible looked at the
>> code and said, “yeah I can fix that, but it will be a lot of work”. And
>> somebody said, "OK then don’t bother. You’ve got more important things to
>> do. We’ll just call it ‘Standard Behavior’”. Pitiful! :(
>> 
> 
> We'll never know. It could be that it is the result of a carefully thought
> out design.
> 
> Then again, you could have a function like Add(2;2) that returns 5 and
> claim that it's "standard behavior" because it's consistent. No matter
> what, it's still a bug (except for sufficiently large values of 2.)
> **
> 4D Internet Users Group (4D iNUG)
> FAQ:  http://lists.4d.com/faqnug.html
> Archive:  http://lists.4d.com/archives.html
> Options: http://lists.4d.com/mailman/options/4d_tech
> Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
> **

_
Bob McKeever  http://www.mswl.com 
McKeever's Software Wizardry
Port Coquitlam, B.C.
bobmckee...@mac.com




**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: [Warning] Settings properties values on object field by object notation

2017-10-31 Thread Keisuke Miyako via 4D_Tech
I hate to repeat myself,
but it seems the problem with object notation
is that it's not as straightforward to know if a field has been changed or not.

perhaps until now,
we have been thinking of simply code like

[myTable]myField.prop:="123"

and it seems crazy that 4D doesn't understand that the field has been updated.

but that's not how references work.

for example, imagine a method that does this:

// myMethod
C_OBJECT($0)
$0:=[myTable]myField

it is possible to do something like this:

myMethod.prop:="abc"

there is literally no way of knowing that an object is a field, just by parsing 
the code.

> 2017/11/01 11:14、David Adams via 4D_Tech <4d_tech@lists.4d.com> のメール:
> If changing a field and then saving the record doesn't save the field change, 
> that's a bug.




**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: [Warning] Settings properties values on object field by object notation

2017-10-31 Thread David Adams via 4D_Tech
On Wed, Nov 1, 2017 at 1:05 PM, Keisuke Miyako via 4D_Tech <
4d_tech@lists.4d.com> wrote:

>
> I thought it was also quite clear in Tim's reply which was reposted here,
> that we failed you on this, and that we are in the process of updating the
> documentation.
>

If changing a field and then saving the record doesn't save the field
change, that's a bug.

Adding a footnote to the documentation isn't a fix, it's an admission of
failure.
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: [Warning] Settings properties values on object field by object notation

2017-10-31 Thread Keisuke Miyako via 4D_Tech
I wasn't trying to avoid taking responsibility,
I feel very sorry for that.

I thought it was also quite clear in Tim's reply which was reposted here,
that we failed you on this, and that we are in the process of updating the 
documentation.

but again, I apologise.

> 2017/11/01 10:46、Tim Nevels via 4D_Tech <4d_tech@lists.4d.com> のメール:
> to try and provide excuses and speculate on reasons why this is not a “screw 
> up”
> but instead is a “good thing” is insulting to our intelligence. Shame on you!




**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: [Warning] Settings properties values on object field by object notation

2017-10-31 Thread Tim Nevels via 4D_Tech
On Oct 31, 2017, at 8:17 PM, Keisuke Miyako wrote:

> to explicitly indicate that the object has been modified, just use the line
> 
> [myTable]myObjectField:=[myTable]myObjectField
> 
> and you have total control of when to save the field,
> which results in better performance, immediately as well as in the long term.
> 
> to me this sounds like a better deal than a blanket "save always" system (the 
> real sloppy design choice, in my opinion)

The real “sloppy” part is that this was not documented with a big red flag 
saying something like “object fields don’t work like other fields so if you do 
this … it does not work the same as if you do that to any other field types.  
The workaround is to do...” 

It is quite alright to have different behaviors for things IF YOU DOCUMENT IT! 
How can we defensively programing around unknown problems? 

David Adams brings up the “Old” command and how prior to v11 did not work with 
Text fields. That was documented. So we knew that it didn’t work and we had to 
program around that limitation. That was the right way to handle it. Then when 
v11 was released the documentation was updated to say “Old” now works with text 
fields. Again that is the right way to handle it.

So please please please will somebody at 4D go update the damned documentation 
on this! The readers of the iNUG now know but what about everyone else in the 
world? What about the new guy that wants to use object fields tomorrow? He 
doesn’t know from reading the docs. 

I know that you and Tim Penner are both 4D employees and there must be a 
company rule that says “no 4D employee may say publicly that 4D Inc. has 
screwed up”. Do you know how refreshing it would be if you guys actually did 
say occasionally “we screwed up on this one”? I’m sure all would forgive and 
say “yeah, we all make mistakes”. But to try and provide excuses and speculate 
on reasons why this is not a “screw up” but instead is a “good thing” is 
insulting to our intelligence. Shame on you!

I quote the late, great Bruce Lee: "Mistakes are always forgivable, if one has 
the courage to admit them."

Tim


Tim Nevels
Innovative Solutions
785-749-3444
timnev...@mac.com


**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: [Warning] Settings properties values on object field by object notation

2017-10-31 Thread Jeffrey Kain via 4D_Tech
Quackers.

> On Oct 31, 2017, at 9:17 PM, Keisuke Miyako via 4D_Tech 
> <4d_tech@lists.4d.com> wrote:
> 
> "standard behaviour" is a specific term that means the result is "expected, 
> if not intended" by design or specification.

**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: [Warning] Settings properties values on object field by object notation

2017-10-31 Thread Chip Scheide via 4D_Tech
Keisuke,
I don't think anyone is arguing for a 'Save always' system.

I think we are saying IF the data (inside the object field) has been modified - 
it needs to be saved, if the request is made to save the record, REGARDLESS of 
how the modification occurred.

a direct assignment
via dot notation
via set object
via set (sub)object
via martians landing in Washington D.C

it should NOT matter how the modification occurred - a modification occurred - 
save the change(s) if requested .

> 
> to me this sounds like a better deal than a blanket "save always" 
> system (the real sloppy design choice, in my opinion)
> 

Hell is other people 
 Jean-Paul Sartre
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: [Warning] Settings properties values on object field by object notation

2017-10-31 Thread John Baughman via 4D_Tech


> On Oct 31, 2017, at 3:17 PM, Keisuke Miyako via 4D_Tech 
> <4d_tech@lists.4d.com> wrote:
> 
> to explicitly indicate that the object has been modified, just use the line
> 
> [myTable]myObjectField:=[myTable]myObjectField
> 
> and you have total control of when to save the field,
> which results in better performance, immediately as well as in the long term.
> 
> to me this sounds like a better deal than a blanket "save always" system (the 
> real sloppy design choice, in my opinion)


Interesting perspective. Thanks.

John



John Baughman
Kailua, Hawaii
(808) 262-0328
john...@hawaii.rr.com





**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: [Warning] Settings properties values on object field by object notation

2017-10-31 Thread Chip Scheide via 4D_Tech
to me...
using either
OB SET(object_field;value) = Object_field.property := value

They SHOULD do the same thing, either BOTH set the flag to save the data, or 
neither do.

In all other 4D field types " := " says 'I changed this value', make sure the 
new data is saved if such a request is made.

> I am going to post here a response I got from Tim Penner in the TAOW 
> a bit earlier today. While it does not change my mind that this issue 
> should be characterized as a bug, it does clarify what the issue 
> really is.
> 
> Am I the only one that was clueless that there is a field dirty field 
> flag that controls whether or not a field gets updated or not during 
> a save record. Guess that does make sense.
> 
> John
> 
> ---
> Hi John,
> 
> It's not a dirty flag for the record, but a dirty flag for the field. 
> The object field has a dirty flag that only gets set if you reference 
> the object field itself (not a property of it).
> 
> Here are some examples to help illustrate the difference:
> OB SET([Table]OBField;"Prop";"Val") // references the object field 
> itself and does set the dirty flag for this object field.
> [Table]ObField.Prop:="Val" // references a property of the object and 
> will not set the dirty flag for this object field.
> OB SET([Table]ObField.Prop;"Property2";"Val2") // references a 
> property of the object and does not set the dirty flag.
> [Table]ObField:=[MyObject]ObField // references the object field 
> itself and does set the dirty flag for this object field.
> 
> To be clear, in the example database that I submitted with my bug 
> report I demonstrated, as you demonstrated in your last update, that 
> other fields were being saved and that only the Object Field data was 
> being lost. I even demonstrated in code that the change to the object 
> field appeared to stick after a SAVE RECORD and it only reverted to 
> its original state when the record was reloaded. Because of this i 
> categorized the report as a Data Loss bug and made the data loss part 
> clear.
> 
> Today, (after i noticed it was marked as standard behavior) i 
> requested that our documentation be updated so that we can hopefully 
> prevent further reports of data loss.
> 
> Regards,
> Timothy PENNER
> --
> 
>> On Oct 31, 2017, at 2:39 PM, David Adams via 4D_Tech 
>> <4d_tech@lists.4d.com> wrote:
>> 
>> On Wed, Nov 1, 2017 at 10:23 AM, Tim Nevels via 4D_Tech <
>> 4d_tech@lists.4d.com> wrote:
>> 
>> 
>>> I can guess the answer to that. The engineer responsible looked at the
>>> code and said, “yeah I can fix that, but it will be a lot of work”. And
>>> somebody said, "OK then don’t bother. You’ve got more important 
>>> things to
>>> do. We’ll just call it ‘Standard Behavior’”. Pitiful! :(
>>> 
>> 
>> We'll never know. It could be that it is the result of a carefully thought
>> out design.
>> 
>> Then again, you could have a function like Add(2;2) that returns 5 and
>> claim that it's "standard behavior" because it's consistent. No matter
>> what, it's still a bug (except for sufficiently large values of 2.)
>> **
>> 4D Internet Users Group (4D iNUG)
>> FAQ:  http://lists.4d.com/faqnug.html
>> Archive:  http://lists.4d.com/archives.html
>> Options: http://lists.4d.com/mailman/options/4d_tech
>> Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
>> **
> 
> John Baughman
> Kailua, Hawaii
> (808) 262-0328
> john...@hawaii.rr.com
> 
> 
> 
> 
> 
> **
> 4D Internet Users Group (4D iNUG)
> FAQ:  http://lists.4d.com/faqnug.html
> Archive:  http://lists.4d.com/archives.html
> Options: http://lists.4d.com/mailman/options/4d_tech
> Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
> **

Hell is other people 
 Jean-Paul Sartre
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: [Warning] Settings properties values on object field by object notation

2017-10-31 Thread Keisuke Miyako via 4D_Tech
> OB SET ([Table1]Object;”value”;b_value)  //this will set the record dirty.
> And, yes, I too was told that the engineers were leaning to declaring
> this as standard behavior. Why? I have not a clue.

obviously I can't speak for "the engineers", but I would not rush to the 
conclusion that it is simply due to sloppiness.
"standard behaviour" is a specific term that means the result is "expected, if 
not intended" by design or specification.

in general (not just object fields), 4D has a way to not re-save a record if it 
hasn't changed.
again, I have no idea "how" that is accomplished, but as a programmer, I 
imagine "why".
it must be performance.

I find it hard to believe that unchanged records are not committed to the data 
store, just by serendipity.
it must have been designed to work that way.

the question of course, is how do you know that an object field has been 
changed?
do you scan every property and their descendants?
what if only the structure has changed semantically?
does that also count as a modification?

on top of the parsing issue,
re-saving an object field unnecessarily,
would have a detrimental fragmentation effect on data file,

now you might say,
"why not increment an internal counter every time the object is modified"

that would surely work with other large objects such as pictures, BLOBs, or 
text.

but objects are references, so it is possible to modify the field without 
"touching" it.
the object notation is one way to do that.
but it is also possible using classic coding,
whereby you obtain a reference to a sub object (OB Get),
and modify that sub object.
again, the "parent" object is not modified directly,
so it is not updated with SAVE RECORD.

to explicitly indicate that the object has been modified, just use the line

[myTable]myObjectField:=[myTable]myObjectField

and you have total control of when to save the field,
which results in better performance, immediately as well as in the long term.

to me this sounds like a better deal than a blanket "save always" system (the 
real sloppy design choice, in my opinion)






**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: [Warning] Settings properties values on object field by object notation

2017-10-31 Thread David Adams via 4D_Tech
>I am going to post here a response I got from Tim Penner in the TAOW a bit
earlier today. While it does not change my mind that this issue should be
characterized as a bug, it does clarify what the issue really is.

It's a bug. If 4D wants to document it as standard behavior, that's their
business. But it's still a bug and will lead to real-world problems. This
is the kind of bug I'd rank *extremely* serious. Why? Well, imagine any
number of data change scenarios some of which change the field on one way
and some in another. Depending on the exact sequence of steps the same
modification will result in putting the data into a different state. This
is exactly the sort of situation that can run undetected for
days/weeks/months in the field. And then what do you do? There is literally
no way to unscramble the eggs. You have *no idea* what quality your data is
at that point. It has any number of undetectable, subtle flaws. The number
may be zero, the number may be .0005% of the candidate fields, it may be
7.23% of the candidate fields. Unless you've got source data to completely
rebuild everything from scratch, you'll never know and never be able to fix
it.

Object fields sound better and better to me all the time ;-) They're
non-relational, accessed through a "novel" and incomplete JSON
serialization scheme, take a lot of space (the same data in primitives
takes less room), have a bunch of adjacent/extra commands devoted to
working with themand, I'm told, are *not* designed to be used for the
majority of cases where JSON fields are commonly used in ORDBS and NoSQL
systems. I just don't get it.

Anyway, modifying and saving a field of this sort should be
*deterministic*. Making it functionally non-deterministic isn't defensible
for a RDMS in any way.

 Input --> [Function] ---> It depends

That's fine if you want something random, it's not fine in any other case.

It's a bug. But, again, 4D is free to say it isn't. Their business, their
rules.

> Am I the only one that was clueless that there is a field dirty field
flag that controls whether or not a field gets updated or not during a save
record. Guess that does make sense.

For a long time you would bump up against this on large data types and the
Old() function. That's about the only practical way I remember it being an
issue for us.
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: [Warning] Settings properties values on object field by object notation

2017-10-31 Thread John Baughman via 4D_Tech
I am going to post here a response I got from Tim Penner in the TAOW a bit 
earlier today. While it does not change my mind that this issue should be 
characterized as a bug, it does clarify what the issue really is.

Am I the only one that was clueless that there is a field dirty field flag that 
controls whether or not a field gets updated or not during a save record. Guess 
that does make sense.

John

---
Hi John,

It's not a dirty flag for the record, but a dirty flag for the field. The 
object field has a dirty flag that only gets set if you reference the object 
field itself (not a property of it).

Here are some examples to help illustrate the difference:
OB SET([Table]OBField;"Prop";"Val") // references the object field itself and 
does set the dirty flag for this object field.
[Table]ObField.Prop:="Val" // references a property of the object and will not 
set the dirty flag for this object field.
OB SET([Table]ObField.Prop;"Property2";"Val2") // references a property of the 
object and does not set the dirty flag.
[Table]ObField:=[MyObject]ObField // references the object field itself and 
does set the dirty flag for this object field.

To be clear, in the example database that I submitted with my bug report I 
demonstrated, as you demonstrated in your last update, that other fields were 
being saved and that only the Object Field data was being lost. I even 
demonstrated in code that the change to the object field appeared to stick 
after a SAVE RECORD and it only reverted to its original state when the record 
was reloaded. Because of this i categorized the report as a Data Loss bug and 
made the data loss part clear.

Today, (after i noticed it was marked as standard behavior) i requested that 
our documentation be updated so that we can hopefully prevent further reports 
of data loss.

Regards,
Timothy PENNER
--

> On Oct 31, 2017, at 2:39 PM, David Adams via 4D_Tech <4d_tech@lists.4d.com> 
> wrote:
> 
> On Wed, Nov 1, 2017 at 10:23 AM, Tim Nevels via 4D_Tech <
> 4d_tech@lists.4d.com> wrote:
> 
> 
>> I can guess the answer to that. The engineer responsible looked at the
>> code and said, “yeah I can fix that, but it will be a lot of work”. And
>> somebody said, "OK then don’t bother. You’ve got more important things to
>> do. We’ll just call it ‘Standard Behavior’”. Pitiful! :(
>> 
> 
> We'll never know. It could be that it is the result of a carefully thought
> out design.
> 
> Then again, you could have a function like Add(2;2) that returns 5 and
> claim that it's "standard behavior" because it's consistent. No matter
> what, it's still a bug (except for sufficiently large values of 2.)
> **
> 4D Internet Users Group (4D iNUG)
> FAQ:  http://lists.4d.com/faqnug.html
> Archive:  http://lists.4d.com/archives.html
> Options: http://lists.4d.com/mailman/options/4d_tech
> Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
> **

John Baughman
Kailua, Hawaii
(808) 262-0328
john...@hawaii.rr.com





**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: [Warning] Settings properties values on object field by object notation

2017-10-31 Thread David Adams via 4D_Tech
On Wed, Nov 1, 2017 at 10:23 AM, Tim Nevels via 4D_Tech <
4d_tech@lists.4d.com> wrote:


> I can guess the answer to that. The engineer responsible looked at the
> code and said, “yeah I can fix that, but it will be a lot of work”. And
> somebody said, "OK then don’t bother. You’ve got more important things to
> do. We’ll just call it ‘Standard Behavior’”. Pitiful! :(
>

We'll never know. It could be that it is the result of a carefully thought
out design.

Then again, you could have a function like Add(2;2) that returns 5 and
claim that it's "standard behavior" because it's consistent. No matter
what, it's still a bug (except for sufficiently large values of 2.)
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: Method to put a c-obj (or JSON) into a hierarchical list

2017-10-31 Thread Kirk Brooks via 4D_Tech
Er - "I wasn't aware the error handler would get tripped by line 14" is
what I meant to type.

On Tue, Oct 31, 2017 at 5:09 PM, Kirk Brooks  wrote:

> I wan't aware that the error handler would get tripped by that though.
>


-- 
Kirk Brooks
San Francisco, CA
===

*The only thing necessary for the triumph of evil is for good men to do
nothing.*

*- Edmund Burke*
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: [Warning] Settings properties values on object field by object notation

2017-10-31 Thread Tim Nevels via 4D_Tech
On Oct 31, 2017, at 2:00 PM, Chip Scheide wrote:

> OB SET ([Table1]Object;”value”;b_value)  //this will set the record dirty.
> 
> And, yes, I too was told that the engineers were leaning to declaring 
> this as standard behavior. Why? I have not a clue. 

I can guess the answer to that. The engineer responsible looked at the code and 
said, “yeah I can fix that, but it will be a lot of work”. And somebody said, 
"OK then don’t bother. You’ve got more important things to do. We’ll just call 
it ‘Standard Behavior’”. Pitiful! :(

Tim


Tim Nevels
Innovative Solutions
785-749-3444
timnev...@mac.com


**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: Method to put a c-obj (or JSON) into a hierarchical list

2017-10-31 Thread Tim Nevels via 4D_Tech
On Oct 31, 2017, at 2:00 PM, Koen Van Hooreweghe wrote:

> I’ve been bitten by this a while ago. There is a difference in behavior 
> interpreted and compiled. Eg following piece of code:
> 
> 1 C_OBJECT($obj)
> 2 C_TEXT($text)
> 3 C_LONGINT($long)
> 4
> 5 OB SET($obj;"property";"value”)
> 6
> 7 $text:=OB Get($obj;"nonexistent")
> 8 $text:=OB Get($obj;"nonexistent";Is text)
> 9
> 10 $long:=OB Get($obj;"nonexistent")
> 11 $long:=OB Get($obj;"nonexistent";Is longint)
> 12
> 13 ON ERR CALL("Errorhandler")
> 14 $long:=OB Get($obj;"nonexistent")
> 15 $long:=OB Get($obj;"nonexistent";Is longint)
> 16 ON ERR CALL(“”)
> 
> Interpreted: no error on lines 7 and 8, error on line 10 (54 - Argument types 
> are incompatible)
> no error on line 14, but the error handler method wil be executed
> 
> Compiled: no error on lines 7 and 8, error on line 10 (-20007 Attempting to 
> retype by using a pointer)
> On line 14, the error handler is not executed, but 4D displays error -20007 
> (Attempting to retype by using a pointer)
> 
> I would advice to always use the typing parameter (or test using OB is 
> defined)

Hi Koen,

Good info on this topic. I do use "OB Is defined” a lot to avoid the compiler 
errors. Actually I use a wrapper method that does this for me. 

It does show what 4D Engineering is getting sloppy in how they developed and 
implemented objects in 4D. They are supposed to make interpreted code produce 
the same kind of error messages that occur in compiled code. This is an example 
of that not being done. Obviously the guys doing the compiler work don’t talk 
to the guys that are doing the interpreter work. A pity. It makes for a product 
that is not “polished”. 

Reminds me of how for so long CLEAR VARIABLE acted different in interpreted 
mode compared to compiled mode. They fixed that issue. Hope they do the same 
for object. 

Tim


Tim Nevels
Innovative Solutions
785-749-3444
timnev...@mac.com


**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: pointers to arrays

2017-10-31 Thread Peter Mew via 4D_Tech
Hi Kirk
Yes all the arrays are Text Arrays.
My aim is to import all the data and load it into the various arrays. The
basic problem is that I dont know in advance, how much data there will be.
Think of it like this.
There maybe beween 1 and lets say 16 audio channels.
each audio channel maybe divided into between 1 and several hundred
segments. each boundry beween segments will have 14 parameters..
the only thing I know in advance is that each segment boundry will have 14
parameters,
I can read all the data, its just a case of filling the correct number of
arrays.
The User will be able to choose which of the upto 16 channels they want
view data for.
I will then transfer the contents of the appropriate arrays for the chosen
channel into a listbox for display
On the face of it, it should be fairly simple, its just not knowing how
many arrays are required in advance thats giving me the problems.
I shall look at your code and see if I can fit it to my requirements
Thanks
-pm

On Tue, Oct 31, 2017 at 8:47 PM, Kirk Brooks via 4D_Tech <
4d_tech@lists.4d.com> wrote:

> Peter,
> This is easy to do with local arrays and dynamic variables. It looks like
> you only need to build text arrays. You can declare a local array, ARRAY
> TEXT($aText2d;0;0). Then you can resize this to add more 'columns' as
> needed and populate them.
>
> Next you need to populate the listbox. First delete all the existing
> columns (if any) then insert the number of columns you need. To use dynamic
> vars you pass Nil for the column and header vars. Let's say you need 4
> columns, it looks like this:
>
> LISTBOX DELETE COLUMNS(*;"listboxName";1;LISTBOX GET NUMBER
> COLUMNS(*;"listboxName"))
>
> C_POINTER($nil)
>
> For($j;1;4)
>
> LISTBOX INSERT COLUMN (*;"listboxName"; $j; "col_"+string($j); $nil;
> "hdr_"+string($j); $nil)
>
> $colPtr:=object get pointer(Object named;"col_"+string($j))  //  now 4D has
> created a variable for the column and we can get its pointer
>
> COPY ARRAY($aText2d{$j};$colPtr->)  //  and copy the data to that array
>
> End for
>
> ​Even if you need mixed data types I'd still use text arrays for handling
> the display and user interface and do the data conversion on in the
> background. You can use the same approach with different types of arrays
> but it's a lot more work whereas converting to and from text is easy. ​And
> this works complied.
>
> D
> ​oes that make sense? ​Do I get your need correctly?
>
> On Tue, Oct 31, 2017 at 12:42 PM, Peter Mew via 4D_Tech <
> 4d_tech@lists.4d.com> wrote:
>
> > Thank You
> > And How do I create the Arrays in the First Place
> > -pm
> >
> >
> --
> Kirk Brooks
> San Francisco, CA
> ===
>
> *The only thing necessary for the triumph of evil is for good men to do
> nothing.*
>
> *- Edmund Burke*
> **
> 4D Internet Users Group (4D iNUG)
> FAQ:  http://lists.4d.com/faqnug.html
> Archive:  http://lists.4d.com/archives.html
> Options: http://lists.4d.com/mailman/options/4d_tech
> Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
> **
>
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: List Box Basics

2017-10-31 Thread Add Komoncharoensiri via 4D_Tech
Hi Steve,

Actually, there are plenty of resource on kb.4d.com about programming in 
selection based list box context. Here are some of the reference.

http://kb.4d.com/assetid=77856
http://kb.4d.com/assetid=77873
http://kb.4d.com/assetid=77871
http://kb.4d.com/assetid=76585
http://kb.4d.com/assetid=77320

HTH,

Add






**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: identify duplicates

2017-10-31 Thread Keith Culotta via 4D_Tech
The third parameter of DISTINCT VALUES really saves work.  Here is a strategy 
to find dups in a field within a selection.  The set can be a listbox highlight 
set.

  // 
  // Method: DuplicatesToSet
  // - 
  // INPUT1: Pointer - field
  // INPUT2: Text - Set Name
  // OUTPUT: 
  // 
$field:=$1
$set:=$2
ARRAY TEXT($aVals;0)
ARRAY LONGINT($aCount;0)

DISTINCT VALUES($field->;$aVals;$aCount)
SORT ARRAY($aCount;$aVals;<)
$pos:=Find in array($aCount;1)

If ($pos#-1)
ARRAY TEXT($aVals;$pos-1)
End if 

SET QUERY DESTINATION(Into set;$set)
QUERY SELECTION WITH ARRAY(;$field->;$aVals)
SET QUERY DESTINATION(Into current selection)


Keith - CDI

> On Oct 31, 2017, at 3:40 PM, David Witton via 4D_Tech <4d_tech@lists.4d.com> 
> wrote:
> 
> I'm looking for a strategy to identify duplicate records in a table - that
> is, records for which 3 fields are identical across two or more records -
> or in another case, where a single field is not unique.
> 
> Does anyone have a suggestion on how to proceed?
> 
> -- 
> David Witton 
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

RE: identify duplicates

2017-10-31 Thread Tai Bui via 4D_Tech
Hi David,

Perhaps using GROUP BY like Neil suggested in an SQL call in a similar fashion 
to the following will help:

Begin SQL
 SELECT tbl.fld_1,tbl.fld_2,tbl.fld_3,Count(*) AS recCount
 FROM tbl
 GROUP BY tbl.fld_1,tbl.fld_2,tbl.fld_3
 HAVING Count(*)>1
 INTO :$arrFld1,:$arrFld2,:$arrFld3,:$arrCount;
End SQL

The size of the  arrays show how many “DISTINCT” set up duplicates you have and 
the ones in the same element position show the values and the Count of 
duplicates found.

Best Regards,
-Tai B.




From: David Witton [mailto:dhwit...@gmail.com]
Sent: Tuesday, October 31, 2017 2:07 PM
To: Tai Bui
Subject: Re: identify duplicates

It helps with the single field problem - now I'm trying to solve the multiple 
field problem without creating a new field for each combination of fields I 
want to examine.

On Tue, Oct 31, 2017 at 2:43 PM, Tai Bui > 
wrote:
Hi David,

Would the DISTINCT VALUES command help?
http://doc.4d.com/4Dv16R4/4D/16-R4/DISTINCT-VALUES.301-3317277.en.html

Best Regards,
-Tai B.




Tai Bui
Technical Services Engineer

4D Inc
95 S. Market Street, Suite #240
San Jose,CA 95113
United States

Telephone: +1-408-557-4600
Fax:   +1-408-271-5080
Email: t...@4d.com
Web:   www.4d.com

-Original Message-
From: 4D_Tech 
[mailto:4d_tech-boun...@lists.4d.com] On 
Behalf Of David Witton via 4D_Tech
Sent: Tuesday, October 31, 2017 1:41 PM
To: 4D iNug Technical
Cc: David Witton
Subject: identify duplicates

I'm looking for a strategy to identify duplicate records in a table - that is, 
records for which 3 fields are identical across two or more records - or in 
another case, where a single field is not unique.

Does anyone have a suggestion on how to proceed?

--
David Witton
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  
mailto:4d_tech-unsubscr...@lists.4d.com
**



--
David Witton
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: identify duplicates

2017-10-31 Thread npdennis via 4D_Tech
> I'm looking for a strategy to identify duplicate records in a table - that
> is, records for which 3 fields are identical across two or more records -
> or in another case, where a single field is not unique.


If you are just looking for fields that are exactly the same, the SQL with 
GroupBy and Having gives a lot of flexibility
Also the Distinct Values in most recent versions has a count array as a second 
parameter, in prior versions will just give you the list of unique values

Neil

**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: identify duplicates

2017-10-31 Thread Chuck Miller via 4D_Tech
As has been recommended distinct values is your friend but it really depends 
upon what you mean by duplicates. For example Charles and Karl are the same 
name but in different languages. So what do you mean by duplicates. Also is 
case important or do able and Able equal each other 

Regards
Chuck 

Sent from my iPhone

> On Oct 31, 2017, at 4:40 PM, David Witton via 4D_Tech <4d_tech@lists.4d.com> 
> wrote:
> 
> I'm looking for a strategy to identify duplicate records in a table - that
> is, records for which 3 fields are identical across two or more records -
> or in another case, where a single field is not unique.
> 
> Does anyone have a suggestion on how to proceed?

**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: pointers to arrays

2017-10-31 Thread Kirk Brooks via 4D_Tech
Peter,
This is easy to do with local arrays and dynamic variables. It looks like
you only need to build text arrays. You can declare a local array, ARRAY
TEXT($aText2d;0;0). Then you can resize this to add more 'columns' as
needed and populate them.

Next you need to populate the listbox. First delete all the existing
columns (if any) then insert the number of columns you need. To use dynamic
vars you pass Nil for the column and header vars. Let's say you need 4
columns, it looks like this:

LISTBOX DELETE COLUMNS(*;"listboxName";1;LISTBOX GET NUMBER
COLUMNS(*;"listboxName"))

C_POINTER($nil)

For($j;1;4)

LISTBOX INSERT COLUMN (*;"listboxName"; $j; "col_"+string($j); $nil;
"hdr_"+string($j); $nil)

$colPtr:=object get pointer(Object named;"col_"+string($j))  //  now 4D has
created a variable for the column and we can get its pointer

COPY ARRAY($aText2d{$j};$colPtr->)  //  and copy the data to that array

End for

​Even if you need mixed data types I'd still use text arrays for handling
the display and user interface and do the data conversion on in the
background. You can use the same approach with different types of arrays
but it's a lot more work whereas converting to and from text is easy. ​And
this works complied.

D
​oes that make sense? ​Do I get your need correctly?

On Tue, Oct 31, 2017 at 12:42 PM, Peter Mew via 4D_Tech <
4d_tech@lists.4d.com> wrote:

> Thank You
> And How do I create the Arrays in the First Place
> -pm
>
>
-- 
Kirk Brooks
San Francisco, CA
===

*The only thing necessary for the triumph of evil is for good men to do
nothing.*

*- Edmund Burke*
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

RE: identify duplicates

2017-10-31 Thread Tai Bui via 4D_Tech
Hi David,

Would the DISTINCT VALUES command help?
http://doc.4d.com/4Dv16R4/4D/16-R4/DISTINCT-VALUES.301-3317277.en.html

Best Regards,
-Tai B.




-Original Message-
From: 4D_Tech [mailto:4d_tech-boun...@lists.4d.com] On Behalf Of David Witton 
via 4D_Tech
Sent: Tuesday, October 31, 2017 1:41 PM
To: 4D iNug Technical
Cc: David Witton
Subject: identify duplicates

I'm looking for a strategy to identify duplicate records in a table - that is, 
records for which 3 fields are identical across two or more records - or in 
another case, where a single field is not unique.

Does anyone have a suggestion on how to proceed?

--
David Witton
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: [Warning] Settings properties values on object field by object notation

2017-10-31 Thread Lee Hinde via 4D_Tech
I’m glad I came in today.


> On Oct 31, 2017, at 1:35 PM, Charles Miller via 4D_Tech 
> <4d_tech@lists.4d.com> wrote:
> 
> It must be a duck, cause calling this standard behavior is quackers. 

**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

identify duplicates

2017-10-31 Thread David Witton via 4D_Tech
I'm looking for a strategy to identify duplicate records in a table - that
is, records for which 3 fields are identical across two or more records -
or in another case, where a single field is not unique.

Does anyone have a suggestion on how to proceed?

-- 
David Witton
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: [Warning] Settings properties values on object field by object notation

2017-10-31 Thread Charles Miller via 4D_Tech
It must be a duck, cause calling this standard behavior is quackers. There
are many issues with object fields. I for one refuse to use them (Yes I
know how powerful they are and can be) as I do so much with sql and can not
get them using a sql statement.  I have commented before that 4D should not
implement a ew data type for a field unless they also update sql in some
way to accommodate it.

It would or examples be strange it they added a pony type fields like SQL
already has and did not support the same.

In fact there UUID implementation is strange as well. How do you tell if
the field is a UUID - type = alpha and length = 0, when you get field
properties

Regards

Chuck

On Tue, Oct 31, 2017 at 4:09 PM, David Adams via 4D_Tech <
4d_tech@lists.4d.com> wrote:

> > It looks like this bug ACI0097454 was marked as Standard Behavior on
> October 24th.
>
> Smells like a bug.
> Looks like a bug.
> Sounds like a bug.
> Walks like a bug.
>
> I mean, if you have a light switch that gives you a shock every time you
> touch it, you wouldn't say "Oh, it always does that. It's standard
> behavior." I mean, that's an accurate description (ouch!), but it's not a
> reasonable reaction.
> **
> 4D Internet Users Group (4D iNUG)
> FAQ:  http://lists.4d.com/faqnug.html
> Archive:  http://lists.4d.com/archives.html
> Options: http://lists.4d.com/mailman/options/4d_tech
> Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
> **
>



-- 
-
 Chuck Miller Voice: (617) 739-0306 Fax: (617) 232-1064
 Informed Solutions, Inc.
 Brookline, MA 02446 USA Registered 4D Developer
   Providers of 4D, Sybase & SQL Server connectivity
  http://www.informed-solutions.com
-
This message and any attached documents contain information which may be
confidential, subject to privilege or exempt from disclosure under
applicable law.  These materials are intended only for the use of the
intended recipient. If you are not the intended recipient of this
transmission, you are hereby notified that any distribution, disclosure,
printing, copying, storage, modification or the taking of any action in
reliance upon this transmission is strictly prohibited.  Delivery of this
message to any person other than the intended recipient shall not
compromise or waive such confidentiality, privilege or exemption
from disclosure as to this communication.
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: pointers to arrays

2017-10-31 Thread Peter Mew via 4D_Tech
OK
thanks
There will be a maximum of 16 passes through the loop, with a maximum of 14
arrays declared on each pass.
each array could have between 1 and a couple of hundred elements. it
depends on the size of the original document, from where all the original
data is imported. each one of the 14 arrays will be the same size, to be
displayed in a listbox
The final code will be compiled.
BTW this is v13 MAC Yosemite
Ill give it a try
thanks again
-pm

On Tue, Oct 31, 2017 at 7:29 PM, Peter Mew  wrote:

> Hi
> I want to achieve the following:
> To Loop through a block of code (the number of times will be determined
> elsewhere, but may well be different each time).
> Create a set of arrays that will have the same name + the loop counter,
> for each pass through the loop
> So pass 1 might create 3 arrays called Array101 Array201 Array301
> pass 2 would create arrays called Array102 Array202 Array302
> and so on
> the arrays would be filled with data by the code in the loop
>
> I then want to be able to reference these arrays, to retreive the data in
> the arrays according the loop number that created them
> So I might want to get the data for pass 2, from Array102 Array202
> Array302, and display it elsewhere.
>
> Im pretty sure I need to use pointers to accomplish this, but I dont know
> how.
> Could someone point (sic) me in the right direction
>
> Thanks
> -pm
>
>
>
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: pointers to arrays

2017-10-31 Thread Chip Scheide via 4D_Tech
Peter,

IF your code will never be compiled the first code I sent will work, 
and you will be creating arrays 'on the fly', if you do this, I suggest 
you create local arrays, array names starting with a '$', so that they 
are thrown away at the end of the process/method.

IF you code will EVER be compiled, trying to create them on the fly 
will create 'issues'.
You can try using the listbox solution posted by Keith, or you can 
simply create a bunch of arrays and keep them around.

Then you can do what both Keith, and I showed you to get a pointer to 
the array(s) you need.
Of course for the predefined arrays to work, you will need to know what 
a maximum number you will need.


`Method : Bunch_of_Arrays
`n = some number, probably 10

Array Text(at_Array_Text_01;0)
Array Text(at_Array_Text_02;0)
...
Array Text(at_Array_Text_;0)

Array Longint(al_Array_Long_01;0)
Array Longint(al_Array_Long_02;0)
...
Array Longint(al_Array_Long_;0)

` for each type of array you will need



For the 2D approach, a 2D array you declare it:
Array Text($2D_Array_Name;Size_1;Size_2)

you reference it using:
2D_Array_Name{$Row}{$Column}

You can then resize it as needed

On Tue, 31 Oct 2017 19:54:33 +, Peter Mew via 4D_Tech wrote:
> If I read that correctly, that will create the arrays for pass 1 through
> the loop, but what about creating the arrays for pass 2, and any subsequent
> passes.
> I expected to create the arrays, as they were needed, for each pass.
> something like
---
Gas is for washing parts
Alcohol is for drinkin'
Nitromethane is for racing 
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: [Warning] Settings properties values on object field by object notation

2017-10-31 Thread David Adams via 4D_Tech
> It looks like this bug ACI0097454 was marked as Standard Behavior on
October 24th.

Smells like a bug.
Looks like a bug.
Sounds like a bug.
Walks like a bug.

I mean, if you have a light switch that gives you a shock every time you
touch it, you wouldn't say "Oh, it always does that. It's standard
behavior." I mean, that's an accurate description (ouch!), but it's not a
reasonable reaction.
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: [Warning] Settings properties values on object field by object notation

2017-10-31 Thread Chip Scheide via 4D_Tech
THIS is definitely a bug.

Past behavior is if a field is modified (even assigning itself to 
itself) sets the 'dirty' flag, and the ENTIRE record is to be saved.


On Tue, 31 Oct 2017 09:58:09 -1000, John Baughman via 4D_Tech wrote:
> 
> ALL RECORDS([Patient Record])
> [Patient Record] Test.testing:=“NewTest” 
> [Patient Record]Comment:=“Comment”
> SAVE RECORD([Patient Record])
> //NOTE: The table trigger fired and the comment field WAS updated. 
> But the object field WAS NOT updated. BOOO!
---
Gas is for washing parts
Alcohol is for drinkin'
Nitromethane is for racing 
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: pointers to arrays

2017-10-31 Thread Chip Scheide via 4D_Tech
compiler declaration(s)

Array (Variable_Name;Size)

 is the type of the array you want, text, longint, etc

On Tue, 31 Oct 2017 19:42:42 +, Peter Mew via 4D_Tech wrote:
> Thank You
> And How do I create the Arrays in the First Place
> -pm
> 
> On Tue, Oct 31, 2017 at 7:32 PM, npdennis  wrote:
> 
>>> Im pretty sure I need to use pointers to accomplish this, but I dont
>> know how.
>> 
>> Try the command Get Pointer…
>> 
>> $p:=Get Pointer(“Array201”)
>> or
>> $x:=201
>> $p:=Get Pointer(“Array”+string($x))
>> 
>> However compiled you may need to have the arrays declared some place.
>> 
>> Neil
>> 
>> 
>> 
> **
> 4D Internet Users Group (4D iNUG)
> FAQ:  http://lists.4d.com/faqnug.html
> Archive:  http://lists.4d.com/archives.html
> Options: http://lists.4d.com/mailman/options/4d_tech
> Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
> **
---
Gas is for washing parts
Alcohol is for drinkin'
Nitromethane is for racing 
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: pointers to arrays

2017-10-31 Thread Chip Scheide via 4D_Tech
some pseudo code to follow:
an out line would be:

if the code is not compiled the following will work, if it is (or is 
going to be) then you need to create the arrays before hand. For the 
example all arrays are text.

Array pointer($New_Array_Handles;0)

For ($i;1;$Number_Of_Arrays)
  $Array_Name:= "Array_"+String($i;"00) 
  $Array_Pointer := Get Pointer($Array_Name) `gives a pointer to 
Array_01, Array_02 ...

` assume all arrays are text
  Array Text($Array_Pointer->;0)

` depending on what you are doing you can add data here
  Insert in array($Array_Pointer->;$Where;$How_Many)
  for($ii;1;$data_size)
Array_Pointer->{$ii}:=$New_Data
  end for
` or
  Append to array($Array_Pointer->;$Data)
  
` or you can add the array pointer to another array to 
reference later
  Append to array($New_Array_Handles;$Array_Pointer) `adds pointer to 
new array
end for

To reference the specific element of an array through a pointer
$Array_Pointer->{$Element_Number}

To reference from the pointer array
$New_Array_Handles->{$Which_array}->{$Element_Number}

in some instances, you will find 4D chokes on second reference (context 
dependent) so you can use either of the following as well:
($New_Array_Handles->{$Which_array})->{$Element_Number}
  ` or in 2 steps
$Pointer_To_Array:=$New_Array_Handles->{$Which_array}
$Pointer_To_Array->{$Element_Number}

On Tue, 31 Oct 2017 19:29:18 +, Peter Mew via 4D_Tech wrote:
> Hi
> I want to achieve the following:
> To Loop through a block of code (the number of times will be determined
> elsewhere, but may well be different each time).
> Create a set of arrays that will have the same name + the loop counter, for
> each pass through the loop
> So pass 1 might create 3 arrays called Array101 Array201 Array301
> pass 2 would create arrays called Array102 Array202 Array302
> and so on
> the arrays would be filled with data by the code in the loop
> 
> I then want to be able to reference these arrays, to retreive the data in
> the arrays according the loop number that created them
> So I might want to get the data for pass 2, from Array102 Array202
> Array302, and display it elsewhere.
> 
> Im pretty sure I need to use pointers to accomplish this, but I dont know
> how.
> Could someone point (sic) me in the right direction
> 
> Thanks
> -pm
> **
> 4D Internet Users Group (4D iNUG)
> FAQ:  http://lists.4d.com/faqnug.html
> Archive:  http://lists.4d.com/archives.html
> Options: http://lists.4d.com/mailman/options/4d_tech
> Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
> **
---
Gas is for washing parts
Alcohol is for drinkin'
Nitromethane is for racing 
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: pointers to arrays

2017-10-31 Thread npdennis via 4D_Tech
> but that doesnt work, hence my question

If you want to run compiled you will need to use a list box to create dynamic 
arrays… or declare every possible combination you will use in a method and use 
get pointer…

However in your case you might be able to use a 2D array, or depending on what 
version of 4D you are using you may be able to use a C_Object

Neil

--
Neil Dennis
4D Developer since 1990

**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: pointers to arrays (and List Box Basics)

2017-10-31 Thread Keith Culotta via 4D_Tech
A past discussion mentioned creating arrays on the fly using a Listbox command 
that creates columns.


This is for an array listbox.
http://livedoc.4d.com/4D-Language-Reference-16.2/List-Box/LISTBOX-INSERT-COLUMN.301-3433513.en.html
 C_POINTER($NilPtr)
 LISTBOX INSERT 
COLUMN(*;"MyListBox";1;"MyNewColumn";$NilPtr;"MyNewHeader";$NilPtr)
 ColPtr:=OBJECT Get pointer(Object named;"MyNewColumn")
 ARRAY TEXT(ColPtr->;10)

Keith - CDI

> On Oct 31, 2017, at 2:42 PM, Peter Mew via 4D_Tech <4d_tech@lists.4d.com> 
> wrote:
> 
> Thank You
> And How do I create the Arrays in the First Place
> -pm
> 
> On Tue, Oct 31, 2017 at 7:32 PM, npdennis  wrote:
> 
>>> Im pretty sure I need to use pointers to accomplish this, but I dont
>> know how.
>> 
>> Try the command Get Pointer…
>> 
>> $p:=Get Pointer(“Array201”)
>> or
>> $x:=201
>> $p:=Get Pointer(“Array”+string($x))
>> 
>> However compiled you may need to have the arrays declared some place.
>> 
>> Neil
>> 
>> 
>> 
> **
> 4D Internet Users Group (4D iNUG)
> FAQ:  http://lists.4d.com/faqnug.html
> Archive:  http://lists.4d.com/archives.html
> Options: http://lists.4d.com/mailman/options/4d_tech
> Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
> **

**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: pointers to arrays

2017-10-31 Thread Peter Mew via 4D_Tech
OK
If I read that correctly, that will create the arrays for pass 1 through
the loop, but what about creating the arrays for pass 2, and any subsequent
passes.
I expected to create the arrays, as they were needed, for each pass.
something like

For ($i;1;Size of array(EDLBlockArray))
If ($i<10)
stringi:="0"+String($i)
Else
stringi:=String($i)
End if

FileName:="FileName"+stringi
ARRAY TEXT(FileName;0)
InfadeMS:="InfadeMS"+stringi
ARRAY TEXT(InfadeMS;0)
InFadeSamp:="InFadeSamp"+stringi
ARRAY TEXT(InFadeSamp;0)
OutfadeMS:="OutfadeMS"+stringi
ARRAY TEXT(OutfadeMS;0)
OutFadeSamp:="OutFadeSamp"+stringi
ARRAY TEXT(OutFadeSamp;0)
SourceStartMS:="SourceStartMS"+stringi
ARRAY TEXT(SourceStartMS;0)
SourceStartSamp:="SourceStartSamp"+stringi
ARRAY TEXT(SourceStartSamp;0)
SourceEndMS:="SourceEndMS"+stringi
ARRAY TEXT(SourceEndMS;0)
SourceEndSamp:="SourceEndSamp"+stringi
ARRAY TEXT(SourceEndSamp;0)
DestStartMS:="DestStartMS"+stringi
ARRAY TEXT(DestStartMS;0)
DestStartSamp:="DestStartSamp"+stringi
ARRAY TEXT(DestStartSamp;0)
DurationMS:="DurationMS"+stringi
ARRAY TEXT(DurationMS;0)
DurationSamp:="DurationSamp"+stringi
ARRAY TEXT(DurationSamp;0)
Gain:="Gain"+stringi
ARRAY TEXT(Gain;0)
end for

but that doesnt work, hence my question
-pm

On Tue, Oct 31, 2017 at 7:47 PM, npdennis  wrote:

> And How do I create the Arrays in the First Place
>
>
> If you are running compiled you I think will need to type the arrays in a
> method someplace so the compiler knows about the arrays. I know that some
> variable types don’t need compiler declarations, but I think arrays do.
>
> // Some method maybe a COMPILER_ARRAY method
> Array text (array1;0)
> Array text (array2;0)
> Array text (array3;0)
> Array text (array4;0)
> // add the arrays you will use here
>
>
>
> // Method to assign the arrays
>
> $p:=Get Pointer(“array”+string($1)) // assuming you pass in the array
> number such as one
>
> // Then use the pointer -> wherever you would use the array
>
> Array Text($p->;20)
> $p->{1}:=“One"
>
> // Or maybe something like
>
> Selection To Array([Table]Field;$p->)
>
>
>
> Neil
>
>
> --
> Neil Dennis
> 4D Developer since 1990
>
>
>
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: pointers to arrays

2017-10-31 Thread npdennis via 4D_Tech
> And How do I create the Arrays in the First Place

If you are running compiled you I think will need to type the arrays in a 
method someplace so the compiler knows about the arrays. I know that some 
variable types don’t need compiler declarations, but I think arrays do.

// Some method maybe a COMPILER_ARRAY method
Array text (array1;0)
Array text (array2;0)
Array text (array3;0)
Array text (array4;0)
// add the arrays you will use here



// Method to assign the arrays

$p:=Get Pointer(“array”+string($1)) // assuming you pass in the array number 
such as one

// Then use the pointer -> wherever you would use the array

Array Text($p->;20)
$p->{1}:=“One"

// Or maybe something like

Selection To Array([Table]Field;$p->)



Neil


--
Neil Dennis
4D Developer since 1990


**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: pointers to arrays

2017-10-31 Thread Peter Mew via 4D_Tech
Thank You
And How do I create the Arrays in the First Place
-pm

On Tue, Oct 31, 2017 at 7:32 PM, npdennis  wrote:

> > Im pretty sure I need to use pointers to accomplish this, but I dont
> know how.
>
> Try the command Get Pointer…
>
> $p:=Get Pointer(“Array201”)
> or
> $x:=201
> $p:=Get Pointer(“Array”+string($x))
>
> However compiled you may need to have the arrays declared some place.
>
> Neil
>
>
>
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: pointers to arrays

2017-10-31 Thread npdennis via 4D_Tech
> Im pretty sure I need to use pointers to accomplish this, but I dont know how.

Try the command Get Pointer…

$p:=Get Pointer(“Array201”)
or
$x:=201
$p:=Get Pointer(“Array”+string($x))

However compiled you may need to have the arrays declared some place.

Neil


**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

pointers to arrays

2017-10-31 Thread Peter Mew via 4D_Tech
Hi
I want to achieve the following:
To Loop through a block of code (the number of times will be determined
elsewhere, but may well be different each time).
Create a set of arrays that will have the same name + the loop counter, for
each pass through the loop
So pass 1 might create 3 arrays called Array101 Array201 Array301
pass 2 would create arrays called Array102 Array202 Array302
and so on
the arrays would be filled with data by the code in the loop

I then want to be able to reference these arrays, to retreive the data in
the arrays according the loop number that created them
So I might want to get the data for pass 2, from Array102 Array202
Array302, and display it elsewhere.

Im pretty sure I need to use pointers to accomplish this, but I dont know
how.
Could someone point (sic) me in the right direction

Thanks
-pm
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

List Box Basics

2017-10-31 Thread Steven Prins via 4D_Tech
Greetings All!  

So I guess this is another one of those “Don’t reinvent the wheel if I don’t 
have to” queries.  

If any one would be so kind as to point me in the direction of useful resources 
pertinent to the programmatic management of the data source in selection-based 
List Boxes, including useful code or sample DBs they might be willing to share, 
it would be greatly appreciated.  The documentation suggests that this can be 
done,  but it appears that there is more to it than simply invoking LISTBOX SET 
TABLE SOURCE.  Please forgive me if I have overlooked something obvious, but 
having reviewed the documentation, and searched the 4D KB and Forums (shouldn’t 
that be Fora?), I cannot find anything in the public domain, i.e. not 
restricted to partners/summit attendees, that provides either sample code or 
DBs, to demonstrate how this is done in practice.  And I seem to be having very 
little luck trying to figure it out on my own...


Thanks in advance.

Cheers!

Steven Prins
Santa Fe, NM
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: [Warning] Settings properties values on object field by object notation

2017-10-31 Thread Chip Scheide via 4D_Tech

> 
> The problem is that the dirty flag is not set when dot notation is 
> used against an object field. In your scenario the following will work
> …
 field modified = field modified --right?!?!
 
> OB SET ([Table1]Object;”value”;b_value)  //this will set the record dirty.
> 
> And, yes, I too was told that the engineers were leaning to declaring 
> this as standard behavior. Why? I have not a clue. 
see above 

Hell is other people 
 Jean-Paul Sartre
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: Method to put a c-obj (or JSON) into a hierarchical list

2017-10-31 Thread Koen Van Hooreweghe via 4D_Tech
Hi Tim,

I’ve been bitten by this a while ago. There is a difference in behavior 
interpreted and compiled. Eg following piece of code:

 1 C_OBJECT($obj)
 2 C_TEXT($text)
 3 C_LONGINT($long)
 4
 5 OB SET($obj;"property";"value”)
 6
 7 $text:=OB Get($obj;"nonexistent")
 8 $text:=OB Get($obj;"nonexistent";Is text)
 9
10 $long:=OB Get($obj;"nonexistent")
11 $long:=OB Get($obj;"nonexistent";Is longint)
12
13 ON ERR CALL("Errorhandler")
14 $long:=OB Get($obj;"nonexistent")
15 $long:=OB Get($obj;"nonexistent";Is longint)
16 ON ERR CALL(“”)

Interpreted: no error on lines 7 and 8, error on line 10 (54 - Argument types 
are incompatible)
no error on line 14, but the error handler method wil be executed

Compiled: no error on lines 7 and 8, error on line 10 (-20007 Attempting to 
retype by using a pointer)
On line 14, the error handler is not executed, but 4D displays error -20007 
(Attempting to retype by using a pointer)

I would advice to always use the typing parameter (or test using OB is defined)

HTH
Koen



> Op 30 okt. 2017, om 20:20 heeft Tim Nevels via 4D_Tech <4d_tech@lists.4d.com> 
> het volgende geschreven:
> 
> I did not know that if you include the type in OB GET and the property does 
> not exist in the object you don’t get an error.




Compass bvba
Koen Van Hooreweghe
Kloosterstraat 65
9910 Knesselare
Belgium
tel +32 495 511.653

**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Slow characters visualization

2017-10-31 Thread stardata.info via 4D_Tech

Hi all,

I use 4D V15.5 on windows.
Sometimes when i write a method the editor is not fast responsive, i 
fact i can see the character digited only after one second.


Someone know th reason, and how i can solve?

Thanks
Ferdinando


**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: [Warning] Settings properties values on object field by object notation

2017-10-31 Thread Arnaud de Montard via 4D_Tech

> Le 31 oct. 2017 à 05:03, Chip Scheide via 4D_Tech <4d_tech@lists.4d.com> a 
> écrit :
> 
> Alberto,
> doesn't Goto REcord ([table];0) - generate an error?
> there is no record number 0

Hi Chip, 
"physical" record numbers start from zero, see here:

"If N is the number of records in the table, element 0 of the array corresponds 
to record number 0, element 1 of the array corresponds to record number 1, etc."
In the same way, all records+longint array from selection --> array{0} is 0 and 
is a record number. 

Alberto, 
I'd call that a standard bughaviour. 

-- 
Arnaud de Montard 



**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: [Warning] Settings properties values on object field by object notation

2017-10-31 Thread Wayne Stewart via 4D_Tech
Chip,

Record 0 is the first record in the table. 

Of course it may have been deleted and the number not reallocated. 

Regards,

Wayne
Sent from my iPhone

> On 31 Oct 2017, at 15:03, Chip Scheide via 4D_Tech <4d_tech@lists.4d.com> 
> wrote:
> 
> Alberto,
> doesn't Goto REcord ([table];0) - generate an error?
> there is no record number 0
> 
> from documentation :
> If record is less than the smallest record number in the database or greater 
> than the greatest record number in the database
> 
> 
>> Hello,
>> 
>> If the value of a property is modified using object notation directly 
>> over an object field the modified value is not stored on the record.
>> This is reproducible in v16R4 and v16R5.
>> 
>> 
>> READ WRITE([Table1])
>> GOTO RECORD([Table1];0)  // [Table1]Object.value is False
>> $b_value:=True
>> [Table1]Object.value:=$b_value 
>> SAVE RECORD([Table1])  // [Table1]Object.value is True after Save Record
>> UNLOAD RECORD([Table1])
>> GOTO RECORD([Table1];0)  // after changing the current selection by 
>> reloading the record [Table1]Object.value is false
>> 
>> I reported this to 4D via TAOW and the Forum.
>> 4D answer was that is as standard behavior and they recommend me to 
>> assign the object field to itself after modification. 
>> 
>> You can also use OB SET or assign the object to a variable and work 
>> with it before reassign it to the object field.
>> 
>> Alberto.
>> 
>> 
>> 
>> **
>> 4D Internet Users Group (4D iNUG)
>> FAQ:  http://lists.4d.com/faqnug.html
>> Archive:  http://lists.4d.com/archives.html
>> Options: http://lists.4d.com/mailman/options/4d_tech
>> Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
>> **
> 
> Hell is other people 
> Jean-Paul Sartre
> **
> 4D Internet Users Group (4D iNUG)
> FAQ:  http://lists.4d.com/faqnug.html
> Archive:  http://lists.4d.com/archives.html
> Options: http://lists.4d.com/mailman/options/4d_tech
> Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
> **
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: [Warning] Settings properties values on object field by object notation

2017-10-31 Thread David Adams via 4D_Tech
On Tue, Oct 31, 2017 at 8:21 AM, Alberto Bachler via 4D_Tech <
4d_tech@lists.4d.com> wrote:

Just a quick note of thanks for posting this behavior to the list.

On Tue, Oct 31, 2017 at 3:49 PM, John Baughman via 4D_Tech <
4d_tech@lists.4d.com> wrote:

...and to you too John for posting that you also got an official response.
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**