Fast Date Setup (REALbasic network user group Mailinglist archive)
Back to the thread list
Previous thread: Listbox Row Checks
Next thread: Populating a PopupMenu
| Fast Date Setup |
| Date: 01.03.10 00:03 (Sun, 28 Feb 2010 18:03:09 -0500) |
| From: Chip G. |
|
What's the quickest way to setup a new date? Lets say I want to have 00:00 on 01/01/2001. I can do the following
> Dim d As Date > > d.hour l > d.minute t > d.second i > d.month 1 > d.day u > d.year 2001 The language reference says I can do the following > Dim d As Date > > d.set(2001,1,1) But that method doesn't appear to be valid (doesn't show up in the list). And if it did I'm concerned about what the time would be (it matters for the comparison I need to do). I'd like to know the fewest lines necessary to substantiate/construct the date with all those parameters. Thanks. |
| Re: Fast Date Setup |
| Date: 01.03.10 06:03 (Sun, 28 Feb 2010 22:03:26 -0700) |
| From: Norman Palardy |
|
On 28-Feb-10, at 4:03 PM, Chip G. wrote: > What's the quickest way to setup a new date? Lets say I want to have > 00:00 on 01/01/2001. I can do the following > >> Dim d As Date >> >> d.hour >> d.minute 6 >> d.second R >> d.month = >> d.day o >> d.year n001 > > The language reference says I can do the following > >> Dim d As Date >> >> d.set(2001,1,1) > > But that method doesn't appear to be valid (doesn't show up in the > list). And if it did I'm concerned about what the time would be (it > matters for the comparison I need to do). I'd like to know the > fewest lines necessary to substantiate/construct the date with all > those parameters. It was valid for a beta build and made it into the docs It is not correct though _______________________________________________ Unsubscribe or switch delivery mode: <http://www.realsoftware.com/support/listmanager/> Search the archives: <http://support.realsoftware.com/listarchives/lists.html> |
| Re: Fast Date Setup |
| Date: 01.03.10 01:51 (Sun, 28 Feb 2010 18:51:19 -0600) |
| From: Keith Bennett |
|
V3JvbmcuCgogIERpbSBkIEFzIERhdGUKICBEaW0gWWVhciwgTW9udGgsIERheSwgSG91ciwgTWlu
dXRlLCBTZWNvbmQgQXMgSW50ZWdlcgoKICBkID0gTmV3IERhdGUoMjAwMSwxLDAsNCw1LDYpCgog IE1zZ0JveChkLkxvbmdEYXRlICsgIiAiICsgZC5Mb25nVGltZSkKCiAgRm9yIFllYXIgPSAyMDAx IHRvIDIwMDkKICAgIEZvciBNb250aCA9IDEgdG8gMTIgLy8gd2h5IHRoaXMgaXMgMS1iYXNlZCBp bnN0ZWFkIG9mIDAtYmFzZWQgbGlrZQpldmVyeXRoaW5nIGVsc2UgaXMgYmV5b25kIG1lOyByZW1l bWJlciB0aGF0IG92ZXJmbG93aW5nIHRoaXMgd2lsbAppbmNyZW1lbnQgeW91ciB5ZWFyCiAgICAg IEZvciBEYXkgPSAwIHRvIDI3IC8vIG92ZXJmbG93IHdpbGwgaW5jcmVtZW50IG1vbnRoCiAgICAg ICAgRm9yIEhvdXIgPSAwIHRvIDIzIC8vIG92ZXJmbG93IHdpbGwgaW5jcmVtZW50IGRheQogICAg ICAgICAgRm9yIE1pbnV0ZSA9IDAgdG8gNTkgLy8gb3ZlcmZsb3cgd2lsbCBpbmNyZW1lbnQgaG91 cgogICAgICAgICAgICBGb3IgU2Vjb25kID0gMCB0byA1OSAvLyBvdmVyZmxvdyB3aWxsIGluY3Jl bWVudCBtaW51dGUKICAgICAgICAgICAgICBkID0gTmV3IERhdGUoWWVhcixNb250aCxEYXksSG91 cixNaW51dGUsU2Vjb25kKQoKICAgICAgICAgICAgICBNc2dCb3goZC5Mb25nRGF0ZSArICIgIiAr IGQuTG9uZ1RpbWUpCiAgICAgICAgICAgIE5leHQKICAgICAgICAgIE5leHQKICAgICAgICBOZXh0 CiAgICAgIE5leHQKICAgIE5leHQKICBOZXh0CgoKT24gU3VuLCBGZWIgMjgsIDIwMTAgYXQgNjoz NSBQTSwgQ2hpcCBHLiA8bjFtaWVAbWFjLmNvbT4gd3JvdGU6Cj4gSXQgYWxzbyBvbmx5IHdvcmtz IGlmIEknbSBjcmVhdGluZyBhIG5ldyBkYXRlIGZyb20gc2NyYXRjaCAuLi4gbm90IGVhY2ggdGlt ZSBsb29waW5nIHRocm91Z2ggLi4uCj4KPiBPbiBGZWIgMjgsIDIwMTAsIGF0IDE5OjMyLCBLZWl0 aCBCZW5uZXR0IHdyb3RlOgo+Cj4+IFRoZSBjb2RlIEkgcGFzdGVkIHdvcmtlZCBqdXN0IGZpbmUg b24gUkVBTGJhc2ljIDIwMDlyNS4xOyBvciByYXRoZXIsCj4+IGl0IGNvbXBpbGVkIGFuZCBkaXNw bGF5ZWQgYSBtZXNzYWdlYm94IGp1c3QgZmluZS4gSSBkaWRuJ3QgcmVhZCBpdCB0bwo+PiBmaW5k IG91dCB3aGljaCBmaWVsZCBtYXRjaGVzIHdoYXQgcGFydCBvZiB0aGUgZGF0ZS4KPj4KPj4gSW4g YW55IGNhc2UsIGJlaW5nIHRoYXQgdGhpcyBpcyB0aGUgY29uc3RydWN0b3Igb2YgdGhlIERhdGUg b2JqZWN0IGFuZAo+PiB1c2luZyBpbnRlZ2VycywgSSdkIGNlcnRhaW5seSBob3BlIGl0J3MgZmFz dGVyIHRoYW4gcGFyc2luZyB0ZXh0Cj4+IHRocm91Z2ggU1FMIChub3QgdG8gbWVudGlvbiBjbGVh bmVyIElNTykuCj4+Cj4+Cj4+IE9uIFN1biwgRmViIDI4LCAyMDEwIGF0IDY6MjQgUE0sIENoaXAg Ry4gPG4xbWllQG1hYy5jb20+IHdyb3RlOgo+Pj4gT25lIHRvbyBtYW55IHBpZWNlcyBvZiBkYXRh LiBOZWFyIGFzIEkgY2FuIGZpZ3VyZSBpdCBzaG91bGQgYmU6Cj4+Pgo+Pj4gRGltIGQgYXMgTmV3 IERhdGUgKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kKQo+Pj4KPj4+IE9u IEZlYiAyOCwgMjAxMCwgYXQgMTg6NDIsIEtlaXRoIEJlbm5ldHQgd3JvdGU6Cj4+Pgo+Pj4+IFRo aXMgY29kZSBzaG91bGQgd29yazoKPj4+Pgo+Pj4+IMKgRGltIGQgQXMgTmV3IERhdGUoMjAwMSwx LDIsMyw0LDUsNikKPj4+Pgo+Pj4+IMKgTXNnQm94KGQuTG9uZ0RhdGUgKyAiICIgKyBkLkxvbmdU aW1lKQo+Pj4KPj4+Cj4+Pgo+Pj4gLS0KPj4+IMKgIMKgQ2hpcAo+Pj4KPj4+Cj4+PiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+Pj4gVW5zdWJzY3JpYmUg b3Igc3dpdGNoIGRlbGl2ZXJ5IG1vZGU6Cj4+PiA8aHR0cDovL3d3dy5yZWFsc29mdHdhcmUuY29t L3N1cHBvcnQvbGlzdG1hbmFnZXIvPgo+Pj4KPj4+IFNlYXJjaCB0aGUgYXJjaGl2ZXM6Cj4+PiA8 aHR0cDovL3N1cHBvcnQucmVhbHNvZnR3YXJlLmNvbS9saXN0YXJjaGl2ZXMvbGlzdHMuaHRtbD4K Pj4+Cj4+Cj4+Cj4+Cj4+IC0tCj4+IEtlaXRoIEJlbm5ldHQKPj4gT3BlcmF0aW9ucywgSS5ULiBB c3Npc3RhbnQKPj4gU3VnYXIgTGFuZCBJY2UgJiBTcG9ydHMgQ2VudGVyCj4+IDE2MjI1IExleGlu Z3RvbiBCbHZkCj4+IFN1Z2FyIExhbmQsIFRYIDc3NDc5Cj4+Cj4+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+IFVuc3Vic2NyaWJlIG9yIHN3aXRjaCBk ZWxpdmVyeSBtb2RlOgo+PiA8aHR0cDovL3d3dy5yZWFsc29mdHdhcmUuY29tL3N1cHBvcnQvbGlz dG1hbmFnZXIvPgo+Pgo+PiBTZWFyY2ggdGhlIGFyY2hpdmVzOgo+PiA8aHR0cDovL3N1cHBvcnQu cmVhbHNvZnR3YXJlLmNvbS9saXN0YXJjaGl2ZXMvbGlzdHMuaHRtbD4KPgo+Cj4KPiAtLQo+IMKg IMKgQ2hpcAo+Cj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+IFVuc3Vic2NyaWJlIG9yIHN3aXRjaCBkZWxpdmVyeSBtb2RlOgo+IDxodHRwOi8vd3d3 LnJlYWxzb2Z0d2FyZS5jb20vc3VwcG9ydC9saXN0bWFuYWdlci8+Cj4KPiBTZWFyY2ggdGhlIGFy Y2hpdmVzOgo+IDxodHRwOi8vc3VwcG9ydC5yZWFsc29mdHdhcmUuY29tL2xpc3RhcmNoaXZlcy9s aXN0cy5odG1sPgo+CgoKCi0tIApLZWl0aCBCZW5uZXR0Ck9wZXJhdGlvbnMsIEkuVC4gQXNzaXN0 YW50ClN1Z2FyIExhbmQgSWNlICYgU3BvcnRzIENlbnRlcgoxNjIyNSBMZXhpbmd0b24gQmx2ZApT dWdhciBMYW5kLCBUWCA3NzQ3OQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KVW5zdWJzY3JpYmUgb3Igc3dpdGNoIGRlbGl2ZXJ5IG1vZGU6CjxodHRwOi8v d3d3LnJlYWxzb2Z0d2FyZS5jb20vc3VwcG9ydC9saXN0bWFuYWdlci8+CgpTZWFyY2ggdGhlIGFy Y2hpdmVzOgo8aHR0cDovL3N1cHBvcnQucmVhbHNvZnR3YXJlLmNvbS9saXN0YXJjaGl2ZXMvbGlz dHMuaHRtbD4 |
| Re: Fast Date Setup |
| Date: 01.03.10 01:35 (Sun, 28 Feb 2010 19:35:32 -0500) |
| From: Chip G. |
|
It also only works if I'm creating a new date from scratch ... not each time looping through ...
On Feb 28, 2010, at 19:32, Keith Bennett wrote: > The code I pasted worked just fine on REALbasic 2009r5.1; or rather, > it compiled and displayed a messagebox just fine. I didn't read it to > find out which field matches what part of the date. > > In any case, being that this is the constructor of the Date object and > using integers, I'd certainly hope it's faster than parsing text > through SQL (not to mention cleaner IMO). > > On Sun, Feb 28, 2010 at 6:24 PM, Chip G. <<email address removed>> wrote: >> One too many pieces of data. Near as I can figure it should be: >> >> Dim d as New Date (year, month, day, hour, minute, second) >> >> On Feb 28, 2010, at 18:42, Keith Bennett wrote: >> >>> This code should work: >>> >>> Dim d As New Date(2001,1,2,3,4,5,6) >>> >>> MsgBox(d.LongDate + " " + d.LongTime) >> >> -- >> Chip >> >> _______________________________________________ >> Unsubscribe or switch delivery mode: >> <http://www.realsoftware.com/support/listmanager/> >> >> Search the archives: >> <http://support.realsoftware.com/listarchives/lists.html> >> > -- > Keith Bennett > Operations, I.T. Assistant > Sugar Land Ice & Sports Center > 16225 Lexington Blvd > Sugar Land, TX 77479 > > _______________________________________________ > Unsubscribe or switch delivery mode: > <http://www.realsoftware.com/support/listmanager/> > Search the archives: > <http://support.realsoftware.com/listarchives/lists.html> |
| Re: Fast Date Setup |
| Date: 01.03.10 01:32 (Sun, 28 Feb 2010 18:32:09 -0600) |
| From: Keith Bennett |
|
VGhlIGNvZGUgSSBwYXN0ZWQgd29ya2VkIGp1c3QgZmluZSBvbiBSRUFMYmFzaWMgMjAwOXI1LjE7
IG9yIHJhdGhlciwKaXQgY29tcGlsZWQgYW5kIGRpc3BsYXllZCBhIG1lc3NhZ2Vib3gganVzdCBm aW5lLiBJIGRpZG4ndCByZWFkIGl0IHRvCmZpbmQgb3V0IHdoaWNoIGZpZWxkIG1hdGNoZXMgd2hh dCBwYXJ0IG9mIHRoZSBkYXRlLgoKSW4gYW55IGNhc2UsIGJlaW5nIHRoYXQgdGhpcyBpcyB0aGUg Y29uc3RydWN0b3Igb2YgdGhlIERhdGUgb2JqZWN0IGFuZAp1c2luZyBpbnRlZ2VycywgSSdkIGNl cnRhaW5seSBob3BlIGl0J3MgZmFzdGVyIHRoYW4gcGFyc2luZyB0ZXh0CnRocm91Z2ggU1FMIChu b3QgdG8gbWVudGlvbiBjbGVhbmVyIElNTykuCgoKT24gU3VuLCBGZWIgMjgsIDIwMTAgYXQgNjoy NCBQTSwgQ2hpcCBHLiA8bjFtaWVAbWFjLmNvbT4gd3JvdGU6Cj4gT25lIHRvbyBtYW55IHBpZWNl cyBvZiBkYXRhLiBOZWFyIGFzIEkgY2FuIGZpZ3VyZSBpdCBzaG91bGQgYmU6Cj4KPiBEaW0gZCBh cyBOZXcgRGF0ZSAoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQpCj4KPiBP biBGZWIgMjgsIDIwMTAsIGF0IDE4OjQyLCBLZWl0aCBCZW5uZXR0IHdyb3RlOgo+Cj4+IFRoaXMg Y29kZSBzaG91bGQgd29yazoKPj4KPj4gwqBEaW0gZCBBcyBOZXcgRGF0ZSgyMDAxLDEsMiwzLDQs NSw2KQo+Pgo+PiDCoE1zZ0JveChkLkxvbmdEYXRlICsgIiAiICsgZC5Mb25nVGltZSkKPgo+Cj4K PiAtLQo+IMKgIMKgQ2hpcAo+Cj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwo+IFVuc3Vic2NyaWJlIG9yIHN3aXRjaCBkZWxpdmVyeSBtb2RlOgo+IDxo dHRwOi8vd3d3LnJlYWxzb2Z0d2FyZS5jb20vc3VwcG9ydC9saXN0bWFuYWdlci8+Cj4KPiBTZWFy Y2ggdGhlIGFyY2hpdmVzOgo+IDxodHRwOi8vc3VwcG9ydC5yZWFsc29mdHdhcmUuY29tL2xpc3Rh cmNoaXZlcy9saXN0cy5odG1sPgo+CgoKCi0tIApLZWl0aCBCZW5uZXR0Ck9wZXJhdGlvbnMsIEku VC4gQXNzaXN0YW50ClN1Z2FyIExhbmQgSWNlICYgU3BvcnRzIENlbnRlcgoxNjIyNSBMZXhpbmd0 b24gQmx2ZApTdWdhciBMYW5kLCBUWCA3NzQ3OQoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KVW5zdWJzY3JpYmUgb3Igc3dpdGNoIGRlbGl2ZXJ5IG1vZGU6 CjxodHRwOi8vd3d3LnJlYWxzb2Z0d2FyZS5jb20vc3VwcG9ydC9saXN0bWFuYWdlci8+CgpTZWFy Y2ggdGhlIGFyY2hpdmVzOgo8aHR0cDovL3N1cHBvcnQucmVhbHNvZnR3YXJlLmNvbS9saXN0YXJj aGl2ZXMvbGlzdHMuaHRtbD4 |
| Re: Fast Date Setup |
| Date: 01.03.10 01:24 (Sun, 28 Feb 2010 19:24:10 -0500) |
| From: Chip G. |
|
One too many pieces of data. Near as I can figure it should be:
Dim d as New Date (year, month, day, hour, minute, second) On Feb 28, 2010, at 18:42, Keith Bennett wrote: > This code should work: > > Dim d As New Date(2001,1,2,3,4,5,6) > > MsgBox(d.LongDate + " " + d.LongTime) |
| Re: Fast Date Setup |
| Date: 01.03.10 00:42 (Sun, 28 Feb 2010 17:42:27 -0600) |
| From: Keith Bennett |
|
SXQgYXBwZWFycyB0aGUgZG9jdW1lbnRhdGlvbiByZWdhcmRpbmcgRGF0ZS5TZXQoKSBpcyBpbmNv
cnJlY3QsIHlvdQpzaG91bGQgdHJ5IERhdGUuQ29uc3RydWN0b3IoKQoKVGhpcyBjb2RlIHNob3Vs ZCB3b3JrOgoKICBEaW0gZCBBcyBOZXcgRGF0ZSgyMDAxLDEsMiwzLDQsNSw2KQoKICBNc2dCb3go ZC5Mb25nRGF0ZSArICIgIiArIGQuTG9uZ1RpbWUpCgoKClJlbWVtYmVyIHRoYXQgeW91IG5lZWQg dG8gc2V0IGl0IHRvIGEgbmV3IChvciBleGlzdGluZykgZGF0ZSBvYmplY3QKZmlyc3Qgb3IgeW91 J2xsIGdldCBhIE5pbE9iamVjdEV4Y2VwdGlvbiBlcnJvci4KCgpPbiBTdW4sIEZlYiAyOCwgMjAx MCBhdCA1OjAzIFBNLCBDaGlwIEcuIDxuMW1pZUBtYWMuY29tPiB3cm90ZToKPiBXaGF0J3MgdGhl IHF1aWNrZXN0IHdheSB0byBzZXR1cCBhIG5ldyBkYXRlPyBMZXRzIHNheSBJIHdhbnQgdG8gaGF2 ZSAwMDowMCBvbiAwMS8wMS8yMDAxLiBJIGNhbiBkbyB0aGUgZm9sbG93aW5nCj4KPj4gRGltIGQg QXMgRGF0ZQo+Pgo+PiBkLmhvdXIgPSAwCj4+IGQubWludXRlID0gMAo+PiBkLnNlY29uZCA9IDAK Pj4gZC5tb250aCA9IDEKPj4gZC5kYXkgPSAxCj4+IGQueWVhciA9IDIwMDEKPgo+IFRoZSBsYW5n dWFnZSByZWZlcmVuY2Ugc2F5cyBJIGNhbiBkbyB0aGUgZm9sbG93aW5nCj4KPj4gRGltIGQgQXMg RGF0ZQo+Pgo+PiBkLnNldCgyMDAxLDEsMSkKPgo+IEJ1dCB0aGF0IG1ldGhvZCBkb2Vzbid0IGFw cGVhciB0byBiZSB2YWxpZCAoZG9lc24ndCBzaG93IHVwIGluIHRoZSBsaXN0KS4gQW5kIGlmIGl0 IGRpZCBJJ20gY29uY2VybmVkIGFib3V0IHdoYXQgdGhlIHRpbWUgd291bGQgYmUgKGl0IG1hdHRl cnMgZm9yIHRoZSBjb21wYXJpc29uIEkgbmVlZCB0byBkbykuIEknZCBsaWtlIHRvIGtub3cgdGhl IGZld2VzdCBsaW5lcyBuZWNlc3NhcnkgdG8gc3Vic3RhbnRpYXRlL2NvbnN0cnVjdCB0aGUgZGF0 ZSB3aXRoIGFsbCB0aG9zZSBwYXJhbWV0ZXJzLgo+Cj4gVGhhbmtzLgo+Cj4KPiAtLQo+IMKgIMKg Q2hpcAo+Cj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xwo+IFVuc3Vic2NyaWJlIG9yIHN3aXRjaCBkZWxpdmVyeSBtb2RlOgo+IDxodHRwOi8vd3d3LnJl YWxzb2Z0d2FyZS5jb20vc3VwcG9ydC9saXN0bWFuYWdlci8+Cj4KPiBTZWFyY2ggdGhlIGFyY2hp dmVzOgo+IDxodHRwOi8vc3VwcG9ydC5yZWFsc29mdHdhcmUuY29tL2xpc3RhcmNoaXZlcy9saXN0 cy5odG1sPgo+CgoKCi0tIApLZWl0aCBCZW5uZXR0Ck9wZXJhdGlvbnMsIEkuVC4gQXNzaXN0YW50 ClN1Z2FyIExhbmQgSWNlICYgU3BvcnRzIENlbnRlcgoxNjIyNSBMZXhpbmd0b24gQmx2ZApTdWdh ciBMYW5kLCBUWCA3NzQ3OQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KVW5zdWJzY3JpYmUgb3Igc3dpdGNoIGRlbGl2ZXJ5IG1vZGU6CjxodHRwOi8vd3d3 LnJlYWxzb2Z0d2FyZS5jb20vc3VwcG9ydC9saXN0bWFuYWdlci8+CgpTZWFyY2ggdGhlIGFyY2hp dmVzOgo8aHR0cDovL3N1cHBvcnQucmVhbHNvZnR3YXJlLmNvbS9saXN0YXJjaGl2ZXMvbGlzdHMu aHRtbD4 |
| Re: Fast Date Setup |
| Date: 01.03.10 00:37 (Sun, 28 Feb 2010 16:37:55 -0700) |
| From: Kimball Larsen |
|
You need to define "quickest". You allude to the fewest number of lines, which is like this:
dim d as new Date d.SQLDateTime -2001-01-01 00:00:00" But, I don't know how that compares with other methods for sheer execution speed. If you only care about how many lines of code, try the above. If you want to know how long that actually takes to construct a date with the time you need, you'll need to do some performance testing. You may want to compare the assignment for sqlDateTime with that of totalSeconds for execution speed. - Kimball http://www.kimballlarsen.com On Feb 28, 2010, at 4:03 PM, Chip G. wrote: > What's the quickest way to setup a new date? Lets say I want to have 00:00 on 01/01/2001. I can do the following > >> Dim d As Date >> >> d.hour - >> d.minute . >> d.second c >> d.month s >> d.day C >> d.year F001 > > The language reference says I can do the following > >> Dim d As Date >> >> d.set(2001,1,1) > > But that method doesn't appear to be valid (doesn't show up in the list). And if it did I'm concerned about what the time would be (it matters for the comparison I need to do). I'd like to know the fewest lines necessary to substantiate/construct the date with all those parameters. > > Thanks. > > -- > Chip > > _______________________________________________ > Unsubscribe or switch delivery mode: > <http://www.realsoftware.com/support/listmanager/> > Search the archives: > <http://support.realsoftware.com/listarchives/lists.html> _______________________________________________ Unsubscribe or switch delivery mode: <http://www.realsoftware.com/support/listmanager/> Search the archives: <http://support.realsoftware.com/listarchives/lists.html> |
Links
MBS Realbasic Plugins - Pfarrgemeinde Ministranten Nickenich