Форум: "Начинающим";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];
ВнизПеревод из одного типа в другой... Найти похожие ветки
← →
xeron (2006-12-26 15:25) [0]Всем привет!
В общем такая проблемма...
В моей программе нужно перевести переменную из типа PChar в Double
и обратно...
Я сделал это так:
......
uses
Windows,
SysUtils;
......
///Разделителем в числе может быть точка, поэтому заменяем ее запятой.
s := PChar(StringReplace(s, ".", ",", [rfReplaceAll]));
x := StrToFloat(s);
......
s := PChar(FloatToStr(x));
......
Но при использовании SysUtils размер программы увеличивается в несколько раз!
Вопрос:
Как сделать то же самое но без использования SysUtils?
← →
Сергей М. © (2006-12-26 15:30) [1]"Выдрать" из SysUtils к себе в программу только те участки кода, которые реально используются.
← →
xeron (2006-12-26 15:46) [2]Пытался... Там СТОЛЬКО кода, я запутался :(
← →
Сергей М. © (2006-12-26 16:03) [3]Вот для этого SysUtils и существует, чтобы тот кто "путается" просто использовал готовые ф-ции из SysUtils и не заморачивался размерами программы
← →
xeron (2006-12-26 16:32) [4]>и не заморачивался размерами программы
Может вообще на Vcl писать? А че тоже неплохо...
Я серьезно... Помогите плиз...
Вот накопал анологичное...
Function IntToStr(Value: Integer): String; //Included we don"t use SysUtils
Var aSign: Bool;
Begin
Result := "";
aSign := Value >= 0;
If Not aSign Then Value := -Value;
Repeat
Result := Char(Value - (Value Div 10) * 10 + Byte("0")) + Result;
Value := Value Div 10;
Until Value = 0;
If Not aSign Then Result := "-" + Result;
End;
но не знаю как перевести обратно...
← →
Сергей М. © (2006-12-26 16:40) [5]
> Может вообще на Vcl писать? А че тоже неплохо
Почему бы и нет ? На то VCL и существует.
> Я серьезно
Я тоже не шучу.
> не знаю как перевести обратно
А с самим "аналогичным"-то разобрался, где там что как и почему ? Или и здесь, в дюжине стргок, "запутался" ?
← →
xeron (2006-12-26 16:46) [6]
> А с самим "аналогичным"-то разобрался, где там что как и
> почему ? Или и здесь, в дюжине стргок, "запутался" ?
Это нагон?
← →
BiN © (2006-12-26 16:49) [7]А Val чем не устраивает?
← →
Сергей М. © (2006-12-26 16:55) [8]
> Это нагон?
Это еще как ?
← →
evvcom © (2006-12-26 16:57) [9]> [0] xeron (26.12.06 15:25)
> s := PChar(StringReplace(s, ".", ",", [rfReplaceAll]));
И не забудь потом с локальными настройками поиграть :)))
← →
xeron (2006-12-26 17:06) [10]
> И не забудь потом с локальными настройками поиграть :)))
Не понял...
← →
xeron (2006-12-26 17:29) [11]Получилось :)
Function NumToStr(x: extended): PChar;
var
s: String;
begin
Str(x:0:2, s);
Result:=PChar(s);
end;
Function StrToNum(s: PChar): extended;
var
Code: integer;
begin
Val(s, Result, Code);
end;
Толко проблемма с символом разделителем...
Допустим если строка 12,5
То при переводе ее в extended получаем 12...
Как быть с этим?
← →
evvcom © (2006-12-26 17:40) [12]> [11] xeron (26.12.06 17:29)
> Получилось :)
Значит самое время поиграть с [9]
> [10] xeron (26.12.06 17:06)
> Не понял...
Панель управления -> Язык и стандарты -> Числа -> Разделитель целой и дробной части числа.
Теперь понятно?
← →
xeron (2006-12-26 17:43) [13]Разобрался...
Function StrToNum(s: string): extended;
var
k: dword;
begin
Val(s, Result, k);
if (k > 0) and (s[k] = ",") then
begin
s[k] := ".";
Val(s, Result, k);
end;
end;
Спасибо всем за советы, тема закрыта...
← →
GrayFace © (2006-12-27 15:58) [14]> Str(x:0:2, s);</>
Ужос! Используй StrToFloat.
← →
GrayFace © (2006-12-27 16:00) [15]Хотя, если именно так и нужно, то нормально
← →
Anatoly Podgoretsky © (2006-12-27 18:42) [16]> evvcom (26.12.2006 17:40:12) [12]
Не стоит, это регионально не зависимо, всегда используется независимый стандарт. (совпадает с американским стандартом).
← →
evvcom © (2006-12-28 09:15) [17]> [16] Anatoly Podgoretsky © (27.12.06 18:42)
> это регионально не зависимо
Это, видимо, про Val? Кстати, в справке об этом ничего не увидел, а на практике почему-то пользуюсь функциями вида StrToXXX. А так, в обсуждении встречается и Val, и StrToFloat, все уже перемешалось так, что тяжело понять, о какой именно функции идет речь. :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.044 c