Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> StringGrid, Проблема с дробными числами 
:(
    Опции темы
Farmokolog
Дата 13.2.2011, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 13.2.2011

Репутация: нет
Всего: нет



Подскажите пожалуйста в чем тут проблема не могу сделать чтобы в ячейках пересчитывал и дробные числа
если заменить integer на  real то происхдит ошибка.

Код

procedure TMainForm.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
  var
    a,b,y:array [1..7] of integer;
    j,summ:integer;
begin

for j:=1 to 7 do
if not TryStrToint(StringGrid1.Cells [1,j],A[j]) then
A[j]:=0;

for j:=1 to 7 do
if not TryStrToint(StringGrid1.Cells [2,j],B[j]) then
B[j]:=0;
for j:=1 to 7 do
begin
  summ:=A[j]*B[j];
  Y[j]:=summ;
  StringGrid1.Cells[3, j]:=intToStr(Y[j]);
end;
end;

PM MAIL   Вверх
Данкинг
Дата 13.2.2011, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Какая ошибка? Небось снова Decimalseparator виноват? smile

Добавлено через 48 секунд
К тому же у тебя всякие intToStr - ты и дробные числа с этой функцией используешь? smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Farmokolog
Дата 13.2.2011, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 13.2.2011

Репутация: нет
Всего: нет



В таком виде как я выложил он рабтает тока с целыми числами.
если заменю на Real и  TryStrToFloat  FloatToStr 
то не кампилирут а останвливается на j:=1 или A[j].
PM MAIL   Вверх
Данкинг
Дата 13.2.2011, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(Farmokolog @  13.2.2011,  12:15 Найти цитируемый пост)
останвливается 

И что пишет-то?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
THandle
Дата 13.2.2011, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



Цитата(Farmokolog @  13.2.2011,  13:15 Найти цитируемый пост)
то не кампилирут а останвливается на j:=1 или A[j]. 


Переменной j тип на Real меняешь тоже? Думаю не стоит.
PM   Вверх
Farmokolog
Дата 13.2.2011, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 13.2.2011

Репутация: нет
Всего: нет



Вот такая
[Error] Main.pas(322): For loop control variable must have ordinal type
[Error] Main.pas(323): Incompatible types: 'Integer' and 'Real'
[Error] Main.pas(324): Incompatible types: 'Integer' and 'Real'
[Error] Main.pas(326): For loop control variable must have ordinal type
[Error] Main.pas(327): Incompatible types: 'Integer' and 'Real'
[Error] Main.pas(328): Incompatible types: 'Integer' and 'Real'
[Error] Main.pas(329): For loop control variable must have ordinal type
[Error] Main.pas(331): Incompatible types: 'Integer' and 'Real'
[Error] Main.pas(332): Incompatible types: 'Integer' and 'Real'
[Error] Main.pas(333): Incompatible types: 'Integer' and 'Real'
[Error] Main.pas(333): Incompatible types: 'Integer' and 'Real'
[Fatal Error] MainP.dpr(5): Could not compile used unit 'Main.pas'
и вот такая
[Error] Main.pas(323): There is no overloaded version of 'TryStrToFloat' that can be called with these arguments
[Error] Main.pas(327): Types of actual and formal var parameters must be identical
[Error] Main.pas(331): Incompatible types: 'Integer' and 'Extended' 
PM MAIL   Вверх
THandle
Дата 13.2.2011, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



Farmokolog, попробуй переменные такого типа:

Код

var
  a, b, y: array [1..7] of Float;
  summ: Float;
  j: Integer;



Плюс все TryStrToInt замени на TryStrToFloat. Что в таком случае?
PM   Вверх
Farmokolog
Дата 13.2.2011, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 13.2.2011

Репутация: нет
Всего: нет



выдало:
[Error] Main.pas(317): Undeclared identifier: 'Float'
[Error] Main.pas(318): Constant or type identifier expected
[Error] Main.pas(323): There is no overloaded version of 'TryStrToFloat' that can be called with these arguments
[Error] Main.pas(327): There is no overloaded version of 'TryStrToFloat' that can be called with these arguments
[Fatal Error] MainP.dpr(5): Could not compile used unit 'Main.pas'

PM MAIL   Вверх
Keeper89
Дата 13.2.2011, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 9
Всего: 58



Что еще за Float? Double может быть.


--------------------
PM MAIL WWW   Вверх
THandle
Дата 13.2.2011, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



Farmokolog, бррр... Double/Single вместо Float возьми.  

smile

Добавлено через 28 секунд
Keeper89, я просто последние полгода пишу на Си, как то... smile
PM   Вверх
Farmokolog
Дата 13.2.2011, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 13.2.2011

Репутация: нет
Всего: нет



Все Огромнейшее спасибо все заработало!!!
Выклыдываю готовый рабочий код, вдруг каму еще пригодиться.
Код

procedure TMainForm.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
var
  a, b, y: array [1..7] of Double;
  summ: Double;
  j: Integer;
begin

for j:= 1 to 7 do
if not TryStrToFloat(StringGrid1.Cells [1,j],A[j]) then
A[j]:=0;

for j:=1 to 7 do
if not TryStrToFloat(StringGrid1.Cells [2,j],B[j]) then
B[j]:=0;
for j:=1 to 7 do
begin

  summ:=A[j]*B[j];
  Y[j]:=summ;
  StringGrid1.Cells[3, j]:=FloatToStr(Y[j]);
end;
end;

PM MAIL   Вверх
Keeper89
Дата 13.2.2011, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 9
Всего: 58



Не понимаю только необходимости пересчета при каждом выделении ячейки


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0525 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.