Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 31.05.2011
Сообщений: 6
1

Курсовая работа-ошибки!

03.06.2011, 08:19. Показов 788. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!

Суть проблемы такая. Я пишу курсовую работу, программа работает, но криво. Вся измучилась уже, исправишь одно другое перестает работать и так по кругу замкнутый круг какой -то.
Так вот посмотрите пожалуйста мою курсовую, и если можно поясните что я делаю не так.
Буду очень благодарна, потому что помощи больше не от кого ждать, препод ничего сказать не может, потому что знает только теорию.
Вложения
Тип файла: rar Копия МОЯ КУРСОВАЯ.rar (2.87 Мб, 28 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.06.2011, 08:19
Ответы с готовыми решениями:

Курсовая работа
Здраствуйте все! Очень прошу помочь. Дело вот в чем, нужно написать курсовую работу(решить 40...

Курсовая работа
Здравствуйте! Скажите, пожалуйста, не могли бы Вы помочь мне сделать в моей курсовой работе...

Курсовая работа
Какую программу можно составить для курсовой работы на тему: Введение в язык программирования.

курсовая работа
люди!!! пишу курсовую работу , ничего не получается! тема: "кулинария"! есть у кого нить чхоть...

6
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
03.06.2011, 08:50 2
Вот это на первой форме
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
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.StringGrid1.Cells[0,0]:='Артикул';
Form1.StringGrid1.Cells[1,0]:='Наименование';
Form1.StringGrid1.Cells[2,0]:='Стоимость,ед.';
Form1.StringGrid1.Cells[3,0]:='Продано,шт.';
Form1.StringGrid1.Cells[4,0]:='Продано на сумму, руб.';
Form1.StringGrid1.Cells[5,0]:='На складе остаток,шт.';
Form1.StringGrid1.Cells[6,0]:='На складе остаток,руб.';
Form1.StringGrid1.ColWidths[0]:=60;
Form1.StringGrid1.ColWidths[1]:=150;
Form1.StringGrid1.ColWidths[2]:=100;
Form1.StringGrid1.ColWidths[3]:=70;
Form1.StringGrid1.ColWidths[4]:=130;
Form1.StringGrid1.ColWidths[5]:=130;
Form1.StringGrid1.ColWidths[6]:=130;
 AssignFile(FV,'bd.txt');
Reset(FV);
with RV do begin
repeat Read(FV,RV);
I:=I+1; {переменная для подсчета количества записей}
Form1.StringGrid1.RowCount:=I+1;{по количеству записей
увеличиваем количество строк в таблице}
Form1.StringGrid1.Cells[0,I]:=IntToStr(artikyl);{заполняем ячейки в строке}
Form1.StringGrid1.Cells[1,I]:=name_tovara;
Form1.StringGrid1.Cells[2,I]:=IntToStr(ctoimoct_ed);
Form1.StringGrid1.Cells[3,I]:=IntToStr(prodano_sht);
Form1.StringGrid1.Cells[4,I]:=IntToStr(prodano_na_cymmy_ryb);
Form1.StringGrid1.Cells[5,I]:=IntToStr(na_cklade_octatok_sht);
Form1.StringGrid1.Cells[6,I]:=IntToStr(na_cklade_octatok_ryb);
until EOF(FV);
CloseFile(FV);
 end;
 
end;
ошибка возникает вот здесь
Delphi
1
repeat Read(FV,RV);
получается у тебя это потому что ты заставляешь прочитать прогу пустой файл
поэтому лучше использовать не
Delphi
1
repeat Read(FV,RV);
а лучше
Delphi
1
while not EOF(FV) do Read(FV,RV);
этот цикл сразу не будет читать пустой файл и получается измененная процедура
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
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.StringGrid1.Cells[0,0]:='Артикул';
Form1.StringGrid1.Cells[1,0]:='Наименование';
Form1.StringGrid1.Cells[2,0]:='Стоимость,ед.';
Form1.StringGrid1.Cells[3,0]:='Продано,шт.';
Form1.StringGrid1.Cells[4,0]:='Продано на сумму, руб.';
Form1.StringGrid1.Cells[5,0]:='На складе остаток,шт.';
Form1.StringGrid1.Cells[6,0]:='На складе остаток,руб.';
Form1.StringGrid1.ColWidths[0]:=60;
Form1.StringGrid1.ColWidths[1]:=150;
Form1.StringGrid1.ColWidths[2]:=100;
Form1.StringGrid1.ColWidths[3]:=70;
Form1.StringGrid1.ColWidths[4]:=130;
Form1.StringGrid1.ColWidths[5]:=130;
Form1.StringGrid1.ColWidths[6]:=130;
 AssignFile(FV,'bd.txt');
 Reset(FV);
 
with RV do begin
while not EOF(FV) do Read(FV,RV);
I:=I+1; {переменная для подсчета количества записей}
Form1.StringGrid1.RowCount:=I+1;{по количеству записей
увеличиваем количество строк в таблице}
Form1.StringGrid1.Cells[0,I]:=IntToStr(artikyl);{заполняем ячейки в строке}
Form1.StringGrid1.Cells[1,I]:=name_tovara;
Form1.StringGrid1.Cells[2,I]:=IntToStr(ctoimoct_ed);
Form1.StringGrid1.Cells[3,I]:=IntToStr(prodano_sht);
Form1.StringGrid1.Cells[4,I]:=IntToStr(prodano_na_cymmy_ryb);
Form1.StringGrid1.Cells[5,I]:=IntToStr(na_cklade_octatok_sht);
Form1.StringGrid1.Cells[6,I]:=IntToStr(na_cklade_octatok_ryb);
 end;
CloseFile(FV);
 
end;
и исправленный исходник получай назад
Вложения
Тип файла: rar Копия МОЯ КУРСОВАЯ_исправлено.rar (2.98 Мб, 11 просмотров)
0
0 / 0 / 0
Регистрация: 31.05.2011
Сообщений: 6
03.06.2011, 09:11  [ТС] 3
Возникает ещё проблема, при добавлении записи в таблицу! Получается что программа копирует пред идущую строчку и записывает её вместе с новой. А также при удаление вместо того чтобы удалить строку программа копирует эту строчку в заголовок.
0
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
03.06.2011, 11:06 4
Вот получи
Вложения
Тип файла: rar Копия МОЯ КУРСОВАЯ_исправлено.rar (2.98 Мб, 14 просмотров)
0
0 / 0 / 0
Регистрация: 31.05.2011
Сообщений: 6
03.06.2011, 12:42  [ТС] 5
Спасибо, теперь работает. Только вот хочется всё таки разобраться, поэтому если не трудно можно с комментариями, что вы конкретно поменяли.
И возникла ещё одна проблема с редактированием, ошибку ни какую не выдает и не редактирует, т.е. не сохраняет изменение.
0
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
03.06.2011, 14:15 6
Начнем с модуля 1
на кнопке 3 были такие действия
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
45
46
47
48
49
procedure TForm1.Button3Click(Sender: TObject);
begin
AssignFile (FV,'bd.txt');
reset(FV);
KL:= FileSize(FV);  { - количество записей файла }
REPEAT READ(FV,RV);{ - начало поиска записи для удаления}
IF StringGrid1.Cells[1, StringGrid1.Row]=RV.name_tovara then begin {- найдена запись для удаления }
IF EOF(FV)THEN SEEK (FV,KL-1){- удаляем последнюю запись}
    ELSE { Сдвиг записей в сторону начала файла :}
    FOR X:=FilePos(FV) TO KL - 1  DO   BEGIN
    SEEK(FV,X);  READ(FV,RV); { - читать 1-запись}
SEEK(FV,X-1); WRITE(FV,RV); {- писать ее на место (I-1)-ой}
END;  { - конец сдвига }
Truncate(FV);   { - усечение файла и выход } { - оператора IF }
END;
UNTIL  EOF( FV );   { - конец поиска записи в файле F }
reset(FV);
Form1.StringGrid1.Cells[0,0]:='Артикул';
Form1.StringGrid1.Cells[1,0]:='Наименование';
Form1.StringGrid1.Cells[2,0]:='Стоимость,ед.';
Form1.StringGrid1.Cells[3,0]:='Продано,шт.';
Form1.StringGrid1.Cells[4,0]:='Продано на сумму, руб.';
Form1.StringGrid1.Cells[5,0]:='На складе остаток,шт.';
Form1.StringGrid1.Cells[6,0]:='На складе остаток,руб.';
Form1.StringGrid1.ColWidths[0]:=60;
Form1.StringGrid1.ColWidths[1]:=150;
Form1.StringGrid1.ColWidths[2]:=100;
Form1.StringGrid1.ColWidths[3]:=70;
Form1.StringGrid1.ColWidths[4]:=130;
Form1.StringGrid1.ColWidths[5]:=130;
Form1.StringGrid1.ColWidths[6]:=130;
with RV do begin
I:=0;
while not EOF(FV) do begin
Read(FV,RV);
 
Form1.StringGrid1.Cells[0,I]:=IntToStr(artikyl);
Form1.StringGrid1.Cells[1,I]:=name_tovara;
Form1.StringGrid1.Cells[2,I]:=IntToStr(ctoimoct_ed);
Form1.StringGrid1.Cells[3,I]:=IntToStr(prodano_sht);
Form1.StringGrid1.Cells[4,I]:=IntToStr(prodano_na_cymmy_ryb);
Form1.StringGrid1.Cells[5,I]:=IntToStr(na_cklade_octatok_sht);
Form1.StringGrid1.Cells[6,I]:=IntToStr(na_cklade_octatok_ryb);
 
 
end;
end;
 
end;
после изменения
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm1.Button3Click(Sender: TObject);
begin
AssignFile (FV,'bd.txt');
reset(FV);
KL:= FileSize(FV);  { - количество записей файла }
REPEAT READ(FV,RV);{ - начало поиска записи для удаления}
IF StringGrid1.Cells[1, StringGrid1.Row]=RV.name_tovara then begin {- найдена запись для удаления }
IF EOF(FV)THEN SEEK (FV,KL-1){- удаляем последнюю запись}
    ELSE { Сдвиг записей в сторону начала файла :}
    FOR X:=FilePos(FV) TO KL-1  DO   BEGIN
    SEEK(FV,X);  READ(FV,RV); { - читать 1-запись}
SEEK(FV,X-1); WRITE(FV,RV); {- писать ее на место (I-1)-ой}
END;  { - конец сдвига }
Truncate(FV);   { - усечение файла и выход } { - оператора IF }
END;
UNTIL  EOF( FV );   { - конец поиска записи в файле F }
Form1.FormCreate(Form1);
 
end;
вместо кода
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
reset(FV);
Form1.StringGrid1.Cells[0,0]:='Артикул';
Form1.StringGrid1.Cells[1,0]:='Наименование';
Form1.StringGrid1.Cells[2,0]:='Стоимость,ед.';
Form1.StringGrid1.Cells[3,0]:='Продано,шт.';
Form1.StringGrid1.Cells[4,0]:='Продано на сумму, руб.';
Form1.StringGrid1.Cells[5,0]:='На складе остаток,шт.';
Form1.StringGrid1.Cells[6,0]:='На складе остаток,руб.';
Form1.StringGrid1.ColWidths[0]:=60;
Form1.StringGrid1.ColWidths[1]:=150;
Form1.StringGrid1.ColWidths[2]:=100;
Form1.StringGrid1.ColWidths[3]:=70;
Form1.StringGrid1.ColWidths[4]:=130;
Form1.StringGrid1.ColWidths[5]:=130;
Form1.StringGrid1.ColWidths[6]:=130;
with RV do begin
I:=0;
while not EOF(FV) do begin
Read(FV,RV);
 
Form1.StringGrid1.Cells[0,I]:=IntToStr(artikyl);
Form1.StringGrid1.Cells[1,I]:=name_tovara;
Form1.StringGrid1.Cells[2,I]:=IntToStr(ctoimoct_ed);
Form1.StringGrid1.Cells[3,I]:=IntToStr(prodano_sht);
Form1.StringGrid1.Cells[4,I]:=IntToStr(prodano_na_cymmy_ryb);
Form1.StringGrid1.Cells[5,I]:=IntToStr(na_cklade_octatok_sht);
Form1.StringGrid1.Cells[6,I]:=IntToStr(na_cklade_octatok_ryb);
я вставил
Delphi
1
Form1.FormCreate(Form1);
потому что зачем плодить процедуры и запутывать себя увеличивая код если такая процедура уже существует

во втором юните
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
procedure TForm2.BitBtn1Click(Sender: TObject);
 begin
AssignFile(FV,'bd.txt');
Reset(FV);
seek(fv, filesize(fv));
with RV do begin
J:=FilePos(FV);
 artikyl:=StrToInt64(Edit1.Text);
 name_tovara:=ComboBox1.Text;
 ctoimoct_ed:=StrToInt64(Edit3.Text);
 prodano_sht:=StrToInt64(Edit4.Text);
 prodano_na_cymmy_ryb:=StrToInt64(Edit5.Text);
 na_cklade_octatok_sht:=StrToInt64(Edit6.Text);
 na_cklade_octatok_ryb:=StrToInt64(Edit7.Text);
write(FV,RV);
Closefile(FV);
end;
Form2.Close;{Форма 2 закрывается}
Form1.Show ;{Открывается форма 1}
Form1.FormCreate(Form1);// обновляется грид
end;
сделал то же самое
1
0 / 0 / 0
Регистрация: 31.05.2011
Сообщений: 6
03.06.2011, 15:26  [ТС] 7
Спасибо большое я теперь поняла!
Цитата Сообщение от AnaMor Посмотреть сообщение
И возникла ещё одна проблема с редактированием, ошибку ни какую не выдает и не редактирует, т.е. не сохраняет изменение.
Изменения появляются только при повторном запуске программы!
0
03.06.2011, 15:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.06.2011, 15:26
Помогаю со студенческими работами здесь

Курсовая работа
Ребята,есть у кого готова курсовая на тему: Анализ криптографического алгоритма маршрутной...

Курсовая работа
Всем привет форумчане))) Помогите мне решить вопрос. Не могу определиться темой курсовой работы.

Курсовая работа
Доброго времени суток! Учусь на программиста на 4 курсе. Пора писать курсач. Есть человек...

Курсовая работа
мне необходимо написать курсовую работу на тему "визуализация алгоритма А* с помощью openGL"...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru