x
• Status: Solved
• Priority: Medium
• Security: Public
• Views: 429

# How to convert a string to double

i have a problem in converting a string from a PChar type to a double type? may you suggest a method to perform this easy task?
0
smile_tbw
• 5
• 4
1 Solution

Commented:
Try this:
var d:double;
p:PChar;
begin
d:=1.09;
p:=PChar(@d);
end;

If you want convert a string to an UNICODE string (array of double byte char), then use
WideCharToMultiByte() and MultiByteToWideChar().

The WideCharToMultiByte function maps a wide-character string to a new character string. The new character string is not necessarily from a multibyte character set.

The MultiByteToWideChar function maps a character string to a wide-character (Unicode) string. The character string mapped by this function is not necessarily from a multibyte character set.
0

Commented:
Hi smile_tbw,

?

Is this what you mean :

var TextPChar : PChar;
Number : Double;
begin
TextPChar := '5000,4';
Number := StrToFloat(TextPChar);
end;

Zif.
0

Commented:
Well, I was too late again... but bengore, isn't the answer supposed to be the other way?
0

Author Commented:

In addition, my string is ended with a CR(\$D) and LF(£A). How to avoid it because it can't convert by using StrToFloat. Thanks.
0

Author Commented:
I'm sorry, bengore. you answer seem to be reversed to my question.
0

Commented:
Hi smile_tbw. Just remove the two last chars from the string, use copy or delete to do it :

var TextPChar : PChar;
Number : Double;
begin
TextPChar := '5000,4'+char(\$D)+char(\$A);
showmessage('with CR and LF :'+TextPChar);
showmessage('without : '+Copy(TextPChar,1,Length(TextPChar)-2));
Number := StrToFloat(Copy(TextPChar,1,Length(TextPChar)-2));
ShowMessage('GoodLuck!');
end;

Regards, Zif.
Have a nice day.
0

Author Commented:
hi Zif,

In addition my string is ended with a CR(\$D) and LF(\$A). How to avoid it because it can't convert by using StrToFloat

Thnaks.

0

Author Commented:
hey, Zif,
sorry about the point was accidentally reduced to 6. Actually i want to increase it to 60. BUT.. .. . .. Sorry again. Hope you don't mind.

Thank you very much
0

Commented:
Hi smile_tbw,

look at answer I gave you... I remove the two last chars (namely CR and LF) from the string before I use StrToFloat.

this is the function : Copy(TextPChar,1,Length(TextPChar)-2)

Ok,I just copy a part of the total string (all the char, without the last 2), but maybe it's also possible with other functions, e.g. Delete ...

The beauty of the copy is that you can still use the total string for futher processing.

Just copy my example and you got it.

Zif.
0

Commented:
Smile_tbw,

nope don't mind, only don't know if you can reduce the points.

->hi Zif,

In addition my string is ended with a CR(\$D) and LF(\$A). How to avoid it because it can't convert by using StrToFloat

Thnaks.

I think you found it in the answer I gave you :-), otherwise you wouldn't accept my answer so soon.

ZiF.

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.