数据类型转换函数源码
本文章为围墙博客原创,传载请注明出处.谢谢,WQInt2Str函数已测试执行转换成功.若要转换Int64,请讲函数局部变量A: array[0..10] of Char;的数组长度变为19即可.算法原理自己所写,请读者不吝赐教.2012-11-24
{
作者:围墙.
功能: 将整形数据转换成字符串数据.
参数: Value: 要转换的整形数据.
Text: 指向一个用于转换后存放的内存地址.
示范:(d: array[0..10] of char;)
WQInt2Str(1424234, d);
d为'1424234'.
}
procedure WQInt2Str(Value: Integer; Text: PChar);
const S: array[0..9] of Char = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
var I: Integer;
B: Byte;
A: array[0..10] of Char;
begin
if (Value = 0) then begin Text^ := '0'; Exit; end;
I := 0;
if (Value < 0) then begin
Value := - Value;
repeat
B := Byte(Value mod 10);
A[I] := S[B];
Value := (Value - B) div 10;
Inc(I);
until Value = 0;
A[I] := '-';
Inc(I);
end else begin
repeat
B := Byte(Value mod 10);
A[I] := S[B];
Value := (Value - B) div 10;
Inc(I);
until Value = 0;
end;
while (I <> 0) do begin
Dec(I);
Text^ := A[I];
Inc(Text);
end;
end;
我爱好编程,工作是编程.任职音频处理程序员.希望以技术会友.请不吝赐教.
WQStr2Int函数已测试通过.
{
功能: 将字符串转换成整形.
参数: lpText: 要转换的整形或浮点格式的字符串.
Value: 转换后存放的整形内存地址.
返回: 如果转换成功返回True,并把该值存放与Value指向的地址中,失败为False.
示范:(d: array[0..20] of char;)
WQStr2Int('-234.1424234', d);
d为'-234'.
}
function WQStr2Int(lpText: PChar; Value: PInteger): Boolean;
var P: PChar;
Len, I, V, D: Integer;
C: Byte;
begin
P := lpText;
Len := 0;
Result := False;
D := 1;
if (P^ = '-') then begin
Len := -1;
D := -1;
end else if (P^ = '+') then Len := -1;
while (P <> nil) and (P^ <> '.') do begin Inc(P); Inc(Len); end;
if (Len = 0) or (Len > 11) then Exit; // 11 = Length('-2147483647');
Dec(P);
I := 1;
V := 0;
while (Len <> 0) do begin
C := Ord(P^);
if (C < 48) or (C > 57) then Exit; // not in range 0~9
V := V + (C - 48) * I;
I := I * 10;
Dec(P);
Dec(Len);
end;
Value^ := V * D;
Result := True;
end;
浙公网安备 33010602011771号