----boundary-LibPST-iamunique-436939906_-_-
Content-type: text/plain
Hi Wojtek,
afaik, this is not (yet) a FAQ.
I guess that leaving out unsigned arithmetic was a deliberate
decision, although I also sometimes miss them.
The times of necessity to use variables, which are as small
as possible, seems to have vanished (except for embedded
systems).
Let me ask: Do you really need the aritmetic on BYTE ?
If you do not need it, this might be a solution:
MODULE PrivTest;
PROCEDURE TEST;
VAR test:SHORTCHAR;
BEGIN
test := 0ABX (*number too large*)
END TEST;
END PrivTest.
If you need them, I fear you'll have to use another
variable and do some conversion:
MODULE PrivTest;
PROCEDURE TEST*;
VAR test:SHORTCHAR; number : SHORTINT;
BEGIN
test := 0ABX (*number too large*);
number := ORD(test);
HALT(0)
END TEST;
END PrivTest.TEST
For arithmetic (?) with BYTE a word of caution:
VAR b : BYTE;
FOR b := MIN(BYTE) TO MAX(BYTE) DO SomeThing END;
is an endless loop, since overflow is silently wrapped
(this is absolutely correct, given the definition of
the FOR loop in terms of a WHILE loop.
VAR s : SHORTINT;
FOR s := MIN(BYTE) TO MAX(BYTE) DO SomeThing END;
works as expected.
> -----Original Message-----
> From: Wojtek Skulski [mailto:skulski{([at]})nowhere.xy> Sent: Monday, June 17, 2002 5:43 AM
> To: BlackBox
> Cc: Wojtek Skulski
> Subject: Unsigned in Component Pascal
>
>
>
> Hi:
>
> this must be a FAQ, but let me ask. How can I treat
> a CP varaiable as an unsigned number, such that I can
> easily converse with C libraries?
>
> Specifically, the following does not compile with a message
> "number too large", even though it would fit as an unsigned
> bit pattern in the BYTE variable.
>
> Any idea how to make it compile without violating the "CP spirit"
> in some major way?
>
> MODULE TestTest;
> PROCEDURE TEST;
> VAR test:BYTE;
> BEGIN
> test := 0ABH (*number too large*)
> END TEST;
> END TestTest.
>
> As a side remark, lack of unsigned numerics in CP looks
> like a major pain to me. I did not realize this until started
> interfacing CP to Windows DLL's.
>
>
> Wojtek Skulski skulski{([at]})nowhere.xy>
>
> --------------------------------------------
>
> 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-436939906_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"
e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIEhpIFdvanRlayxccGFyDQpccGFyDQphZmFpaywg
dGhpcyBpcyBub3QgKHlldCkgYSBGQVEuIFxwYXINClxwYXINCkkgZ3Vlc3MgdGhhdCBsZWF2aW5n
IG91dCB1bnNpZ25lZCBhcml0aG1ldGljIHdhcyBhIGRlbGliZXJhdGUgXHBhcg0KZGVjaXNpb24s
IGFsdGhvdWdoIEkgYWxzbyBzb21ldGltZXMgbWlzcyB0aGVtLiBccGFyDQpccGFyDQpUaGUgdGlt
ZXMgb2YgbmVjZXNzaXR5IHRvIHVzZSB2YXJpYWJsZXMsIHdoaWNoIGFyZSBhcyBzbWFsbCBccGFy
DQphcyBwb3NzaWJsZSwgc2VlbXMgdG8gaGF2ZSB2YW5pc2hlZCAoZXhjZXB0IGZvciBlbWJlZGRl
ZFxwYXINCnN5c3RlbXMpLlxwYXINClxwYXINCkxldCBtZSBhc2s6ICBEbyB5b3UgcmVhbGx5IG5l
ZWQgdGhlIGFyaXRtZXRpYyBvbiBCWVRFID9ccGFyDQpccGFyDQpJZiB5b3UgZG8gbm90IG5lZWQg
aXQsIHRoaXMgbWlnaHQgYmUgYSBzb2x1dGlvbjpccGFyDQpccGFyDQpNT0RVTEUgUHJpdlRlc3Q7
XHBhcg0KUFJPQ0VEVVJFIFRFU1Q7XHBhcg0KXHRhYiBWQVIgdGVzdDpTSE9SVENIQVI7XHBhcg0K
QkVHSU5ccGFyDQpcdGFiIHRlc3QgOj0gMEFCWCAgKCpudW1iZXIgdG9vIGxhcmdlKilccGFyDQpF
TkQgVEVTVDtccGFyDQpFTkQgUHJpdlRlc3QuXHBhcg0KXHBhcg0KSWYgeW91IG5lZWQgdGhlbSwg
SSBmZWFyIHlvdSdsbCBoYXZlIHRvIHVzZSBhbm90aGVyXHBhcg0KdmFyaWFibGUgYW5kIGRvIHNv
bWUgY29udmVyc2lvbjpccGFyDQpccGFyDQpNT0RVTEUgUHJpdlRlc3Q7XHBhcg0KUFJPQ0VEVVJF
IFRFU1QqO1xwYXINClx0YWIgVkFSIHRlc3Q6U0hPUlRDSEFSOyBudW1iZXIgOiBTSE9SVElOVDtc
cGFyDQpCRUdJTlxwYXINClx0YWIgdGVzdCA6PSAwQUJYICAoKm51bWJlciB0b28gbGFyZ2UqKTtc
cGFyDQpcdGFiIG51bWJlciA6PSBPUkQodGVzdCk7XHBhcg0KXHRhYiBIQUxUKDApXHBhcg0KRU5E
IFRFU1Q7XHBhcg0KRU5EIFByaXZUZXN0LlRFU1RccGFyDQpccGFyDQpGb3IgYXJpdGhtZXRpYyAo
Pykgd2l0aCBCWVRFIGEgd29yZCBvZiBjYXV0aW9uOlxwYXINClxwYXINClZBUiBiIDogQllURTtc
cGFyDQpGT1IgYiA6PSBNSU4oQllURSkgVE8gTUFYKEJZVEUpIERPIFNvbWVUaGluZyBFTkQ7XHBh
cg0KXHBhcg0KaXMgYW4gZW5kbGVzcyBsb29wLCBzaW5jZSBvdmVyZmxvdyBpcyBzaWxlbnRseSB3
cmFwcGVkXHBhcg0KKHRoaXMgaXMgYWJzb2x1dGVseSBjb3JyZWN0LCBnaXZlbiB0aGUgZGVmaW5p
dGlvbiBvZlxwYXINCnRoZSBGT1IgbG9vcCBpbiB0ZXJtcyBvZiBhIFdISUxFIGxvb3AuXHBhcg0K
XHBhcg0KVkFSIHMgOiBTSE9SVElOVDtccGFyDQpGT1IgcyA6PSBNSU4oQllURSkgVE8gTUFYKEJZ
VEUpIERPIFNvbWVUaGluZyBFTkQ7XHBhcg0KXHBhcg0Kd29ya3MgYXMgZXhwZWN0ZWQuXHBhcg0K
XHBhcg0KXHBhcg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLVxwYXINCj4gRnJvbTogV29q
dGVrIFNrdWxza2kgW21haWx0bzpza3Vsc2tpQHBob2J0b2YucGFzLnJvY2hlc3Rlci5lZHVdIFxw
YXINCj4gU2VudDogTW9uZGF5LCBKdW5lIDE3LCAyMDAyIDU6NDMgQU1ccGFyDQo+IFRvOiBCbGFj
a0JveFxwYXINCj4gQ2M6IFdvanRlayBTa3Vsc2tpXHBhcg0KPiBTdWJqZWN0OiBVbnNpZ25lZCBp
biBDb21wb25lbnQgUGFzY2FsIFxwYXINCj4gXHBhcg0KPiBccGFyDQo+IFxwYXINCj4gSGk6XHBh
cg0KPiBccGFyDQo+ICAgdGhpcyBtdXN0IGJlIGEgRkFRLCBidXQgbGV0IG1lIGFzay4gSG93IGNh
biBJIHRyZWF0XHBhcg0KPiBhIENQIHZhcmFpYWJsZSBhcyBhbiB1bnNpZ25lZCBudW1iZXIsIHN1
Y2ggdGhhdCBJIGNhblxwYXINCj4gZWFzaWx5IGNvbnZlcnNlIHdpdGggQyBsaWJyYXJpZXM/XHBh
cg0KPiBccGFyDQo+IFNwZWNpZmljYWxseSwgdGhlIGZvbGxvd2luZyBkb2VzIG5vdCBjb21waWxl
IHdpdGggYSBtZXNzYWdlXHBhcg0KPiAibnVtYmVyIHRvbyBsYXJnZSIsIGV2ZW4gdGhvdWdoIGl0
IHdvdWxkIGZpdCBhcyBhbiB1bnNpZ25lZFxwYXINCj4gYml0IHBhdHRlcm4gaW4gdGhlIEJZVEUg
dmFyaWFibGUuXHBhcg0KPiBccGFyDQo+IEFueSBpZGVhIGhvdyB0byBtYWtlIGl0IGNvbXBpbGUg
d2l0aG91dCB2aW9sYXRpbmcgdGhlICJDUCBzcGlyaXQiXHBhcg0KPiBpbiBzb21lIG1ham9yIHdh
eT9ccGFyDQo+IFxwYXINCj4gTU9EVUxFIFRlc3RUZXN0O1xwYXINCj4gUFJPQ0VEVVJFIFRFU1Q7
XHBhcg0KPiBcdGFiIFZBUiB0ZXN0OkJZVEU7XHBhcg0KPiBCRUdJTlxwYXINCj4gXHRhYiB0ZXN0
IDo9IDBBQkggICgqbnVtYmVyIHRvbyBsYXJnZSopXHBhcg0KPiBFTkQgVEVTVDtccGFyDQo+IEVO
RCBUZXN0VGVzdC5ccGFyDQo+IFxwYXINCj4gQXMgYSBzaWRlIHJlbWFyaywgbGFjayBvZiB1bnNp
Z25lZCBudW1lcmljcyBpbiBDUCBsb29rc1xwYXINCj4gbGlrZSBhIG1ham9yIHBhaW4gdG8gbWUu
IEkgZGlkIG5vdCByZWFsaXplIHRoaXMgdW50aWwgc3RhcnRlZFxwYXINCj4gaW50ZXJmYWNpbmcg
Q1AgdG8gV2luZG93cyBETEwncy5ccGFyDQo+IFxwYXINCj4gXHBhcg0KPiBXb2p0ZWsgU2t1bHNr
aSBza3Vsc2tpQHBhcy5yb2NoZXN0ZXIuZWR1XHBhcg0KPiBccGFyDQo+IFxwYXINCj4gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1ccGFyDQo+IFxwYXINCj4gVG8g
dW5zdWJzY3JpYmUgZnJvbSB0aGlzIG1haWxpbmcgbGlzdCwgc2VuZCBhIG1lc3NhZ2UgXHBhcg0K
PiBjb250YWluaW5nIHRoZSB3b3JkICJ1bnN1YnNjcmliZSIgdG86XHBhcg0KPiAgICBibGFja2Jv
eC1yZXF1ZXN0QG9iZXJvbi5jaFxwYXINCj4gXHBhcg0KPiBUbyBnZXQgYSBsaXN0IG9mIHZhbGlk
IGUtbWFpbCBjb21tYW5kcyBhbmQgaW5zdHJ1Y3Rpb25zIG9uIFxwYXINCj4gdGhlaXIgdXNhZ2Us
IHNlbmQgYSBtZXNzYWdlIGNvbnRhaW5pbmcgdGhlIHdvcmQgImhlbHAiIHRvIHRoZSBccGFyDQo+
IGFib3ZlIGFkZHJlc3MuXHBhcg0KPiBccGFyDQo+IFNlbmQgYW55IHByb2JsZW0gcmVwb3J0cyBv
ciBxdWVzdGlvbnMgcmVsYXRlZCB0byB0aGlzIGVtYWlsIFxwYXINCj4gbGlzdCB0byB0aGUgbGlz
dCBvd25lciBhdFxwYXINCj4gICAgb3duZXItYmxhY2tib3hAb2Jlcm9uLmNoXHBhcg0KPiBccGFy
DQo+IEN1cnJlbnQgcG9zdGluZyBwb2xpY3k6XHBhcg0KPiBccGFyDQo+IGEpIFRvIHBvc3QgeW91
IHNob3VsZCB1c2UgdGhlIHNhbWUgYWRkcmVzcyBieSB3aGljaCB5b3UgYXJlIFxwYXINCj4gc3Vi
c2NyaWJlZCB0byB0aGUgbWFpbGluZyBsaXN0LiBUaGF0IHdheSwgdGhlIGxpc3Qgc2VydmVyIFxw
YXINCj4gd2lsbCByZWNvZ25pemUgeW91IGFzIHN1YnNjcmliZXIgYW5kIGZvcndhcmQgeW91ciBw
b3N0aW5nIFxwYXINCj4gaW1tZWRpYXRlbHksIHdpdGhvdXQgY3JlYXRpbmcgYW55IG92ZXJoZWFk
LlxwYXINCj4gXHBhcg0KPiBiKSBJZiwgZm9yIHNvbWUgcmVhc29uLCB5b3UgY2Fubm90IHBvc3Qg
ZnJvbSB0aGUgYWRkcmVzcywgYnkgXHBhcg0KPiB3aGljaCB5b3UgYXJlIHN1YnNjcmliZWQsIHlv
dXIgbWVzc2FnZSB3aWxsIGJlIG1vZGVyYXRlZCB0byBccGFyDQo+IGF2b2lkIHNwYW0uIFBsZWFz
ZSB1bmRlcnN0YW5kIHRoYXQgbW9kZXJhdGlvbiB3aWxsIG9mdGVuIFxwYXINCj4gY2F1c2Ugc29t
ZSBkZWxheSwgaW4gcGFydGljdWxhciBvdmVyIHdlZWtlbmRzIG9yIGhvbHlkYXl9fQBBLBJrOiAg
RCbQef0IYA==
----boundary-LibPST-iamunique-436939906_-_---
Received on Mon Jun 17 2002 - 10:57:18 UTC