Главная страница
    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.04 c
11-1063904334
Boguslaw
2003-09-18 20:58
2004.04.25
What about English forum ?


8-1074632807
Hawk
2004-01-21 00:06
2004.04.25
Постепенное наращивание качества при передачи изображения


1-1081641557
Azon
2004-04-11 03:59
2004.04.25
DblClick для RichEdit а и анимированная иконка для трэя


8-1067023874
FiLimon
2003-10-24 23:31
2004.04.25
Изменить размер картинки


14-1080893286
peypivo
2004-04-02 12:08
2004.04.25
галстук





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский