Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2008, 12:50   #1
Veiron
Форумчанин
 
Аватар для Veiron
 
Регистрация: 01.12.2007
Сообщений: 346
По умолчанию Ошибка в сортировке

Ни как не могу понять почему при использовании этого кода...
Код:
var jj : Integer;
     t : String;
begin
for jj:=0 to 4 do
begin
if StrToInt(StringGrid1.Cells[0,jj]) < StrToInt(StringGrid1.Cells[0,jj+1]) then
t:=StringGrid1.Cells[0,jj];
StringGrid1.Cells[0,jj]:=StringGrid1.Cells[0,jj+1];
StringGrid1.Cells[0,jj+1]:=t;
end;
...возникает ошибка '' is not a valid integer value.
Win 10 x64 | VS 2015 | MSSQL 2014
autovestitv.ru
Veiron вне форума Ответить с цитированием
Старый 20.01.2008, 13:11   #2
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

Код:
var jj : Integer;   
     t : String;   
begin   
for jj:=0 to 4 do   
begin   
if StrToInt(StringGrid1.Cells[0,jj]) < StrToInt(StringGrid1.Cells[0,jj+1]) then   
Begin // <----
t:=StringGrid1.Cells[0,jj];   
StringGrid1.Cells[0,jj]:=StringGrid1.Cells[0,jj+1];   
StringGrid1.Cells[0,jj+1]:=t;   
End;// <----
end;
P.S.: Проверяй значения на корректность
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"

Последний раз редактировалось AlDelta; 20.01.2008 в 13:14.
AlDelta вне форума Ответить с цитированием
Старый 20.01.2008, 13:12   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Это означает только одно - как минимум одна ячейка содержит либо пробел (подчеркивание, точку, запятую и т.п.), либо букву, либо ничего вообще, т.е. ''...
Для используемого вами обработчика ячейки в обязательном порядке должны содержать числа и только числа...
mihali4 вне форума Ответить с цитированием
Старый 20.01.2008, 13:14   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

1.Что находится в ячейках таблицы?
2.Неправильно организован цикл. Нужно так:
Если размерность массива n тогда
for ii:=0 to n-1 do
for jj:=0 to n-1 do
if StrToInt(StringGrid1.Cells[0,jj]) < StrToInt(StringGrid1.Cells[0,jj+1]) then
begin
t:=StringGrid1.Cells[0,jj];
StringGrid1.Cells[0,jj]:=StringGrid1.Cells[0,jj+1];
StringGrid1.Cells[0,jj+1]:=t;
end;
puporev вне форума Ответить с цитированием
Старый 20.01.2008, 13:42   #5
Veiron
Форумчанин
 
Аватар для Veiron
 
Регистрация: 01.12.2007
Сообщений: 346
По умолчанию

В ячейках находятся только целые цифры, ячейки все заполнены, вот может исходник посмотрите за одно может подскажите как лучше его заполнить.
Вложения
Тип файла: rar SortMas.rar (7.7 Кб, 17 просмотров)
Win 10 x64 | VS 2015 | MSSQL 2014
autovestitv.ru
Veiron вне форума Ответить с цитированием
Старый 20.01.2008, 15:35   #6
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Интресно вот это
Код:
for jj:=0 to n-1 do
if StrToInt(Mas.Cells[0,jj]) < StrToInt(Mas.Cells[0,jj+1]) then
если n - максимальное кол-во будь то строк или столбцов то! когда jj будет равен n - 1, значит в сравнении Mas.Cells[0, jj+1 { тут уже будет n }] - я незнаю что он вернет Вы очевидно выходите за границы грида. И еще разве этот цикл дасть сортировку ? меня терзают сомнения на счет этого...

Последний раз редактировалось BOBAH13; 20.01.2008 в 15:38.
BOBAH13 вне форума Ответить с цитированием
Старый 20.01.2008, 22:09   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Интресно вот это
...
если n - максимальное кол-во будь то строк или столбцов, то! когда jj будет равен n - 1, значит в сравнении Mas.Cells[0, jj+1 { тут уже будет n }] - я незнаю, что он вернет Вы, очевидно, выходите за границы грида. И еще, разве этот цикл даст сортировку ? меня терзают сомнения на счет этого...
Совершенно справедливо, меня это тоже насторожило, но мало ли, может там размер бешеный, а используется только часть. К тому же при выходе за пределы должна выдаваться характерная ошибка, не так ли, коллега?
З.Ы. (Не обижайтесь на красное - это "Михалыч в своем амплуа")

Последний раз редактировалось mihali4; 20.01.2008 в 22:14.
mihali4 вне форума Ответить с цитированием
Старый 20.01.2008, 22:35   #8
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Да коллега. Я просто вспешке пишу. А ошибка не вызывается наверное из-за того, что просто не доходит дело до нее, а обрывается на переводе типов.
+ Для перевода типов String в Integer ( или в другие числовые ) используйте функцию val, я сам ей постоянно пользуюсь.
BOBAH13 вне форума Ответить с цитированием
Старый 20.01.2008, 23:36   #9
Veiron
Форумчанин
 
Аватар для Veiron
 
Регистрация: 01.12.2007
Сообщений: 346
По умолчанию

В таком случае как пользоваться этой функцией на данном примере что бы работало?
Цитата:
может там размер бешеный
Если бы, 5row,3col [исходник]
Win 10 x64 | VS 2015 | MSSQL 2014
autovestitv.ru
Veiron вне форума Ответить с цитированием
Старый 20.01.2008, 23:44   #10
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Жмем F1 при выделенном val в среде разработки Delphi
BOBAH13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите написать макрос выбора по дате/времени и сортировке по нужным параметрам rf_dru Microsoft Office Excel 39 04.07.2008 12:36
Двумерный массив в сортировке anco Паскаль, Turbo Pascal, PascalABC.NET 21 21.06.2008 00:49
Ошибка Freeman Общие вопросы C/C++ 3 26.05.2008 19:43
В чем ошибка!!! juden Общие вопросы Delphi 12 10.03.2008 08:53
Вопрос по сортировке Ermiss БД в Delphi 5 17.02.2008 17:32