Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1081495413
baromir
2004-04-09 11:23
2004.04.25
Запуск проверки при открытии формы (+)


14-1080554097
Dmitriy O.
2004-03-29 13:54
2004.04.25
Как определить чо нужно а что нет ?


1-1081251006
Aleksandr
2004-04-06 15:30
2004.04.25
Если я назначаю событие Application.OnException, как оно с try..?


3-1080803624
dima74
2004-04-01 11:13
2004.04.25
Временные файлы


7-1077458116
DuhcmanSoft
2004-02-22 16:55
2004.04.25
Работа с процессами в ОС Win2k





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский