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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.04.2009, 20:04
Аватар для rasamaha
rasamaha rasamaha вне форума
Прохожий
 
Регистрация: 28.03.2009
Сообщения: 19
Репутация: 10
По умолчанию Проблема с параметрами процедуры...

Код:
var
  L, S: Integer;

for L:=1 to StringGrid1.RowCount do
        begin
        S:=StrToInt(StringGrid1.Cells[7,L]);
        if S<=14 then
          begin
          Label15.Visible:=true;
          Label15.Caption:='До записи осталось меньше 14 дней!';
           break;                                                                                       
          end;
        end;

Этот код выполняется в нескольких местах: при загрузке таблицы, при изменении содержимого и при добавлении новой записи.
Хочу написать собственную процедуру этой проверки... но не получается... у меня проблема с описанием этой процедуры и с передачей параметров
Я не смог найти материала по написанию собственных функций и процедур, а то что есть в книгах, очень скудный материал...
Помогите пожалуйста, можно на этом примере, можно на собственных...
Куда что писать?
Ответить с цитированием
  #2  
Старый 12.04.2009, 20:27
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Во-первых, ошибка в коде. А именно,
Код:
for L:=1 to StringGrid1.RowCount do
Когда переменная L получит значение, равное StringGrid1.RowCount, произойдет обращение к несуществующей ячейке. Как вы помните, нумерация начинается с нуля и заканчивается значением StringGrid1.RowCount-1.

Во-вторых, не очень понятно, что конкретно вы желаете получить от своей собственной процедуры и чем не устраивает имеющаяся... Ну создайте процедуру и вставьте этот код в нее. Параметры ей, думаю не нужны, если объект StringGrid1 все время один и тот же.
Ответить с цитированием
  #3  
Старый 12.04.2009, 20:40
Аватар для rasamaha
rasamaha rasamaha вне форума
Прохожий
 
Регистрация: 28.03.2009
Сообщения: 19
Репутация: 10
По умолчанию

проблемы были, когда начальное значение L было равно 0, потому что первая строка, заголовочная пустая. а сейчас проблем с проверкой нет,
даже если L=StringGrid.RowCount

Я не знаю что писать в скобках при описании процедуры и что писать в тех же скобках при вызове этой процедуры.

У меня такая проблема уже не впервой...
Скорей всего мне нужно знать, где можно прочитать подробный материал по написанию своих собственных функций и процедур.

А эта функция просто проверяет содержимое определенных ячеек и если значение меньше, то... и если условие на какой-то ячейке выполнено, то выход из цикла...
Ответить с цитированием
  #4  
Старый 12.04.2009, 20:43
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

На этом форуме была тема с кучей книг по Delphi для новичков. В каждой книге по Delphi ОБЯЗАТЕЛЬНО есть статья по написанию процедур и функций. Штудируй))
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #5  
Старый 12.04.2009, 20:48
Аватар для rasamaha
rasamaha rasamaha вне форума
Прохожий
 
Регистрация: 28.03.2009
Сообщения: 19
Репутация: 10
По умолчанию

popyurv, спасибо за совет)) у меня дома пять книг по Делфи, и ...
а вроде не дурак, говорят знакомые))) а написать собственную так и не получилось, вечно выдает ошибку что что-то не так с параметрами или их не достаточно...
я еще раз проштудирую эту тему, может где что упустил...
а лучше попробую еще раз написать и выложить код, чтоб вы посмотрели)
Ответить с цитированием
  #6  
Старый 12.04.2009, 20:51
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Цитата:
Куда что писать?
А что конкретно Вы хотите проверять? Если это известно - то отсюда и отпляшем
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #7  
Старый 12.04.2009, 23:16
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Я так понял вы пытаетесь оптимизировать вашу программу, для чего повторяющиеся блоки кода хотите вынести в процедуры. Ошибки скорее всего у вас возникают потому-что вы нарушаете правила "видимости переменных". Вот с этим наверное и разберитесь в первую очередь, а уже после этого вы поймете имеет ли смысл в вашу процедуру передавать параметры или она без них будет правильно работать.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #8  
Старый 12.04.2009, 20:48
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

rasamaha, а сюда не заглядывали? =)
И вообще, в нормальных книгах достаточно подробно расписывается материал о создании подпрограмм (процедур и функций)

И все же по поводу ошибки: предлагаю вам заполнить всю седьмую колонку числами, заведомо бОльшими, чем 14. И посмотреть, как там "проблем нет"...
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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