Re: AW: Progression Bar

From: René A. Krywult <"René>
Date: Thu, 11 Dec 2003 16:25:17 +0100 (NFT)

----boundary-LibPST-iamunique-1284230826_-_-
Content-type: text/plain


Hallo Helmut,

> Hallo Rene
>
> Just two questions:
>
>> 1) Why did you choose to only link an integer to the view? There are

>>at least three values that are
>> interesting for the bar, namely min, cur and max (there's a good

>>argument for the other properties,
>> too, but even more for these three)? cur does not have a meaning

>>aside from min and max, IMHO.
>
>Because it is easier to use. Up/Down Field also use an INTEGER without >min, cur, max. You can change min and max via the property inspector.

Right. But that would not be a good argument for, let's say, a currency field, would it?

Imagine the following scenario:

My program reads data from a DB, and writes a report in MS Excel from these data.

There are 35000+ (this value changes for every execution of the command) lines to be read, and 20+ Excel-Workbooks with up to 20 Worksheets per Workbook to be written.

Naturally, this results in a long running command (10 minutes).

The user has no problem with this fact, and in the meantime he does not want to use the BB Framework, but he wants to know the percentage of work already done.

So, my command first checks how many lines are to be read. That's the "max" value of the progress bar. And then, whenever one line has been processed, the "cur" value is increased. The only one who could use a property inspector at run-time and change the value of the max-property is the USER. And now, Helmut, what would YOU say, if f.i. Microsoft would ask you to count the number of files to be installed yourself and then manually update the "max" property of a progress bar, in order to tell you the percentage of processed parts of an installation process! I bet, you, like any other user, would call them stupid for even thinking about it.

>What does IMHO mean?

In My Humble Opinion (meiner bescheidenen Meinung nach)

>> 2) For all values of max >1207 and min = 0 and cur =max-1 a TRAP

>>20 happens in f.DrawRect at CtlsProgress.DrawBars, and size is
>>negative!
>
>Change 2 times the line
> size := size * (c.cur - c.min) DIV (c.max - c.min);
>against
> size := SHORT(LONG(size) * (c.cur - c.min) DIV (c.max - >c.min));
>and it will work.

It does.

>I have no problem with the behaviour of INTEGER calculation. It is an
>efficient implementation. Wrap around is useful for logical programming
>with INTEGER.

Sorry Helmut, I doubt that. I doubt that it is *logical*. Now, while *you* may not have problems with the behavior, certainly Bruno Essmann had them when he first implemented CtlsProgress, or he would have written the size more correctly.

Now to my doubts about logic.

First, if this was the primary thought behind INTEGER math in CP, then the expression

a:= MAX(INTEGER)+1;

where a : INTEGER should be valid, and the result should be a = MIN(INTEGER).

But that is not the case. Try it out! It's prohibited by the compiler.

On the other hand,

a:=MAX(INTEGER);
a:=a+1;

where a : INTEGER is valid (the compiler lets it pass), though it is the same action, only in two lines, instead of in one.

Either BOTH are to be prohibited, or BOTH are to be allowed.

Also, I can't see why we need to make the statements like

size := SHORT(LONG(size) * (c.cur - c.min) DIV (c.max - c.min)).

The language report says:

operator first operand second operand result type
+ - * DIV MOD <= INTEGER <= INTEGER INTEGER
        integer type integer type LONGINT

In our current example this is how the variables are filled:
size:=1780950;
c.min:=0;
c.max:=1207;
c.cur:=1206;

That means:
size := SHORT(1780950 * (1206 - 0) DIV (1207- 0)).

DIV is performed after the multiplication, therefor:
size:= SHORT(2147825700 DIV 1207);

MAX(INTEGER) = 2147483647

2147825700 > 2147483647 => there IS a LONGINT Value in the calculation, and therefor the result, according to the language report SHOULD be already LONGINT, and hence no need to explicitely write "LONG".

But if you omit the "LONG" in the above, the value of size = 1780950, while WITH "LONG" you get size = 1780948!

So, SOMETHING is not ok here, it seems.

Rene

-------------------------------------------
Versendet durch AonWebmail (webmail.aon.at)
--------------------------------------------

To unsubscribe from this mailing list, send a message containing the word "unsubscribe" to:
   blackbox-request{([at]})nowhere.xy

To get a list of valid e-mail commands and instructions on their usage, send a message containing the word "help" to the above address.

Send any problem reports or questions related to this email list to the list owner at
   owner-blackbox{([at]})nowhere.xy

Current posting policy:

a) To post you should use the same address by which you are subscribed to the mailing list. That way, the list server will recognize you as subscriber and forward your posting immediately, without creating any overhead.

b) If, for some reason, you cannot post from the address, by which you are subscribed, your message will be moderated to avoid spam. Please understand that moderation will often cause some delay, in particular over weekends or holydays.



----boundary-LibPST-iamunique-1284230826_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIFxwYXINCkhhbGxvIEhlbG11dCxccGFyDQpccGFy
DQo+IEhhbGxvIFJlbmVccGFyDQo+XHBhcg0KPiBKdXN0IHR3byBxdWVzdGlvbnM6XHBhcg0KPlxw
YXINCj4+IDEpIFdoeSBkaWQgeW91IGNob29zZSB0byBvbmx5IGxpbmsgYW4gaW50ZWdlciB0byB0
aGUgdmlldz8gVGhlcmUgYXJlIFxwYXINCj4+YXQgbGVhc3QgdGhyZWUgdmFsdWVzIHRoYXQgYXJl
XHBhcg0KPj4gaW50ZXJlc3RpbmcgZm9yIHRoZSBiYXIsIG5hbWVseSBtaW4sIGN1ciBhbmQgbWF4
ICh0aGVyZSdzIGEgZ29vZCBccGFyDQo+PmFyZ3VtZW50IGZvciB0aGUgb3RoZXIgcHJvcGVydGll
cyxccGFyDQo+PiB0b28sIGJ1dCBldmVuIG1vcmUgZm9yIHRoZXNlIHRocmVlKT8gY3VyIGRvZXMg
bm90IGhhdmUgYSBtZWFuaW5nIFxwYXINCj4+YXNpZGUgZnJvbSBtaW4gYW5kIG1heCwgSU1ITy4g
XHBhcg0KPlxwYXINCj5CZWNhdXNlIGl0IGlzIGVhc2llciB0byB1c2UuIFVwL0Rvd24gRmllbGQg
YWxzbyB1c2UgYW4gSU5URUdFUiB3aXRob3V0ID5taW4sIGN1ciwgbWF4LiBZb3UgY2FuIGNoYW5n
ZSBtaW4gYW5kIG1heCB2aWEgdGhlIHByb3BlcnR5IGluc3BlY3Rvci5ccGFyDQpccGFyDQpSaWdo
dC4gQnV0IHRoYXQgd291bGQgbm90IGJlIGEgZ29vZCBhcmd1bWVudCBmb3IsIGxldCdzIHNheSwg
YSBjdXJyZW5jeSBmaWVsZCwgd291bGQgaXQ/XHBhcg0KXHBhcg0KSW1hZ2luZSB0aGUgZm9sbG93
aW5nIHNjZW5hcmlvOlxwYXINClxwYXINCk15IHByb2dyYW0gcmVhZHMgZGF0YSBmcm9tIGEgREIs
IGFuZCB3cml0ZXMgYSByZXBvcnQgaW4gTVMgRXhjZWwgZnJvbSB0aGVzZSBkYXRhLlxwYXINClxw
YXINClRoZXJlIGFyZSAzNTAwMCsgKHRoaXMgdmFsdWUgY2hhbmdlcyBmb3IgZXZlcnkgZXhlY3V0
aW9uIG9mIHRoZSBjb21tYW5kKSBsaW5lcyB0byBiZSByZWFkLCBhbmQgMjArIEV4Y2VsLVdvcmti
b29rcyB3aXRoIHVwIHRvIDIwIFdvcmtzaGVldHMgcGVyIFdvcmtib29rIHRvIGJlIHdyaXR0ZW4u
XHBhcg0KXHBhcg0KTmF0dXJhbGx5LCB0aGlzIHJlc3VsdHMgaW4gYSBsb25nIHJ1bm5pbmcgY29t
bWFuZCAoMTAgbWludXRlcykuXHBhcg0KXHBhcg0KVGhlIHVzZXIgaGFzIG5vIHByb2JsZW0gd2l0
aCB0aGlzIGZhY3QsIGFuZCBpbiB0aGUgbWVhbnRpbWUgaGUgZG9lcyBub3Qgd2FudCB0byB1c2Ug
dGhlIEJCIEZyYW1ld29yaywgYnV0IGhlIHdhbnRzIHRvIGtub3cgdGhlIHBlcmNlbnRhZ2Ugb2Yg
d29yayBhbHJlYWR5IGRvbmUuXHBhcg0KXHBhcg0KU28sIG15IGNvbW1hbmQgZmlyc3QgY2hlY2tz
IGhvdyBtYW55IGxpbmVzIGFyZSB0byBiZSByZWFkLiBUaGF0J3MgdGhlICJtYXgiIHZhbHVlIG9m
IHRoZSBwcm9ncmVzcyBiYXIuIEFuZCB0aGVuLCB3aGVuZXZlciBvbmUgbGluZSBoYXMgYmVlbiBw
cm9jZXNzZWQsIHRoZSAiY3VyIiB2YWx1ZSBpcyBpbmNyZWFzZWQuIFRoZSBvbmx5IG9uZSB3aG8g
Y291bGQgdXNlIGEgcHJvcGVydHkgaW5zcGVjdG9yIGF0IHJ1bi10aW1lIGFuZCBjaGFuZ2UgdGhl
IHZhbHVlIG9mIHRoZSBtYXgtcHJvcGVydHkgaXMgdGhlIFVTRVIuIEFuZCBub3csIEhlbG11dCwg
d2hhdCB3b3VsZCBZT1Ugc2F5LCBpZiBmLmkuIE1pY3Jvc29mdCB3b3VsZCBhc2sgeW91IHRvIGNv
dW50IHRoZSBudW1iZXIgb2YgZmlsZXMgdG8gYmUgaW5zdGFsbGVkIHlvdXJzZWxmIGFuZCB0aGVu
IG1hbnVhbGx5IHVwZGF0ZSB0aGUgIm1heCIgcHJvcGVydHkgb2YgYSBwcm9ncmVzcyBiYXIsIGlu
IG9yZGVyIHRvIHRlbGwgeW91IHRoZSBwZXJjZW50YWdlIG9mIHByb2Nlc3NlZCBwYXJ0cyBvZiBh
biBpbnN0YWxsYXRpb24gcHJvY2VzcyEgSSBiZXQsIHlvdSwgbGlrZSBhbnkgb3RoZXIgdXNlciwg
d291bGQgY2FsbCB0aGVtIHN0dXBpZCBmb3IgZXZlbiB0aGlua2luZyBhYm91dCBpdC5ccGFyDQpc
cGFyDQo+V2hhdCBkb2VzIElNSE8gbWVhbj9ccGFyDQpccGFyDQpJbiBNeSBIdW1ibGUgT3Bpbmlv
biAobWVpbmVyIGJlc2NoZWlkZW5lbiBNZWludW5nIG5hY2gpXHBhcg0KXHBhcg0KPj4gMikgRm9y
IGFsbCB2YWx1ZXMgb2YgbWF4ID4xMjA3IGFuZCBtaW4gPSAwIGFuZCBjdXIgPW1heC0xIGEgVFJB
UCBccGFyDQo+PjIwIGhhcHBlbnMgaW4gZi5EcmF3UmVjdCBhdCBDdGxzUHJvZ3Jlc3MuRHJhd0Jh
cnMsIGFuZCBzaXplIGlzIFxwYXINCj4+bmVnYXRpdmUhXHBhcg0KPlxwYXINCj5DaGFuZ2UgMiB0
aW1lcyB0aGUgbGluZVxwYXINCj5cdGFiIHNpemUgOj0gc2l6ZSAqIChjLmN1ciAtIGMubWluKSBE
SVYgKGMubWF4IC0gYy5taW4pO1xwYXINCj5hZ2FpbnN0XHBhcg0KPlx0YWIgc2l6ZSA6PSBTSE9S
VChMT05HKHNpemUpICogKGMuY3VyIC0gYy5taW4pIERJViAoYy5tYXggLSA+Yy5taW4pKTtccGFy
DQo+YW5kIGl0IHdpbGwgd29yay5ccGFyDQpccGFyDQpJdCBkb2VzLiBccGFyDQpccGFyDQo+SSBo
YXZlIG5vIHByb2JsZW0gd2l0aCB0aGUgYmVoYXZpb3VyIG9mIElOVEVHRVIgY2FsY3VsYXRpb24u
IEl0IGlzIGFuXHBhcg0KPmVmZmljaWVudCBpbXBsZW1lbnRhdGlvbi4gV3JhcCBhcm91bmQgaXMg
dXNlZnVsIGZvciBsb2dpY2FsIHByb2dyYW1taW5nIFxwYXINCj53aXRoIElOVEVHRVIuIFxwYXIN
ClxwYXINClNvcnJ5IEhlbG11dCwgSSBkb3VidCB0aGF0LiBJIGRvdWJ0IHRoYXQgaXQgaXMgKmxv
Z2ljYWwqLiBOb3csIHdoaWxlICp5b3UqIG1heSBub3QgaGF2ZSBwcm9ibGVtcyB3aXRoIHRoZSBi
ZWhhdmlvciwgY2VydGFpbmx5IEJydW5vIEVzc21hbm4gaGFkIHRoZW0gd2hlbiBoZSBmaXJzdCBp
bXBsZW1lbnRlZCBDdGxzUHJvZ3Jlc3MsIG9yIGhlIHdvdWxkIGhhdmUgd3JpdHRlbiB0aGUgc2l6
ZSBtb3JlIGNvcnJlY3RseS5ccGFyDQpccGFyDQpOb3cgdG8gbXkgZG91YnRzIGFib3V0IGxvZ2lj
LlxwYXINClxwYXINCkZpcnN0LCBpZiB0aGlzIHdhcyB0aGUgcHJpbWFyeSB0aG91Z2h0IGJlaGlu
ZCBJTlRFR0VSIG1hdGggaW4gQ1AsIHRoZW4gdGhlIGV4cHJlc3Npb25ccGFyDQpccGFyDQphOj0g
TUFYKElOVEVHRVIpKzE7XHBhcg0KXHBhcg0Kd2hlcmUgYSA6IElOVEVHRVIgc2hvdWxkIGJlIHZh
bGlkLCBhbmQgdGhlIHJlc3VsdCBzaG91bGQgYmUgYSA9IE1JTihJTlRFR0VSKS5ccGFyDQpccGFy
DQpCdXQgdGhhdCBpcyBub3QgdGhlIGNhc2UuIFRyeSBpdCBvdXQhIEl0J3MgcHJvaGliaXRlZCBi
eSB0aGUgY29tcGlsZXIuXHBhcg0KXHBhcg0KT24gdGhlIG90aGVyIGhhbmQsXHBhcg0KXHBhcg0K
YTo9TUFYKElOVEVHRVIpO1xwYXINCmE6PWErMTtccGFyDQpccGFyDQp3aGVyZSBhIDogSU5URUdF
UiBpcyB2YWxpZCAodGhlIGNvbXBpbGVyIGxldHMgaXQgcGFzcyksIHRob3VnaCBpdCBpcyB0aGUg
c2FtZSBhY3Rpb24sIG9ubHkgaW4gdHdvIGxpbmVzLCBpbnN0ZWFkIG9mIGluIG9uZS5ccGFyDQpc
cGFyDQpFaXRoZXIgQk9USCBhcmUgdG8gYmUgcHJvaGliaXRlZCwgb3IgQk9USCBhcmUgdG8gYmUg
YWxsb3dlZC5ccGFyDQpccGFyDQpBbHNvLCBJIGNhbid0IHNlZSB3aHkgd2UgbmVlZCB0byBtYWtl
IHRoZSBzdGF0ZW1lbnRzIGxpa2UgXHBhcg0KXHBhcg0Kc2l6ZSA6PSBTSE9SVChMT05HKHNpemUp
ICogKGMuY3VyIC0gYy5taW4pIERJViAoYy5tYXggLSBjLm1pbikpLlxwYXINClxwYXINClRoZSBs
YW5ndWFnZSByZXBvcnQgc2F5czpccGFyDQpccGFyDQpvcGVyYXRvciBcdGFiIGZpcnN0IG9wZXJh
bmRcdGFiIHNlY29uZCBvcGVyYW5kIFx0YWIgcmVzdWx0IHR5cGVccGFyDQorIC0gKiBESVYgTU9E
XHRhYiA8PSBJTlRFR0VSXHRhYiA8PSBJTlRFR0VSXHRhYiBJTlRFR0VSXHBhcg0KXHRhYiBpbnRl
Z2VyIHR5cGVcdGFiIGludGVnZXIgdHlwZVx0YWIgTE9OR0lOVFxwYXINClxwYXINCkluIG91ciBj
dXJyZW50IGV4YW1wbGUgdGhpcyBpcyBob3cgdGhlIHZhcmlhYmxlcyBhcmUgZmlsbGVkOlxwYXIN
CnNpemU6PTE3ODA5NTA7XHBhcg0KYy5taW46PTA7XHBhcg0KYy5tYXg6PTEyMDc7XHBhcg0KYy5j
dXI6PTEyMDY7XHBhcg0KXHBhcg0KVGhhdCBtZWFuczpccGFyDQpzaXplIDo9IFNIT1JUKDE3ODA5
NTAgKiAoMTIwNiAtIDApIERJViAoMTIwNy0gMCkpLlxwYXINClxwYXINCkRJViBpcyBwZXJmb3Jt
ZWQgYWZ0ZXIgdGhlIG11bHRpcGxpY2F0aW9uLCB0aGVyZWZvcjpccGFyDQpzaXplOj0gU0hPUlQo
MjE0NzgyNTcwMCBESVYgMTIwNyk7XHBhcg0KXHBhcg0KTUFYKElOVEVHRVIpID0gMjE0NzQ4MzY0
N1xwYXINClxwYXINCjIxNDc4MjU3MDAgPiAyMTQ3NDgzNjQ3ID0+IHRoZXJlIElTIGEgTE9OR0lO
VCBWYWx1ZSBpbiB0aGUgY2FsY3VsYXRpb24sIGFuZCB0aGVyZWZvciB0aGUgcmVzdWx0LCBhY2Nv
cmRpbmcgdG8gdGhlIGxhbmd1YWdlIHJlcG9ydCBTSE9VTEQgYmUgYWxyZWFkeSBMT05HSU5ULCBh
bmQgaGVuY2Ugbm8gbmVlZCB0byBleHBsaWNpdGVseSB3cml0ZSAiTE9ORyIuXHBhcg0KXHBhcg0K
QnV0IGlmIHlvdSBvbWl0IHRoZSAiTE9ORyIgaW4gdGhlIGFib3ZlLCB0aGUgdmFsdWUgb2Ygc2l6
ZSA9IDE3ODA5NTAsIHdoaWxlIFdJVEggIkxPTkciIHlvdSBnZXQgc2l6ZSA9IDE3ODA5NDghXHBh
cg0KXHBhcg0KU28sIFNPTUVUSElORyBpcyBub3Qgb2sgaGVyZSwgaXQgc2VlbXMuXHBhcg0KXHBh
cg0KUmVuZVxwYXINClxwYXINCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS1ccGFyDQpWZXJzZW5kZXQgZHVyY2ggQW9uV2VibWFpbCAod2VibWFpbC5hb24uYXQpXHBh
cg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1ccGFyDQpccGFy
DQpUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbWFpbGluZyBsaXN0LCBzZW5kIGEgbWVzc2FnZSBj
b250YWluaW5nIHRoZSB3b3JkICJ1bnN1YnNjcmliZSIgdG86XHBhcg0KICAgYmxhY2tib3gtcmVx
dWVzdEBvYmVyb24uY2hccGFyDQpccGFyDQpUbyBnZXQgYSBsaXN0IG9mIHZhbGlkIGUtbWFpbCBj
b21tYW5kcyBhbmQgaW5zdHJ1Y3Rpb25zIG9uIHRoZWlyIHVzYWdlLCBzZW5kIGEgbWVzc2FnZSBj
b250YWluaW5nIHRoZSB3b3JkICJoZWxwIiB0byB0aGUgYWJvdmUgYWRkcmVzcy5ccGFyDQpccGFy
DQpTZW5kIGFueSBwcm9ibGVtIHJlcG9ydHMgb3IgcXVlc3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBl
bWFpbCBsaXN0IHRvIHRoZSBsaXN0IG93bmVyIGF0XHBhcg0KICAgb3duZXItYmxhY2tib3hAb2Jl
cm9uLmNoXHBhcg0KXHBhcg0KQ3VycmVudCBwb3N0aW5nIHBvbGljeTpccGFyDQpccGFyDQphKSBU
byBwb3N0IHlvdSBzaG91bGQgdXNlIHRoZSBzYW1lIGFkZHJlc3MgYnkgd2hpY2ggeW91IGFyZSBz
dWJzY3JpYmVkIHRvIHRoZSBtYWlsaW5nIGxpc3QuIFRoYXQgd2F5LCB0aGUgbGlzdCBzZXJ2ZXIg
d2lsbCByZWNvZ25pemUgeW91IGFzIHN1YnNjcmliZXIgYW5kIGZvcndhcmQgeW91ciBwb3N0aW5n
IGltbWVkaWF0ZWx5LCB3aXRob3V0IGNyZWF0aW5nIGFueSBvdmVyaGVhZC5ccGFyDQpccGFyDQpi
KSBJZiwgZm9yIHNvbWUgcmVhc29uLCB5b3UgY2Fubm90IHBvc3QgZnJvbSB0aGUgYWRkcmVzcywg
Ynkgd2hpY2ggeW91IGFyZSBzdWJzY3JpYmVkLCB5b3VyIG1lc3NhZ2Ugd2lsbCBiZSBtb2RlcmF0
ZWQgdG8gYXZvaWQgc3BhbS4gUGxlYXNlIHVuZGVyc3RhbmQgdGhhdCBtb2RlcmF0aW9uIHdpbGwg
b2Z0ZW4gY2F1c2Ugc29tZSBkZWxheSwgaW4gcGFydGljdWxhciBvdmVyIHdlZWtlbmRzIG9yIGhv
bHlkYXlzfX0AwAWQHfAhcSRAZiU=


----boundary-LibPST-iamunique-1284230826_-_---
Received on Thu Dec 11 2003 - 16:25:17 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:29:00 UTC