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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2012, 19:03   #1
Fox-II
 
Регистрация: 25.12.2012
Сообщений: 4
Восклицание Списки в StringGride

Всем привет, помогите пожалуйста с задачей, списке, который содержит ФИО, специальность, номер, оклад, стаж, тВывести на экран те элементы списка, в которых стаж работы содержится в заданных пределах и специальность совпадает с заданной...

В общем я создал список ,сделал чтобы он выводил по стажу и он все выводит, а вот когда добавляешь условие со специальностью, то начинаются проблемы


Код:
procedure TForm1.Button3Click(Sender: TObject);
var i:integer;
    dop:spisok;
begin
dop:=Head;
i:=0 ;
StringGrid2.RowCount:=2;
StringGrid2.Rows[1].Clear;
  begin
    StringGrid2.Cells[0,0]:='номер';
    StringGrid2.Cells[1,0]:='ФИО;
    StringGrid2.Cells[2,0]:='СТАЖ';
    StringGrid2.Cells[3,0]:='ОКЛАД';
    StringGrid2.Cells[4,0]:='Специальность';

 while dop<>nil do
    begin

  /if (Edit8.text) = (dop^.spec)  then
if (Strtoint(edit6.Text) <= (Dop^.stag)) and (Strtoint(edit7.Text) >= (Dop^.stag)) then
  begin
    inc(i);
      if StringGrid2.RowCount-1<i then
       StringGrid2.RowCount:=StringGrid2.RowCount+1;
        StringGrid2.Cells[0,i]:=IntToStr(dop^.nom);
        StringGrid2.Cells[1,i]:=dop^.fam;
        StringGrid2.Cells[2,i]:=IntToStr(dop^.stag);
        StringGrid2.Cells[3,i]:=IntToStr(dop^.okl);
        StringGrid2.Cells[4,i]:=dop^.spec;
     end;
        dop:=dop^.next;
      end;
    end;
end;

Последний раз редактировалось Fox-II; 25.12.2012 в 19:36.
Fox-II вне форума Ответить с цитированием
Старый 25.12.2012, 22:44   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

очень "грязный" код.. опечатки такие, которые банально даже скомпилировать его не дадут (см., например, присвоение заголовка ФИО - так нет закрывающей кавычки..),
какой то странный одиночный флеш, форматирование ужасное.. Вы что, код на форуме руками набирали? Скопировать не пробовали?!

Вы, вероятно, так написать хотели?
Код:
procedure TForm1.Button3Click(Sender: TObject);
var i: integer;
  dop: spisok;
begin
  dop := Head;
  i := 0;
  StringGrid2.RowCount := 2;
  StringGrid2.Rows[1].Clear;
  StringGrid2.Cells[0, 0] := 'номер';
  StringGrid2.Cells[1, 0] := 'ФИО';
  StringGrid2.Cells[2, 0] := 'СТАЖ';
  StringGrid2.Cells[3, 0] := 'ОКЛАД';
  StringGrid2.Cells[4, 0] := 'Специальность';

  while dop <> nil do
  begin
    if (Strtoint(edit6.Text) <= Dop^.stag) and (Dop^.stag >= Strtoint(edit7.Text)) then
    begin
      inc(i);
      if StringGrid2.RowCount - 1 < i then
        StringGrid2.RowCount := StringGrid2.RowCount + 1;
      StringGrid2.Cells[0, i] := IntToStr(dop^.nom);
      StringGrid2.Cells[1, i] := dop^.fam;
      StringGrid2.Cells[2, i] := IntToStr(dop^.stag);
      StringGrid2.Cells[3, i] := IntToStr(dop^.okl);
      StringGrid2.Cells[4, i] := dop^.spec;
    end;
    dop := dop^.next;
  end;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.12.2012, 23:44   #3
Fox-II
 
Регистрация: 25.12.2012
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
очень "грязный" код.. опечатки такие, которые банально даже скомпилировать его не дадут (см., например, присвоение заголовка ФИО - так нет закрывающей кавычки..),
какой то странный одиночный флеш, форматирование ужасное.. Вы что, код на форуме руками набирали? Скопировать не пробовали?!

Вы, вероятно, так написать хотели?

Извините за "грязь", не просмотрел
Ну да все так и должно было быть, но там когда я завожу условие поиска в пределах стажа, все работает, а вот когда добавляю еще одно условие то она вообще перестает работать....
Просматривал пошагово, она проверив условия по специальности, выходит на
Цитата:
dop := dop^.next;
и не выводит ни одного значения...

Если сможете, помогите пожалуйста)


_______________
НЕ злоупотребляйте излишним цитированием!
Это нарушение называется overquoting (оверквотинг)
Удаляйте из цитаты лишний текст!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 25.12.2012 в 23:52.
Fox-II вне форума Ответить с цитированием
Старый 25.12.2012, 23:51   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Просматривал пошагово, она проверив условия по специальности, выходит на
ну, очевидно, что написанные вами условия НЕ ВЫПОЛНЯЮТСЯ! (нет таких записей в списке).
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.12.2012, 00:01   #5
Fox-II
 
Регистрация: 25.12.2012
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
нет таких записей в списке.
В том то и дело, что такие элементы присутствуют, а вот условие просто не выполняется...
Может нужно как то по другому написать?
Вот у меня в Edit8 заводится специальность, и она должна найти ее Dop^.spec.А она почему то просто проскакивает мимо нее. Я вот и думаю , что возможно неправильно задаются условия поиска по специальности :
if (edit8.Text) = (dop^.spec) then
Fox-II вне форума Ответить с цитированием
Старый 26.12.2012, 00:06   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Вот у меня в Edit8 заводится специальность, и она должна найти ее Dop^.spec.А она почему то просто проскакивает мимо нее. Я вот и думаю , что возможно неправильно задаются условия поиска по специальности :
if (edit8.Text) = (dop^.spec) then
в вашем коде должный совпасть с точностью ДО БУКВЫ и пробела то, что находится в dop^.spec и то, что Вы занесли в edit8
чтобы игнорировать пробелы, можно использовать функцию Trim()
чтобы игнорировать регистр (чтобы сравнению было всё равно - большие, маленькие буквы) можно использовать функцию AnsiUpperCase

вот так:
Код:
if (AnsiUpperCase(Trim(edit8.Text)) = AnsiUpperCase(Trim(dop^.spec))) then
но, разумеется, Вы должны понимать, что ПОВАР в любом случае не будет равен ПOBAP (выделенные буквы - латинские! o b a p)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.12.2012, 00:13   #7
Fox-II
 
Регистрация: 25.12.2012
Сообщений: 4
По умолчанию

Спасибо большое, теперь все работает, без вас бы не разобрался
Fox-II вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка в StringGride (поправить) GaleI Помощь студентам 0 31.03.2012 11:55
работа на stringgride Kazakhstan Общие вопросы Delphi 1 31.01.2012 19:01
Сортировка по возрастанию в Stringgride Китти Помощь студентам 2 22.12.2009 23:42
вопрос по StringGride Dimati87 Общие вопросы Delphi 1 15.07.2009 07:57
Помогите с сортировкои в stringgride? aks Помощь студентам 3 16.03.2009 07:31