Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Синтаксис
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.10.2008, 08:39
Antik163rus Antik163rus вне форума
Прохожий
 
Регистрация: 11.09.2008
Сообщения: 33
Репутация: 10
По умолчанию Stringgrid

День добрый. Столкунлся с такой проблемой как посчитать сумму в стринггриде. Вообщем считать надо в 5 столбце, а количество строк может меняца. Каким методом это сделать?
Ответить с цитированием
  #2  
Старый 02.10.2008, 11:47
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

Код:
function TForm1.CalcSumm: Extended;
var
  I : Integer;
  E : Extended;
begin
  Result := 0;
  for I := 1 to StringGrid1.RowCount-1 do //c 1, если есть заголовок
    if TryStrToFloat(StringGrid1.Cells[4, I], E) then //индекс "4" - пятая колонка
      Result := Result + E;
end;
Преобразовать полученный результат, чтобы его отобразить можно функцией FloatToStr или FloatToStrF.
__________________
Не забывайте делать резервные копии
Ответить с цитированием
  #3  
Старый 02.10.2008, 13:44
Antik163rus Antik163rus вне форума
Прохожий
 
Регистрация: 11.09.2008
Сообщения: 33
Репутация: 10
По умолчанию

СПАСИБО БОЛЬШОЕ SAN-46! работает!
есть еще вопрос: у меня в ячейку можно вводить данные, так как мне сделать чтобы он не ругался когда я ему вместо "," ввожу "."?? т.е. можно сделать чтобы и так и так было правильно? это наверное свойство определенной ячейки надо менять?
Ответить с цитированием
  #4  
Старый 02.10.2008, 14:17
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

Код:
function TForm1.CalcSumm: Extended;
var
  I, K : Integer;
  E : Extended;
  FS : TFormatSettings;
  S : String;
begin
  Result := 0;
  GetLocaleFormatSettings(0, FS);
  FS.DecimalSeparator := '.';
  for I := 1 to StringGrid1.RowCount-1 do begin
    S := StringGrid1.Cells[4, I];
    K := Pos(',', S);  
    if K > 0 then S[K] := '.';
    if TryStrToFloat(S, E, FS) then
      Result := Result + E;
  end;
end;
Такая модификация позволит ставить при вводе числа либо точку, либо запятую.
__________________
Не забывайте делать резервные копии
Ответить с цитированием
  #5  
Старый 17.10.2008, 06:40
Antik163rus Antik163rus вне форума
Прохожий
 
Регистрация: 11.09.2008
Сообщения: 33
Репутация: 10
По умолчанию

Цитата:
Сообщение от san-46
Код:
function TForm1.CalcSumm: Extended;
var
  I, K : Integer;
  E : Extended;
  FS : TFormatSettings;
  S : String;
begin
  Result := 0;
  GetLocaleFormatSettings(0, FS);
  FS.DecimalSeparator := '.';
  for I := 1 to StringGrid1.RowCount-1 do begin
    S := StringGrid1.Cells[4, I];
    K := Pos(',', S);  
    if K > 0 then S[K] := '.';
    if TryStrToFloat(S, E, FS) then
      Result := Result + E;
  end;
end;
Такая модификация позволит ставить при вводе числа либо точку, либо запятую.

Я сделал на создание формы разделитель.
А как сделать так, чтобы еще и при операциях с числами у которых разделитель '.' не вылазила ошибка?
Ответить с цитированием
  #6  
Старый 17.10.2008, 07:51
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

А что за "операции с числами"?
В Delphi в числовых константных выражениях целая и дробная части должны разделяться точкой (это когда в тексте программы число указывается в явном виде). А так же при преобразовании числа в строку и наоборот. Больше нигде при операциях с числами Delphp не оперирует разделителями, ни точками, ни запятыми.
Надо уточнить вопрос.
__________________
Не забывайте делать резервные копии
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:04.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter