Форум: "Основная";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Вниззамена , на . Найти похожие ветки
← →
an-na2002 (2004-04-05 10:32) [0]Я меняю в файле , на .
if DECIMALSEPARATOR<>"," then
s:=StringReplace(s,",",DECIMALSEPARATOR,[rfReplaceAll]);
if DECIMALSEPARATOR<>"." then
s:=StringReplace(s,".",DECIMALSEPARATOR,[rfReplaceAll]);
В результате отрезается дробная часть.
Что я делаю не так?
← →
Fay © (2004-04-05 10:37) [1]1)
for i := 1 to Length(s) do
if (s[i] = ".") or (s[i] = ",") then
s[i] := DecimalSeparator;
2)
>> В результате отрезается дробная часть.
Это у кого она есть. 8) Покажи , что было и что стало.
← →
an-na2002 (2004-04-05 12:45) [2]Было
6.60000000000000E-0001 1,85985303423037E-0001
Стало
6.60000000000000E-0001 1.00000000000000E-0001
← →
Fay © (2004-04-05 12:49) [3]Теперь подумай головой. Мы не трогали символы отличные от "," и ".". Откуда нули?! Давай весь код.
← →
an-na2002 (2004-04-06 16:20) [4]Этого хватит?
while not Eof(Vf) do
begin
ReadLn(Vf,s);
for i := 1 to Length(s) do
if (s[i] = ".") or (s[i] = ",") then
s[i] := DecimalSeparator;
end;
Reset (Vf);
while not Eof(Vf) do
begin
if RadioButton1.Checked then begin
read(Vf,w,t);
w:=w;
t:=t;
writeln(Vff,w,t);
end
← →
KSergey © (2004-04-06 16:34) [5]> [2] an-na2002 (05.04.04 12:45)
> Было
> Стало
Было в s до замены или было в файле, а что сразу после чтения из него - никто не знает?
← →
an-na2002 (2004-04-06 16:45) [6]Вывожу s в TEdit пишет ошибку "6.60000000000000E-0001 1,85985303423037E-0001" is not a volid floating point value
← →
MU (2004-04-06 16:58) [7]while not Eof(Vf) do
begin
ReadLn(Vf,s);
for i := 1 to Length(s) do
if (s[i] = ".") or (s[i] = ",") then
s[i] := DecimalSeparator;
end;
А записывать обратно не надо?
← →
an-na2002 (2004-04-06 17:10) [8]А как запасать измененую строку на старое место, а старую строку стереть?
← →
an-na2002 (2004-04-06 17:23) [9]Делаю после s[i] := DecimalSeparator;
WriteLn(Vf,s);
Ничего не меняеться.
← →
han_malign © (2004-04-06 17:36) [10]Вообще при использовании встроенных функций Delphi(не SysUtils и WinApi), можете смело забить на DECIMALSEPARATOR. Изначально Pascal понимает только ".".
System.pas:
//function _ValExt( s: AnsiString; VAR code: Integer ) : Extended;
procedure _ValExt;
asm
..............................
@@dotExp:
CMP BL,"." - "0"
JNE @@exp
..............................
З.Ы. Для русских региональных установок DECIMALSEPARATOR = ",", по умолчанию, хотя System функции(Val, Read(Ln)/Write(Ln)(Text)) все равно хотят ".". DECIMALSEPARATOR влияет только SysUtils::TextToFloat и иже с ним...
← →
an-na2002 (2004-04-06 18:53) [11]А по проще нельзя?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.037 c