Как считать вещественные числа из Dbf

Тема в разделе "Delphi - Базы данных", создана пользователем Alex2004, 16 сен 2010.

  1. Alex2004

    Alex2004 Гость

    Вот примерный код...нужно считать все числа в данном столбце и сложить..вся проблема лишь в том что не знаю как считать вещественные числа из DBF :)
    Код (C++):
    datamodule1.table1.first;
    for i:=0 to datamodule1.table1.recordCount-1 do
    begin
    x:=strtoint(datamodule1.table1.Fields..Fields[7].AsString);
    end;
     
  2. etc

    etc Гость

    При чем тут вещественные числа?
     
  3. Alex2004

    Alex2004 Гость

    блин...я знаю что strtoInt эт тока целые считывает..вот написал вначале примерный код...короче..есть столбец..там числа (1212.15) в таком формате..так вот пробывал их считать и strtofloat тож не хотить...есть канешна подозрения что ему точка не нравиться...но как бы заменять точку на запятую долговато..вот и спрашиваю как это можно считать!!! :)
     
  4. etc

    etc Гость

    Зачем тогда вперли сюда его?
    Это как?
    В каком таком?
    Сначала надо понять какого типа данные в этом поле, потом и конвертацией заниматься, если она ваще нужна будет.
     
  5. V88

    V88 Well-Known Member

    Регистрация:
    22 окт 2008
    Сообщения:
    51
    Симпатии:
    0
    можно в прнципе так:
    Код (Delphi):
    datamodule1.table1.first;
    for i:=0 to datamodule1.table1.recordCount-1 do
    begin
    x:=datamodule1.table1.Fields..Fields[7].Value;
    end;
     
  6. oleksandr

    oleksandr Гость

    По всем правилам должно работать AsFloat или AsVariant или поле String с непонятными знаками (разделители точк, запятые...) вы хотите конвертировать в Real. Тогда нужно считывать как AsString заменять знаки чтобы мона было StrToFloat
     
  7. Alex2004

    Alex2004 Гость



    :) вот не пойму че умничать то...нашел решение проблемы напишу мож кому пригодиться...
    Код (C++):
    function StrToFloat2(const S : String) : Extended;
    var FS : TFormatSettings;
    begin
    if pos('.', S) > 0 then
    FS.DecimalSeparator := '.';
    if pos(',', S) > 0 then
    FS.DecimalSeparator := '.';
    Result := StrToFloat(S, FS)  
    end;
    смысл такой сделал так чтоб прорамка понимала точку эту...и потом считывал обычным strtofloat и все заработала путем..всем спасибо за внимание ;)
     
Загрузка...

Поделиться этой страницей