Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 09.05.2018
Сообщений: 24
1

Из списка студентов группы вывести фамилии двух самых старших студентов.

10.05.2018, 10:44. Просмотров 958. Ответов 6
Метки нет (Все метки)

Здравствуйте. Задача поставлена следующим образом: из списка студентов группы, где приведены фамилии и даты рождения, вывести фамилии двух самых старших студентов. Сначала делал через массив, и всё бы хорошо, но датовый тип из стринггрида у меня ни в какую не считывался. Потом начал делать через записи, однако лучше не стало - до считывания вообще не доходит, ругается на несовместимые типы.

Кусок программы с записями, пока только ввод:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus, Grids, jpeg, ExtCtrls;
 
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    Button2: TButton;
    StringGrid2: TStringGrid;
    Image1: TImage;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
  student = record
    Name: String;
    Bd  : TDateTime;
  end;
 
var
  Form1: TForm1;
  a: array [1..5] of student;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
  for i := 1 to StringGrid1.RowCount - 1 do
      a.Name:= StringGrid1.Cells[0,i];
      a.Bd  := StrToDate (StringGrid1.Cells[1,i]);
end;
Помогите, кто понимает.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2018, 10:44
Ответы с готовыми решениями:

Напечатать фамилии двух самых старших студентов
Из списка студентов группы, где приведены сведения: фамилия, инициалы, год, месяц и день рождения,...

Из списка студентов группы напечатать фамилии студентов-отличников
Из списка студентов группы, где приведены сведения: фамилия, оценки по трем предметам, напечатать...

Из списка студентов группы где приведён год рождения вывести студентов родившихся в заданный год
Из списка студентов группы где приведён год рождения, вывести студентов родившихся в заданный год

Из списка студентов группы где приведены фамилии и даты рождения
Из списка студентов группы где приведены фамилии и даты рождения вывести студентов родившихся под...

6
4455 / 3695 / 1239
Регистрация: 14.04.2014
Сообщений: 17,216
Записей в блоге: 17
10.05.2018, 10:51 2
что-то мне подсказывает, типы вообще ни при чем
строка 43 вообще не относится к циклу, несмотря на то, что 4 пробела перед ней))
чтобы относилась, она должна быть внутри begin end
Delphi
1
2
3
4
for i := .......
begin
   ...
end;
это раз

два - A - это МАССИВ записей
а поле БД есть у конкретной записи. например A[1] Или A[3] ...
поэтому A.bd не существует
0
1 / 1 / 0
Регистрация: 09.05.2018
Сообщений: 24
12.05.2018, 00:11  [ТС] 3
krapotkin, спасибо, недосмотрел) Несколько раз там форматировал, поэтому и снёс. Можно ещё такой вопрос: датовые типы сравниваются? Например, если у меня есть data1:= 01/10/2000 и data2:= 10/11/2000, то имеет ли место выражение if data1>data2 then... ?
0
пофигист широкого профиля
4191 / 2730 / 774
Регистрация: 15.07.2013
Сообщений: 15,867
12.05.2018, 03:08 4
Цитата Сообщение от Heckelberry Посмотреть сообщение
датовые типы сравниваются? Например, если у меня есть data1:= 01/10/2000 и data2:= 10/11/2000, то имеет ли место выражение if data1>data2 then... ?
"Датовые" типы разумеется сравниваются. Как и все прочие типы. Но "01/10/2000" и "10/11/2000" - это не "датовые" типы. Это строчные представления дат. Их тоже можно сравнивать, но только с умом и с сообразительностью.
0
1 / 1 / 0
Регистрация: 09.05.2018
Сообщений: 24
12.05.2018, 03:15  [ТС] 5
northener, а не можете тогда подсказать, как именно их нужно вводить и сравнивать? Если я ввожу так в строку и пытаюсь преобразовать в дату, Делфи говорит, что это не дата...
0
пофигист широкого профиля
4191 / 2730 / 774
Регистрация: 15.07.2013
Сообщений: 15,867
12.05.2018, 03:24 6
Heckelberry, не претендую на решение. Вашей задачи я не знаю, да и знать особо не хочу. Но строковые представления дат можно сравнивать на больше/меньше только тогда, когда сначала (слева) идёт год, затеи месяц и потом день.
0
4455 / 3695 / 1239
Регистрация: 14.04.2014
Сообщений: 17,216
Записей в блоге: 17
12.05.2018, 06:08 7
тип TDateTime это обычный Double
в целой части хранится количество дней с 01.01.1890, в дробной - время
соответственно и сравнивается это все как обычные Double
Delphi
1
2
3
d1,d2:TDateTime;
 
if d1>d2 then
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2018, 06:08

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

При выборе группы студентов из ComboBox показать список студентов в Stringgrid
Есть combobox, где содержатся группы студентов и stringgrid, где содержатся все их фамилии, даты...

Дописать в файл - список студентов группы новых студентов
Дописать в файл - список студентов группы новых студентов.

продемонстрировать механизм полиморфизма на примере составления списка студентов группы и преподавателей колледжа.
Средствами объектно-ориентированного программирования языка Delphi продемонстрировать механизм...

Вывести на экран фамилии студентов, у которых средний бал ниже 4
дана ведомость успеваемости студентов ( фио и 6 оценок).вывести на экран фамиилии студентов у...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.