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

Тема в разделе "Pascal and Delphi", создана пользователем Irishka-brand, 22 дек 2012.

Статус темы:
Закрыта.
  1. Irishka-brand

    Irishka-brand Гость

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

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

    Вложения:

    • Project5.zip
      Размер файла:
      230,2 КБ
      Просмотров:
      3
  2. sinkopa

    sinkopa Well-Known Member

    Регистрация:
    17 июн 2009
    Сообщения:
    344
    Симпатии:
    9
    (1) В обработчиках событий (кнопки со стрелочками) нужно проверять - а есть ли вообще записи в списке
    Код (Delphi):
     if (sklad = nil) then
    begin
    showmessage('Нет записей');
    Exit;
    end;
    (2) В тех местах где Вы преобразуете строки в целые числа (кстати, а почему для цены... целые? что это за валюта у вас такая? :) )
    вместо
    Код (Delphi):
    cena := StrToInt(edit3.text);
    нужно использовать
    Код (Delphi):
    cena := StrToIntDef(edit3.text,0);
    а лучше, перед началом созданием новой записи (!до строчки new(sklad);) использовать конструкцию вида
    Код (Delphi):
    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) Перед загрузкой из файла нового списка (кнопка "Открыть") видимо неплохо бы старый список очистить...
    Например так
    Код (Delphi):
    { Процедура очистки и освобождения памяти занятой двухсвязным списком }
    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 или здесь на сайте.
     
  3. Irishka-brand

    Irishka-brand Гость

    Спасибо, большое! Я кое-что подправила (по поводу цены я просто подумала что не обязательно с копейками, поэтому сделала целым)

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

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

    Вложения:

    • Project5.zip
      Размер файла:
      234,1 КБ
      Просмотров:
      3
  4. sinkopa

    sinkopa Well-Known Member

    Регистрация:
    17 июн 2009
    Сообщения:
    344
    Симпатии:
    9
    Вот
    Посмотреть вложение Project52.zip
    Мои комментарии в коде... комментариях... :)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей