• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Исправить Ошибки В Программе

  • Автор темы Irishka-brand
  • Дата начала
Статус
Закрыто для дальнейших ответов.
I

Irishka-brand

Помогите пожалуйста исправить программу!
вот задание:
Составить банк товаров,включающий в себя название,изгот+*вителя,количество в наличии,цену. Если товар есть на складе то название покупателя и требуемое количество...иначе фио поставщика и дата поставки. Вывод информации по след критериям: наличие товара, по поставщику продавцу, по товару.

В ходе работы программы вылезают ошибки и отбор по критериям не работает.
 

Вложения

  • Project5.zip
    230,2 КБ · Просмотры: 115
S

sinkopa

В ходе работы программы вылезают ошибки и отбор по критериям не работает.
(1) В обработчиках событий (кнопки со стрелочками) нужно проверять - а есть ли вообще записи в списке
Код:
 if (sklad = nil) then
begin
showmessage('Нет записей');
Exit;
end;
(2) В тех местах где Вы преобразуете строки в целые числа (кстати, а почему для цены... целые? что это за валюта у вас такая? :) )
вместо
Код:
cena := StrToInt(edit3.text);
нужно использовать
Код:
cena := StrToIntDef(edit3.text,0);
а лучше, перед началом созданием новой записи (!до строчки new(sklad);) использовать конструкцию вида
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
cenaTovara: Integer;
colvoTovara: Integer;
// и так далее... 
begin
if not TryStrToInt(edit3.text,cenaTovara) then
begin
ShowMessage('Введите правильную цену товара');
Exit;
end;

if not TryStrToInt(edit4.text,colvoTovara) then
begin
ShowMessage('Введите правильное количество товара');
Exit;
end;

// и так далее...
(3) Перед загрузкой из файла нового списка (кнопка "Открыть") видимо неплохо бы старый список очистить...
Например так
Код:
{ Процедура очистки и освобождения памяти занятой двухсвязным списком }
procedure ClearAll(var List: p_sklad);
var
item : p_sklad;
begin
if (List = nil) then
Exit;

item := List;

while (item^.next <> nil) do
begin
if (item^.prior <> nil) then
Dispose(item^.prior);

if (item^.next <> nil) then
item := item^.next;
end;

Dispose(item);
List := nil;
end;
(4) Поясните, как (по Вашему) должен работать этот самый отбор по критериям?
(5) Проявите пожалуйста немного уважения к людям готовым Вам помогать... приведите свой код в читаемый вид. Примеры правильного форматирования Вы можете посмотреть в исходниках Delphi или здесь на сайте.
 
I

Irishka-brand

(3) Перед загрузкой из файла нового списка (кнопка "Открыть") видимо неплохо бы старый список очистить...

(4) Поясните, как (по Вашему) должен работать этот самый отбор по критериям?
(5) Проявите пожалуйста немного уважения к людям готовым Вам помогать... приведите свой код в читаемый вид. Примеры правильного форматирования Вы можете посмотреть в исходниках Delphi или здесь на сайте.
Спасибо, большое! Я кое-что подправила (по поводу цены я просто подумала что не обязательно с копейками, поэтому сделала целым)

Правда после открытия файла и нажатия кнопки "Очистить все" кнопки "удалить" и "открыть" выдают ошибку.

А отбор по наличию должен читать уже готовый файл и отправлять в программу только товары,которые в наличии.
Два других отбора(по поставщику и товару) должны делать тоже самое но только считывать с Edit и если в файле есть такой товар или поставщик то отображать в программе.
 

Вложения

  • Project5.zip
    234,1 КБ · Просмотры: 116
S

sinkopa

Спасибо, большое! Я кое-что подправила (по поводу цены я просто подумала что не обязательно с копейками, поэтому сделала целым)
Правда после открытия файла и нажатия кнопки "Очистить все" кнопки "удалить" и "открыть" выдают ошибку.
А отбор по наличию должен читать уже готовый файл и отправлять в программу только товары,которые в наличии.
Два других отбора(по поставщику и товару) должны делать тоже самое но только считывать с Edit и если в файле есть такой товар или поставщик то отображать в программе.
Вот
Посмотреть вложение Project52.zip
Мои комментарии в коде... комментариях... :)
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!