[Gambas-user] Safety for collections
BB
adamnt42 at gmail.com
Tue Aug 22 14:27:40 CEST 2023
On 22/8/23 9:11 pm, Bruce Steers wrote:
>
>
> On Tue, 22 Aug 2023 at 12:19, BB <adamnt42 at gmail.com
> <mailto:adamnt42 at gmail.com>> wrote:
>
>
> On 22/8/23 8:38 pm, BB wrote:
>>
>> There is probably a simple way to do this, damned if I can see how.
>>
>> I have a collection of things (datObjects) that have a property
>> (ObjectName::string) that in UML terms are Unique and ID. What I
>> am trying to do is prevent the _replacement_ of an object in the
>> collection if the ObjectName is already there. Better still, I'd
>> like to warn the user when they enter the ObjectName that it
>> already exists.
>>
>> The input form has a TextBox for the ObjectName and a "save"
>> button. The latter updates the collection, whose key is the
>> ObjectName, either adding or amending the item in the collection.
>> So I kind of need to do this:
>>
>> 1) Are they really trying to add a new item or update an existing
>> one?
>>
>> If adding then prevent them from overwriting one with the same
>> ObjectName, otherwise if amending then only allow changes to the
>> other data and not the ObjectName.
>>
>> 2) Then update the collection accordingly.
>>
>> Is that clear? It isn't to me. Any input would really be appreciated.
>>
>> b
>>
>> p.s. I am trying to avoid having separate Add and Update buttons
>> for reasons.
>>
> I may have oversimplified. The basic gen is that there is a form
> with a list of some type on the left and an "editor" panel on the
> right. The user clicks on an item in the list and the data for
> that item is loaded in the editor. Now the quick way for them to
> add a new item is to click on a similar one, give it a new name
> and change some of the other data as required, then click the save
> button. BUT the new name they use may already exist. ... ...
>
>
> I may not be getting the jist as i only have simple code to suggest..
>
> If datObjects.Exist(sName) Then
>
> Dim c As Integer = 2
> While dat.Objects.Exist(sName & Str(c))
> Inc c
> Wend
> sName = sName & Str(c)
> Endif
>
> That'll try Name2, Name3 etc till a free name is found.
>
> Respects
> BruceS
>
OK, you have given me a start. The real issue is that the structured
naming convention was invented by a very clever person from a town in a
European country that may-or-may-not end in "ermany" (or "eutschland" if
you prefer). A name looks like this "ind_cl3_1x2_E0_03_09". Zounds egad!
you may exclaim*. That "_03_" is an index (that indicates a color
variant), so I can at least use your idea there. I think that I may have
to denature that name into some sort of structure somehow, which is a
damn problem as the so called structure seems to be an idea rather than
a standard and there are many, lets say, "irregularities" in usage. 🙁
txs
b
* The "full" explanation of that name is "this is an industrial building
in climate zone 3 that occupies 2 building blocks (1 wide by 2 long)
that can or was only be built in or after "epoch" 0**, color variant 3
and an 09 something (that is yet to be determined). You can see, I
believe why users have some kind of difficulty in creating or copying
new names.
** Australia is a wonderful place, there are only two epochs "before"
and "after" a certain Captain Arthur Phillip
<https://en.wikipedia.org/wiki/Arthur_Phillip> arrived. Actually there
are really 3 but I wont go into that piece of political prehistory.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20230822/6a8e166b/attachment.htm>
More information about the User
mailing list