• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите с написанием кода Delphi 7

  • Автор темы Автор темы Feofenio
  • Дата начала Дата начала

Feofenio

Ученик
Регистрация
3 Май 2023
Сообщения
2
Реакции
0
Баллы
0
Помогите с написанием кода Delphi 7

ТЗ:
Дан файл KAT, содержащий сведения о книгах:
1) фамилия автора
2) название
3) год издания
4) цена книги
а) распечатать записи с заданным годом издания, упорядоченные по алфавиту, а если таковых нет, то выдать соответствующее сообщение;
б) отсортировать записи в порядке возрастания цены книги.

Всем привет, я мало понимаю в дельфи. мне нужна помощь в написании всего кода, если можно то с пометками, что да как чтобы чуть шире разбираться в этом богоподобном языке древнегреческих мамонтов.
 
Я тоже мало понимаю в языке Delphi. Но есть возможность пригрузить на это дело нейросеть, например Монику. По началу она выдала вопросы:

Конечно, я могу помочь в написании кода на Delphi. Для начала, мне нужно понять формат файла KAT. Он должен быть в текстовом формате, разделенный определенным символом, например запятой или точкой с запятой. Кроме того, мне нужно уточнить, какие именно данные находятся в файле - это только те четыре поля, что вы указали или есть еще какие-то?
Также, мне нужно знать, в каком формате вы хотите получить результаты - в текстовом файле или на экране?
Я её предложил написать в текстовом файле.
И вот шо она наваяла:

Задание состоит в написании программы на языке Delphi для работы с файлом KAT, содержащим информацию о книгах. Программа должна уметь выводить записи с заданным годом издания, сортировать их по алфавиту и выводить сообщение, если записей с таким годом издания нет. Также программа должна уметь сортировать записи по возрастанию цены книги.

Предположим, что формат файла KAT выглядит так:

Автор1, Название1, 2001, 100
Автор2, Название2, 2003, 150
Автор3, Название3, 2002, 120

Для решения задачи
а) нам нужно открыть файл KAT, прочитать его содержимое и вывести записи с заданным годом издания в алфавитном порядке. Если записей с заданным годом нет, нужно выдать соответствующее сообщение. Вот код, который решает эту задачу:

procedure FindBooksByYear(year: Integer);
var
input, output: TextFile;
line: string;
books: TStringList;
i: Integer;
begin
AssignFile(input, 'KAT.txt');
Reset(input);
books := TStringList.Create;
try
// Читаем файл и сохраняем записи в список
while not Eof(input) do
begin
ReadLn(input, line);
books.Add(line);
end;

// Сортируем список по алфавиту
books.Sort;

// Ищем записи с заданным годом и записываем их в выходной файл
AssignFile(output, 'result.txt');
Rewrite(output);
for i := 0 to books.Count - 1 do
begin
if Pos(IntToStr(year), books) > 0 then
WriteLn(output, books);
end;
if FileSize(output) = 0 then
WriteLn(output, 'Записей с заданным годом не найдено.');

finally
CloseFile(input);
CloseFile(output);
books.Free;
end;
end;
Для решения задачи б) нам нужно открыть файл KAT, прочитать его содержимое и отсортировать записи в порядке возрастания цены книги. Затем мы записываем отсортированные записи в выходной файл. Вот код, который решает эту задачу:

Копировать
procedure SortBooksByPrice;
var
input, output: TextFile;
line: string;
books: TStringList;
begin
AssignFile(input, 'KAT.txt');
Reset(input);
books := TStringList.Create;
try
// Читаем файл и сохраняем записи в список
while not Eof(input) do
begin
ReadLn(input, line);
books.Add(line);
end;

// Сортируем список по цене книги
books.CustomSort(@CompareBooksByPrice);

// Записываем отсортированные записи в выходной файл
AssignFile(output, 'result.txt');
Rewrite(output);
for line in books do
WriteLn(output, line);

finally
CloseFile(input);
CloseFile(output);
books.Free;
end;
end;

function CompareBooksByPrice(list: TStringList; index1, index2: Integer): Integer;
var
price1, price2: Currency;
begin
price1 := StrToCurr(ExtractWord(4, list[index1], [',']));
price2 := StrToCurr(ExtractWord(4, list[index2], [',']));

if price1 < price2 then
Result := -1
else if price1 > price2 then
Result := 1
else
Result := 0;
end;
Обратить внимание, что мы используется функция ExtractWord из модуля StrUtils, чтобы извлечь цену книги из каждой записи. Также определяется функция CompareBooksByPrice, которая используется для сортировки списка книг по цене.
 
С отступами только здесь не выходит, выровнялось всё по левому полю.
 
Если надо, можно в блокноте выложить.
 

Вложения

Спасибо огромное вам Виталий, я не знаю что бы я без вас делал. Огромное при огромное спасибо!!!
 
Назад
Сверху