## Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

• Help others & share knowledge
• Earn cash & points
Solved

# simple pascal algorithm

Posted on 2004-03-25
290 Views
i want to add up all the decimal values of each individual character in a string. I get a compiler error (Error 39: Ordinal Expression Expected), i dont know how to solve it. Im trying this atm:
for count := 1 to max_length do
begin
sum := sum + ord(copy(stringvariable,count,1));
end;

any help mucho appreciated :)
0
Question by:RevelationUK

LVL 4

Accepted Solution

ATAHAC earned 50 total points
ID: 10690919
try this
for count := 1 to max_length do
begin
sum := sum + ord(stringvariable[count]);
end;
0

LVL 1

Expert Comment

ID: 10702086
The problem was that you were trying to call the ORD function giving a string parameter. If you would have looked in the Help(just press CTRL+F1 with the cursor over the "ORD" name) you would see that the function accepts only chars as a parameter returning the ASCII order of that character.

Best regards,
Cris.
0

LVL 1

Expert Comment

ID: 10703248
Try this:

sum := sum + char(copy(stringvariable,count,1));
0

LVL 11

Expert Comment

ID: 10763822
is max_length the same as length(stringvariable)?
0

LVL 1

Expert Comment

ID: 10763838
for count := 1 to length(stringvariable) do
begin
sum := sum + ord(stringvariable[count]);
end;
0

LVL 3

Expert Comment

ID: 10790688
Write full program. May be your types is wrong for this operation.
0

Author Comment

ID: 10790862
its ok I worked it out, thanks anyway guys :)

sum := 0;
for count := 1 to max_length do
begin
tempchar := tempstring[1];
sum := sum + ord(tempstring[1]);
end;
0

LVL 1

Expert Comment

ID: 10791209
That piece of code couldn't be more redundent even if you tried. Sorry for this remark but I couldn't help my self...

Why not use:  sum := sum + ord(password[count]); ?
Why is there a tempchar if you don't use it?

Best regards,
Cris.
0

LVL 11

Expert Comment

ID: 10793089
Can be done also without using ord():

var
str : string;
arr : array of byte absolute str;
n, sum : integer;
...
sum := 0;
for n := low(arr) to high(arr) do sum := sum + arr[n];
0

LVL 100

Expert Comment

ID: 10969945
No comment has been added to this question in more than 21 days, so it is now classified as abandoned.

I will leave the following recommendation for this question in the Cleanup topic area:
Accept - ATAHAC

Any objections should be posted here in the next 4 days. After that time, the question will be closed.

mlmcc
Pascal PE
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

### Suggested Solutions

Starting your own business is always a daunting process, and for most people it isÂ brand new experience. Avoid the common pitfalls by following these tips to start on the road to success.
There's a lot of hype surrounding blockchain technology. Here's how it works and some of the novel ways it' s now being used - including for data protection.
Starting up a Project
In an interesting question (https://www.experts-exchange.com/questions/29008360/) here at Experts Exchange, a member asked how to split a single image into multiple images. The primary usage for this is to place many photographs on a flatbed scannerâ€¦