#### Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

#### Categories

Welcome to the new platform of Programmers Heaven! We apologize for the inconvenience caused, if you visited us from a broken link of the previous version. The main reason to move to a new platform is to provide more effective and collaborative experience to you all. Please feel free to experience the new platform and use it's exciting features. Contact us for any issue that you need to get clarified. We are more than happy to help you.

# A procedure that won't work

Posts: 35Member
I need to write a procedure:
procedure HextoDec
(const Hexstr: string; var DecOut : integer);
I need to write this without using 'read' or 'write' within it.

I have earlier written a function which canverts from Hex to Dec successfully and have been trying to swap bits of it around so that it will work as this procedure but to know avail... I've included where I have got so far and would be very grateful if anyone could offer me some advice... Cheers

[code]
procedure HexToDec (const hexstr: string ; DecOut: integer);

const
HexValues : string [16] ='0123456789ABCDEF';

var
i : integer;

begin
DecOut := 0;
case Length(Hexstr) of
0: DecOut := 0;
1..8: for i:=1 to Length(Hexstr) do
DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
else for i:=1 to 8 do
DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;

end;
end;
[/code]
· ·

• Posts: 6,349Member
: I need to write a procedure:
: procedure HextoDec
: (const Hexstr: string; var DecOut : integer);
: I need to write this without using 'read' or 'write' within it.
:
: I have earlier written a function which canverts from Hex to Dec successfully and have been trying to swap bits of it around so that it will work as this procedure but to know avail... I've included where I have got so far and would be very grateful if anyone could offer me some advice... Cheers
:
: [code]
: procedure HexToDec (const hexstr: string ; DecOut: integer);
:
: const
: HexValues : string [16] ='0123456789ABCDEF';
:
: var
: i : integer;
:
:
: begin
: DecOut := 0;
: case Length(Hexstr) of
: 0: DecOut := 0;
: 1..8: for i:=1 to Length(Hexstr) do
: DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: else for i:=1 to 8 do
: DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
:
:
: end;
: end;
: [/code]
:
Your code does not have a variable DecOut parameter. That is required for the actual variable in the calling code to be changed.
· ·
• Posts: 35Member
: : I need to write a procedure:
: : procedure HextoDec
: : (const Hexstr: string; var DecOut : integer);
: : I need to write this without using 'read' or 'write' within it.
: :
: : I have earlier written a function which canverts from Hex to Dec successfully and have been trying to swap bits of it around so that it will work as this procedure but to know avail... I've included where I have got so far and would be very grateful if anyone could offer me some advice... Cheers
: :
: : [code]
: : procedure HexToDec (const hexstr: string ; DecOut: integer);
: :
: : const
: : HexValues : string [16] ='0123456789ABCDEF';
: :
: : var
: : i : integer;
: :
: :
: : begin
: : DecOut := 0;
: : case Length(Hexstr) of
: : 0: DecOut := 0;
: : 1..8: for i:=1 to Length(Hexstr) do
: : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : else for i:=1 to 8 do
: : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: :
: :
: : end;
: : end;
: : [/code]
: :
: Your code does not have a variable DecOut parameter. That is required for the actual variable in the calling code to be changed.

Right, changed that...
Have put the procedure into a program to test it but can't get it to work... could you give me a clue as to what i'm missing now?
cheers
:

· ·
• Posts: 6,349Member
: : : I need to write a procedure:
: : : procedure HextoDec
: : : (const Hexstr: string; var DecOut : integer);
: : : I need to write this without using 'read' or 'write' within it.
: : :
: : : I have earlier written a function which canverts from Hex to Dec successfully and have been trying to swap bits of it around so that it will work as this procedure but to know avail... I've included where I have got so far and would be very grateful if anyone could offer me some advice... Cheers
: : :
: : : [code]
: : : procedure HexToDec (const hexstr: string ; DecOut: integer);
: : :
: : : const
: : : HexValues : string [16] ='0123456789ABCDEF';
: : :
: : : var
: : : i : integer;
: : :
: : :
: : : begin
: : : DecOut := 0;
: : : case Length(Hexstr) of
: : : 0: DecOut := 0;
: : : 1..8: for i:=1 to Length(Hexstr) do
: : : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : : else for i:=1 to 8 do
: : : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : :
: : :
: : : end;
: : : end;
: : : [/code]
: : :
: : Your code does not have a variable DecOut parameter. That is required for the actual variable in the calling code to be changed.
:
: Right, changed that...
: Have put the procedure into a program to test it but can't get it to work... could you give me a clue as to what i'm missing now?
: cheers
: :
:
:
The procedure itself works perfectly. Please, post your calling code. Perhaps that's where the error is.
· ·
• Posts: 35Member
: : : : I need to write a procedure:
: : : : procedure HextoDec
: : : : (const Hexstr: string; var DecOut : integer);
: : : : I need to write this without using 'read' or 'write' within it.
: : : :
: : : : I have earlier written a function which canverts from Hex to Dec successfully and have been trying to swap bits of it around so that it will work as this procedure but to know avail... I've included where I have got so far and would be very grateful if anyone could offer me some advice... Cheers
: : : :
: : : : [code]
: : : : procedure HexToDec (const hexstr: string ; DecOut: integer);
: : : :
: : : : const
: : : : HexValues : string [16] ='0123456789ABCDEF';
: : : :
: : : : var
: : : : i : integer;
: : : :
: : : :
: : : : begin
: : : : DecOut := 0;
: : : : case Length(Hexstr) of
: : : : 0: DecOut := 0;
: : : : 1..8: for i:=1 to Length(Hexstr) do
: : : : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : : : else for i:=1 to 8 do
: : : : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : : :
: : : :
: : : : end;
: : : : end;
: : : : [/code]
: : : :
: : : Your code does not have a variable DecOut parameter. That is required for the actual variable in the calling code to be changed.
: :
: : Right, changed that...
: : Have put the procedure into a program to test it but can't get it to work... could you give me a clue as to what i'm missing now?
: : cheers
: : :
: :
: :
: The procedure itself works perfectly. Please, post your calling code. Perhaps that's where the error is.

Sorry I meant to put the code in with the last message.... here you go...
[code]
uses
SysUtils;
var
user: string;
prop : integer;

procedure HexToDec (const hexstr: string ;var DecOut: integer);

const
HexValues : string [16] ='0123456789ABCDEF';

var
i : integer;

begin
DecOut := 0;
case Length(Hexstr) of
0: DecOut := 0;
1..8: for i:=1 to Length(Hexstr) do
DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
else for i:=1 to 8 do
DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;

end;
end;
begin
writeln ('Please enter the Hex number you wish to convert...');
begin
HexToDec(User);

end;
end.
[/code]
:

· ·
• Posts: 6,349Member
: : : : : I need to write a procedure:
: : : : : procedure HextoDec
: : : : : (const Hexstr: string; var DecOut : integer);
: : : : : I need to write this without using 'read' or 'write' within it.
: : : : :
: : : : : I have earlier written a function which canverts from Hex to Dec successfully and have been trying to swap bits of it around so that it will work as this procedure but to know avail... I've included where I have got so far and would be very grateful if anyone could offer me some advice... Cheers
: : : : :
: : : : : [code]
: : : : : procedure HexToDec (const hexstr: string ; DecOut: integer);
: : : : :
: : : : : const
: : : : : HexValues : string [16] ='0123456789ABCDEF';
: : : : :
: : : : : var
: : : : : i : integer;
: : : : :
: : : : :
: : : : : begin
: : : : : DecOut := 0;
: : : : : case Length(Hexstr) of
: : : : : 0: DecOut := 0;
: : : : : 1..8: for i:=1 to Length(Hexstr) do
: : : : : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : : : : else for i:=1 to 8 do
: : : : : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : : : :
: : : : :
: : : : : end;
: : : : : end;
: : : : : [/code]
: : : : :
: : : : Your code does not have a variable DecOut parameter. That is required for the actual variable in the calling code to be changed.
: : :
: : : Right, changed that...
: : : Have put the procedure into a program to test it but can't get it to work... could you give me a clue as to what i'm missing now?
: : : cheers
: : : :
: : :
: : :
: : The procedure itself works perfectly. Please, post your calling code. Perhaps that's where the error is.
:
: Sorry I meant to put the code in with the last message.... here you go...
: [code]
: uses
: SysUtils;
: var
: user: string;
: prop : integer;
:
:
:
: procedure HexToDec (const hexstr: string ;var DecOut: integer);
:
: const
: HexValues : string [16] ='0123456789ABCDEF';
:
: var
: i : integer;
:
:
: begin
: DecOut := 0;
: case Length(Hexstr) of
: 0: DecOut := 0;
: 1..8: for i:=1 to Length(Hexstr) do
: DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: else for i:=1 to 8 do
: DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
:
:
: end;
: end;
: begin
: writeln ('Please enter the Hex number you wish to convert...');
: begin
: HexToDec(User);
:
: end;
: end.
: [/code]
: :
:
:
You forgot the integer parameter in the call. Also you don't write the converted value to screen, so you don't see if it worked.
· ·
• Posts: 35Member
: : : : : : I need to write a procedure:
: : : : : : procedure HextoDec
: : : : : : (const Hexstr: string; var DecOut : integer);
: : : : : : I need to write this without using 'read' or 'write' within it.
: : : : : :
: : : : : : I have earlier written a function which canverts from Hex to Dec successfully and have been trying to swap bits of it around so that it will work as this procedure but to know avail... I've included where I have got so far and would be very grateful if anyone could offer me some advice... Cheers
: : : : : :
: : : : : : [code]
: : : : : : procedure HexToDec (const hexstr: string ; DecOut: integer);
: : : : : :
: : : : : : const
: : : : : : HexValues : string [16] ='0123456789ABCDEF';
: : : : : :
: : : : : : var
: : : : : : i : integer;
: : : : : :
: : : : : :
: : : : : : begin
: : : : : : DecOut := 0;
: : : : : : case Length(Hexstr) of
: : : : : : 0: DecOut := 0;
: : : : : : 1..8: for i:=1 to Length(Hexstr) do
: : : : : : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : : : : : else for i:=1 to 8 do
: : : : : : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : : : : :
: : : : : :
: : : : : : end;
: : : : : : end;
: : : : : : [/code]
: : : : : :
: : : : : Your code does not have a variable DecOut parameter. That is required for the actual variable in the calling code to be changed.
: : : :
: : : : Right, changed that...
: : : : Have put the procedure into a program to test it but can't get it to work... could you give me a clue as to what i'm missing now?
: : : : cheers
: : : : :
: : : :
: : : :
: : : The procedure itself works perfectly. Please, post your calling code. Perhaps that's where the error is.
: :
: : Sorry I meant to put the code in with the last message.... here you go...
: : [code]
: : uses
: : SysUtils;
: : var
: : user: string;
: : prop : integer;
: :
: :
: :
: : procedure HexToDec (const hexstr: string ;var DecOut: integer);
: :
: : const
: : HexValues : string [16] ='0123456789ABCDEF';
: :
: : var
: : i : integer;
: :
: :
: : begin
: : DecOut := 0;
: : case Length(Hexstr) of
: : 0: DecOut := 0;
: : 1..8: for i:=1 to Length(Hexstr) do
: : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : else for i:=1 to 8 do
: : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: :
: :
: : end;
: : end;
: : begin
: : writeln ('Please enter the Hex number you wish to convert...');
: : begin
: : HexToDec(User);
: :
: : end;
: : end.
: : [/code]
: : :
: :
: :
: You forgot the integer parameter in the call. Also you don't write the converted value to screen, so you don't see if it worked.
:
I've added a writeln after calling the procedure... is this what you meant by writing it to screen? but i don't understand which integer parameter i have forgotten or where to put it...?
Sorry...
· ·
• Posts: 6,349Member
: : : : : : : I need to write a procedure:
: : : : : : : procedure HextoDec
: : : : : : : (const Hexstr: string; var DecOut : integer);
: : : : : : : I need to write this without using 'read' or 'write' within it.
: : : : : : :
: : : : : : : I have earlier written a function which canverts from Hex to Dec successfully and have been trying to swap bits of it around so that it will work as this procedure but to know avail... I've included where I have got so far and would be very grateful if anyone could offer me some advice... Cheers
: : : : : : :
: : : : : : : [code]
: : : : : : : procedure HexToDec (const hexstr: string ; DecOut: integer);
: : : : : : :
: : : : : : : const
: : : : : : : HexValues : string [16] ='0123456789ABCDEF';
: : : : : : :
: : : : : : : var
: : : : : : : i : integer;
: : : : : : :
: : : : : : :
: : : : : : : begin
: : : : : : : DecOut := 0;
: : : : : : : case Length(Hexstr) of
: : : : : : : 0: DecOut := 0;
: : : : : : : 1..8: for i:=1 to Length(Hexstr) do
: : : : : : : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : : : : : : else for i:=1 to 8 do
: : : : : : : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : : : : : :
: : : : : : :
: : : : : : : end;
: : : : : : : end;
: : : : : : : [/code]
: : : : : : :
: : : : : : Your code does not have a variable DecOut parameter. That is required for the actual variable in the calling code to be changed.
: : : : :
: : : : : Right, changed that...
: : : : : Have put the procedure into a program to test it but can't get it to work... could you give me a clue as to what i'm missing now?
: : : : : cheers
: : : : : :
: : : : :
: : : : :
: : : : The procedure itself works perfectly. Please, post your calling code. Perhaps that's where the error is.
: : :
: : : Sorry I meant to put the code in with the last message.... here you go...
: : : [code]
: : : uses
: : : SysUtils;
: : : var
: : : user: string;
: : : prop : integer;
: : :
: : :
: : :
: : : [red]procedure HexToDec (const hexstr: string ;var DecOut: integer);[/red]
: : :
: : : const
: : : HexValues : string [16] ='0123456789ABCDEF';
: : :
: : : var
: : : i : integer;
: : :
: : :
: : : begin
: : : DecOut := 0;
: : : case Length(Hexstr) of
: : : 0: DecOut := 0;
: : : 1..8: for i:=1 to Length(Hexstr) do
: : : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : : else for i:=1 to 8 do
: : : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : :
: : :
: : : end;
: : : end;
: : : begin
: : : writeln ('Please enter the Hex number you wish to convert...');
: : : begin
: : : [blue]HexToDec(User);[/blue]
: : :
: : : readln (prop) ;
: : : end;
: : : end.
: : : [/code]
: : : :
: : :
: : :
: : You forgot the integer parameter in the call. Also you don't write the converted value to screen, so you don't see if it worked.
: :
: I've added a writeln after calling the procedure... is this what you meant by writing it to screen? but i don't understand which integer parameter i have forgotten or where to put it...?
: Sorry...
:
If you look at the procedure declaration (red in the code), you will see 2 parameters: hexstr and DecOut. In your procedure call (blue) there is only 1: user. This means that the code doesn't compile. And if it does, it does not know what to do with the DecOut parameter. The call code must include more code to tell the computer what to do with the DecOut value. In other words, you need to add a second parameter to the calling code, which is the variable, into which the result of the conversion needs to be stored.
· ·
• Posts: 35Member
: : : : : : : : I need to write a procedure:
: : : : : : : : procedure HextoDec
: : : : : : : : (const Hexstr: string; var DecOut : integer);
: : : : : : : : I need to write this without using 'read' or 'write' within it.
: : : : : : : :
: : : : : : : : I have earlier written a function which canverts from Hex to Dec successfully and have been trying to swap bits of it around so that it will work as this procedure but to know avail... I've included where I have got so far and would be very grateful if anyone could offer me some advice... Cheers
: : : : : : : :
: : : : : : : : [code]
: : : : : : : : procedure HexToDec (const hexstr: string ; DecOut: integer);
: : : : : : : :
: : : : : : : : const
: : : : : : : : HexValues : string [16] ='0123456789ABCDEF';
: : : : : : : :
: : : : : : : : var
: : : : : : : : i : integer;
: : : : : : : :
: : : : : : : :
: : : : : : : : begin
: : : : : : : : DecOut := 0;
: : : : : : : : case Length(Hexstr) of
: : : : : : : : 0: DecOut := 0;
: : : : : : : : 1..8: for i:=1 to Length(Hexstr) do
: : : : : : : : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : : : : : : : else for i:=1 to 8 do
: : : : : : : : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : : : : : : :
: : : : : : : :
: : : : : : : : end;
: : : : : : : : end;
: : : : : : : : [/code]
: : : : : : : :
: : : : : : : Your code does not have a variable DecOut parameter. That is required for the actual variable in the calling code to be changed.
: : : : : :
: : : : : : Right, changed that...
: : : : : : Have put the procedure into a program to test it but can't get it to work... could you give me a clue as to what i'm missing now?
: : : : : : cheers
: : : : : : :
: : : : : :
: : : : : :
: : : : : The procedure itself works perfectly. Please, post your calling code. Perhaps that's where the error is.
: : : :
: : : : Sorry I meant to put the code in with the last message.... here you go...
: : : : [code]
: : : : uses
: : : : SysUtils;
: : : : var
: : : : user: string;
: : : : prop : integer;
: : : :
: : : :
: : : :
: : : : [red]procedure HexToDec (const hexstr: string ;var DecOut: integer);[/red]
: : : :
: : : : const
: : : : HexValues : string [16] ='0123456789ABCDEF';
: : : :
: : : : var
: : : : i : integer;
: : : :
: : : :
: : : : begin
: : : : DecOut := 0;
: : : : case Length(Hexstr) of
: : : : 0: DecOut := 0;
: : : : 1..8: for i:=1 to Length(Hexstr) do
: : : : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : : : else for i:=1 to 8 do
: : : : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : : :
: : : :
: : : : end;
: : : : end;
: : : : begin
: : : : writeln ('Please enter the Hex number you wish to convert...');
: : : : readln (user);
: : : : begin
: : : : [blue]HexToDec(User);[/blue]
: : : :
: : : : readln (prop) ;
: : : : end;
: : : : end.
: : : : [/code]
: : : : :
: : : :
: : : :
: : : You forgot the integer parameter in the call. Also you don't write the converted value to screen, so you don't see if it worked.
: : :
: : I've added a writeln after calling the procedure... is this what you meant by writing it to screen? but i don't understand which integer parameter i have forgotten or where to put it...?
: : Sorry...
: :
: If you look at the procedure declaration (red in the code), you will see 2 parameters: hexstr and DecOut. In your procedure call (blue) there is only 1: user. This means that the code doesn't compile. And if it does, it does not know what to do with the DecOut parameter. The call code must include more code to tell the computer what to do with the DecOut value. In other words, you need to add a second parameter to the calling code, which is the variable, into which the result of the conversion needs to be stored.
:
Excellent working now!!!! Thank-you!!!

· ·
• Posts: 35Member
: : : : : : : : : I need to write a procedure:
: : : : : : : : : procedure HextoDec
: : : : : : : : : (const Hexstr: string; var DecOut : integer);
: : : : : : : : : I need to write this without using 'read' or 'write' within it.
: : : : : : : : :
: : : : : : : : : I have earlier written a function which canverts from Hex to Dec successfully and have been trying to swap bits of it around so that it will work as this procedure but to know avail... I've included where I have got so far and would be very grateful if anyone could offer me some advice... Cheers
: : : : : : : : :
: : : : : : : : : [code]
: : : : : : : : : procedure HexToDec (const hexstr: string ; DecOut: integer);
: : : : : : : : :
: : : : : : : : : const
: : : : : : : : : HexValues : string [16] ='0123456789ABCDEF';
: : : : : : : : :
: : : : : : : : : var
: : : : : : : : : i : integer;
: : : : : : : : :
: : : : : : : : :
: : : : : : : : : begin
: : : : : : : : : DecOut := 0;
: : : : : : : : : case Length(Hexstr) of
: : : : : : : : : 0: DecOut := 0;
: : : : : : : : : 1..8: for i:=1 to Length(Hexstr) do
: : : : : : : : : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : : : : : : : : else for i:=1 to 8 do
: : : : : : : : : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : : : : : : : :
: : : : : : : : :
: : : : : : : : : end;
: : : : : : : : : end;
: : : : : : : : : [/code]
: : : : : : : : :
: : : : : : : : Your code does not have a variable DecOut parameter. That is required for the actual variable in the calling code to be changed.
: : : : : : :
: : : : : : : Right, changed that...
: : : : : : : Have put the procedure into a program to test it but can't get it to work... could you give me a clue as to what i'm missing now?
: : : : : : : cheers
: : : : : : : :
: : : : : : :
: : : : : : :
: : : : : : The procedure itself works perfectly. Please, post your calling code. Perhaps that's where the error is.
: : : : :
: : : : : Sorry I meant to put the code in with the last message.... here you go...
: : : : : [code]
: : : : : uses
: : : : : SysUtils;
: : : : : var
: : : : : user: string;
: : : : : prop : integer;
: : : : :
: : : : :
: : : : :
: : : : : [red]procedure HexToDec (const hexstr: string ;var DecOut: integer);[/red]
: : : : :
: : : : : const
: : : : : HexValues : string [16] ='0123456789ABCDEF';
: : : : :
: : : : : var
: : : : : i : integer;
: : : : :
: : : : :
: : : : : begin
: : : : : DecOut := 0;
: : : : : case Length(Hexstr) of
: : : : : 0: DecOut := 0;
: : : : : 1..8: for i:=1 to Length(Hexstr) do
: : : : : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : : : : else for i:=1 to 8 do
: : : : : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : : : :
: : : : :
: : : : : end;
: : : : : end;
: : : : : begin
: : : : : writeln ('Please enter the Hex number you wish to convert...');
: : : : : readln (user);
: : : : : begin
: : : : : [blue]HexToDec(User);[/blue]
: : : : :
: : : : : readln (prop) ;
: : : : : end;
: : : : : end.
: : : : : [/code]
: : : : : :
: : : : :
: : : : :
: : : : You forgot the integer parameter in the call. Also you don't write the converted value to screen, so you don't see if it worked.
: : : :
: : : I've added a writeln after calling the procedure... is this what you meant by writing it to screen? but i don't understand which integer parameter i have forgotten or where to put it...?
: : : Sorry...
: : :
: : If you look at the procedure declaration (red in the code), you will see 2 parameters: hexstr and DecOut. In your procedure call (blue) there is only 1: user. This means that the code doesn't compile. And if it does, it does not know what to do with the DecOut parameter. The call code must include more code to tell the computer what to do with the DecOut value. In other words, you need to add a second parameter to the calling code, which is the variable, into which the result of the conversion needs to be stored.
: :
: Excellent working now!!!! Thank-you!!!

Any chance you could tell me how come this procedure doesn't work when it's pretty much in the same format?

[code]
uses
SysUtils;
var
user, prop : integer;
result : string;
procedure DecToHex (Const Number : integer; var Hexstr : string);

const
HexValue : string [16] = '0123456789ABCDEF';

var

remainder : integer;

begin
HexStr := '';
while Number > 0 do
begin
Remainder := Number mod 16;
HexStr := HexValue[Remainder + 1] + HexStr;
Number := Number div 16 ;

end;
end;
begin
DecToHex (user, result);
writeln(result);
end.
: [/code]
:

· ·
• Posts: 6,349Member
: : : : : : : : : : I need to write a procedure:
: : : : : : : : : : procedure HextoDec
: : : : : : : : : : (const Hexstr: string; var DecOut : integer);
: : : : : : : : : : I need to write this without using 'read' or 'write' within it.
: : : : : : : : : :
: : : : : : : : : : I have earlier written a function which canverts from Hex to Dec successfully and have been trying to swap bits of it around so that it will work as this procedure but to know avail... I've included where I have got so far and would be very grateful if anyone could offer me some advice... Cheers
: : : : : : : : : :
: : : : : : : : : : [code]
: : : : : : : : : : procedure HexToDec (const hexstr: string ; DecOut: integer);
: : : : : : : : : :
: : : : : : : : : : const
: : : : : : : : : : HexValues : string [16] ='0123456789ABCDEF';
: : : : : : : : : :
: : : : : : : : : : var
: : : : : : : : : : i : integer;
: : : : : : : : : :
: : : : : : : : : :
: : : : : : : : : : begin
: : : : : : : : : : DecOut := 0;
: : : : : : : : : : case Length(Hexstr) of
: : : : : : : : : : 0: DecOut := 0;
: : : : : : : : : : 1..8: for i:=1 to Length(Hexstr) do
: : : : : : : : : : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : : : : : : : : : else for i:=1 to 8 do
: : : : : : : : : : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : : : : : : : : :
: : : : : : : : : :
: : : : : : : : : : end;
: : : : : : : : : : end;
: : : : : : : : : : [/code]
: : : : : : : : : :
: : : : : : : : : Your code does not have a variable DecOut parameter. That is required for the actual variable in the calling code to be changed.
: : : : : : : :
: : : : : : : : Right, changed that...
: : : : : : : : Have put the procedure into a program to test it but can't get it to work... could you give me a clue as to what i'm missing now?
: : : : : : : : cheers
: : : : : : : : :
: : : : : : : :
: : : : : : : :
: : : : : : : The procedure itself works perfectly. Please, post your calling code. Perhaps that's where the error is.
: : : : : :
: : : : : : Sorry I meant to put the code in with the last message.... here you go...
: : : : : : [code]
: : : : : : uses
: : : : : : SysUtils;
: : : : : : var
: : : : : : user: string;
: : : : : : prop : integer;
: : : : : :
: : : : : :
: : : : : :
: : : : : : [red]procedure HexToDec (const hexstr: string ;var DecOut: integer);[/red]
: : : : : :
: : : : : : const
: : : : : : HexValues : string [16] ='0123456789ABCDEF';
: : : : : :
: : : : : : var
: : : : : : i : integer;
: : : : : :
: : : : : :
: : : : : : begin
: : : : : : DecOut := 0;
: : : : : : case Length(Hexstr) of
: : : : : : 0: DecOut := 0;
: : : : : : 1..8: for i:=1 to Length(Hexstr) do
: : : : : : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : : : : : else for i:=1 to 8 do
: : : : : : DecOut := 16*DecOut + Pos(Upcase(Hexstr[i]), HexValues)-1;
: : : : : :
: : : : : :
: : : : : : end;
: : : : : : end;
: : : : : : begin
: : : : : : writeln ('Please enter the Hex number you wish to convert...');
: : : : : : readln (user);
: : : : : : begin
: : : : : : [blue]HexToDec(User);[/blue]
: : : : : :
: : : : : : readln (prop) ;
: : : : : : end;
: : : : : : end.
: : : : : : [/code]
: : : : : : :
: : : : : :
: : : : : :
: : : : : You forgot the integer parameter in the call. Also you don't write the converted value to screen, so you don't see if it worked.
: : : : :
: : : : I've added a writeln after calling the procedure... is this what you meant by writing it to screen? but i don't understand which integer parameter i have forgotten or where to put it...?
: : : : Sorry...
: : : :
: : : If you look at the procedure declaration (red in the code), you will see 2 parameters: hexstr and DecOut. In your procedure call (blue) there is only 1: user. This means that the code doesn't compile. And if it does, it does not know what to do with the DecOut parameter. The call code must include more code to tell the computer what to do with the DecOut value. In other words, you need to add a second parameter to the calling code, which is the variable, into which the result of the conversion needs to be stored.
: : :
: : Excellent working now!!!! Thank-you!!!
:
: Any chance you could tell me how come this procedure doesn't work when it's pretty much in the same format?
:
: [code]
: uses
: SysUtils;
: var
: user, prop : integer;
: result : string;
: procedure DecToHex (Const Number : integer; var Hexstr : string);
:
: const
: HexValue : string [16] = '0123456789ABCDEF';
:
: var
:
: remainder : integer;
:
: begin
: HexStr := '';
: while Number > 0 do
: begin
: Remainder := Number mod 16;
: HexStr := HexValue[Remainder + 1] + HexStr;
: [red]Number := Number div 16 ;[/red]
:
:
:
: end;
: end;
: begin
: writeln (' please enter number');
: DecToHex (user, result);
: writeln(result);