Объединения

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

Romeo писал(а):P.S. А почему ты все вопросы пишешь без знака вопроса в конце? Клавиша "?" поломалась? :)
Наверное это новое веяние в школах, теперь знаки вопроса не нужны!
[syntax=Delphi] [/syntax]
Аватара пользователя
Decoder
Сообщения: 308
Зарегистрирован: 19 фев 2008, 23:11
Откуда: Moscow

Первая очевидная ошибка: не выделен массив памяти для ввода строки из консоли.
Поскольку в объединении UNIDATA используется в качестве текста лишь указатель на массив символов, то для каждой новой записи нужно будет динамически выделять память или заранее статически объявить массив строк.
Примерно так...

Код: Выделить всё

char text[10][80] = {0};
Далее при инициализации полей каждой записи (в структуре DATA_RECORD) нужно будет полю name присваивать адрес соответствующей строки символов.

Код: Выделить всё

data[i].name.text = text[i];
Есть ещё много других неявных глюков, но о них потом поговорим, когда они проявятся в процессе работы программы.
Поумнеть несложно, куда труднее от дури избавиться.
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Сравнивать даты можно путём преобразования их в целые числа.
Самый простой способ - это использовать формулу N = Year*10000 + Month*100 + Day.
Таким образом дата 06.04.2016 будет равна числу 20160406.
Можно так же использовать специальные библиотечные функции для работы с датой и временем, которые преобразуют заданную дату в число дней, прошедших с определённого момента времени.
Дальше применяется обычное сравнение чисел.
Kazanove
Сообщения: 41
Зарегистрирован: 24 фев 2016, 14:55

всем спасибо, все заработало
PS а какие неявные глюки :)
Ответить