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

Найдите ошибку

28.01.2018, 21:41. Показов 1081. Ответов 51
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Составить, отладить и представить преподавателю для проверки программу на языке Object Pascal , решающую Ваш вариант задания. Программа должна вводить исходные данные, используя компоненты TEdit или TMemo, TStringGrid и т п, или получать их при помощи генератора случайных чисел. Результаты вычислений должны, как правило, выводиться при помощи компонент TLabel, TEdit TMemo, TStringGrid и т п.
Программа должна обязательно использовать тип данных ФАЙЛ ( File ).
Программа должна иметь главное меню, содержащее пункт «Файл» . В этом пункте должны быть субменю: Открыть, Сохранить как, Удалить.
Кроме того, на форме должны быть установлены (невидимые) компоненты: OpenDialog и SaveDialog, облегчающие открытие и сохранение файлов.

type fs = file of string[10]; Функция Count1(var f: fs) :Integer Вашей программы определяет число строк файла типа fs, которые начинаются с цифры.

Добавлено через 16 секунд
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls;
 
type
  TForm1 = class(TForm)
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    MainMenu1: TMainMenu;
    V1: TMenuItem;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    Memo1: TMemo;
    N5: TMenuItem;
    N6: TMenuItem;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
type fs = file of string[10];
 
var
  Form1: TForm1;
  dir, fName: string;
  f1: fs;
 
implementation
 
{$R *.dfm}
 
function Count1(var f:fs):integer;
 var
 k, i: integer;
 s: string;
begin
    reset(f);
    k:=0;
    while (not eof(f)) do
    begin
//    read(f,s);  Выдает ошибку несоответствия типов ShortString и String
    For i:=0 to 9 do
        if s[1] = IntToStr(i) then k:=k+1; //нужно условие количество строк файла fs, начинающихся с цифры
    end;
    closeFile(f);
    count1:=k;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
dir:=ExtractFileDir(paramStr(0))+'\files';
OpenDialog1.InitialDir:=dir;
SaveDialog1.InitialDir:=dir;
end;
 
procedure TForm1.N1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
fName:=OpenDialog1.FileName;  //Сохранение пути и имени открывающегося файла
end;
 
procedure TForm1.N2Click(Sender: TObject);
begin
if Memo1.Lines.Count=0 then
begin
  ShowMessage('Нечего сохранять');
  exit
end;
if SaveDialog1.Execute then
begin
  Memo1.Lines.SaveToFile(saveDialog1.FileName);
  fName:=saveDialog1.FileName;  //Сохранение пути и имени сохраняемого файла
end;
end;
 
procedure TForm1.N6Click(Sender: TObject);
begin
Memo1.Clear;
end;
 
procedure TForm1.N3Click(Sender: TObject);
begin
if OpenDialog1.Execute then
if MessageDlg('Вы действительно хотите удалить файл'+OpenDialog1.filename+'?',
    mtConfirmation, [mbYes, mbNo], 0) = mrYes then
    DeleteFile(OpenDialog1.filename)
end;
 
procedure TForm1.N5Click(Sender: TObject);
begin
AssignFile(f1,FName); // связывает файловую переменную и файл, имя которого указано в FName
Edit1.Text:=IntTostr(Count1(f1));
end;
 
end.
Добавлено через 2 минуты
и какой программный код нужен чтобы сделать определить число строк файла типа fs, которые начинаются с цифры.
я просто в делфи работал с файлами как открыть закрыть
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.01.2018, 21:41
Ответы с готовыми решениями:

найдите ошибку
найдите ошибку пожалуйста unit Unit1; interface uses Windows, Messages, SysUtils,...

найдите ошибку
Пусть требуется рассчитать зарплату 3, премию П и итоговую сумму И двум сотрудникам ...

Найдите ошибку
procedure TForm1.ButtonClose4Click(Sender: TObject); begin WebBrowser1.GoHome; end; procedure...

Найдите ошибку
Задали такую задачку до воскресенья, чтобы получить зачет по информатике. "Создать массив 20-30...

51
Заблокирован
29.01.2018, 01:07 21
Author24 — интернет-сервис помощи студентам
Ещё ошибка
надо ReadLn
вы же текст читаете
строку
0
0 / 0 / 0
Регистрация: 23.01.2018
Сообщений: 36
29.01.2018, 01:14  [ТС] 22
Цитата Сообщение от Lirrk Посмотреть сообщение
Ещё ошибка
надо ReadLn
вы же текст читаете
строку
опять начинается конфликт
readln(f,s); несоответствия типов ShortString и String
0
Заблокирован
29.01.2018, 01:17 23
Наворотили...
У вас во-первых типизированный файл
а вы его объявили как фиг знает что

Добавлено через 48 секунд
Щас попробую переписать если вспомню

Добавлено через 1 минуту
О завёлся вроде
0
0 / 0 / 0
Регистрация: 23.01.2018
Сообщений: 36
29.01.2018, 01:18  [ТС] 24
Цитата Сообщение от Lirrk Посмотреть сообщение
Наворотили...
У вас во-первых типизированный файл
а вы его объявили как фиг знает что
я уже в край запутался. да и делал как писали вы
0
Заблокирован
29.01.2018, 01:22 25
вот так должно быть
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
//type fs = file of string[10];
 
var
  Form1: TForm1;
  dir, fName: string;
  f1:TextFile;
 
implementation
 
{$R *.dfm}
 
function Count1(var f:TextFile):integer;
 var
 k, i: integer;
 s: String;
begin
    reset(f);
    k:=0;
     while (not eof(f)) do
      begin
       ReadLn(f,S);
       if (ord(S[1]) >= 30) and (ord(S[1]) <= 39) then k:=k+1;
    end;
 
    closeFile(f);
    count1:=k;
end;
Добавлено через 1 минуту
нет я этого не писал
надо задать файл как текстовый

Добавлено через 37 секунд
а куда выводить подсчёт?

Добавлено через 36 секунд
он у вас в count1
а куда выводится эта бяка?
0
0 / 0 / 0
Регистрация: 23.01.2018
Сообщений: 36
29.01.2018, 01:25  [ТС] 26
Цитата Сообщение от Lirrk Посмотреть сообщение
а куда выводится эта бяка?
выводится он дожен в компанент Edit1
0
Заблокирован
29.01.2018, 01:25 27
И опять же
откуда у вас файлы?
они неправильно сделаны
должны быть по строкам
вероятно вы ошиблись
строки записывают writeln
0
0 / 0 / 0
Регистрация: 23.01.2018
Сообщений: 36
29.01.2018, 01:32  [ТС] 28
Цитата Сообщение от Lirrk Посмотреть сообщение
И опять же
откуда у вас файлы?
они неправильно сделаны
должны быть по строкам
вероятно вы ошиблись
строки записывают writeln

файлы сам сохраняю удаляю и тд. ввод осуществляет из memo1

Добавлено через 2 минуты
вот все операции с файлами + ввывод в компонент Edit1


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
procedure TForm1.FormCreate(Sender: TObject);
begin
dir:=ExtractFileDir(paramStr(0))+'\files';
OpenDialog1.InitialDir:=dir;
SaveDialog1.InitialDir:=dir;
end;
 
procedure TForm1.N1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
fName:=OpenDialog1.FileName;  //Сохранение пути и имени открывающегося файла
end;
 
procedure TForm1.N2Click(Sender: TObject);
begin
if Memo1.Lines.Count=0 then
begin
  ShowMessage('Нечего сохранять');
  exit
end;
if SaveDialog1.Execute then
begin
  Memo1.Lines.SaveToFile(saveDialog1.FileName);
  fName:=saveDialog1.FileName;  //Сохранение пути и имени сохраняемого файла
end;
end;
 
procedure TForm1.N6Click(Sender: TObject);
begin
Memo1.Clear;
end;
 
procedure TForm1.N3Click(Sender: TObject);
begin
if OpenDialog1.Execute then
if MessageDlg('Вы действительно хотите удалить файл'+OpenDialog1.filename+'?',
    mtConfirmation, [mbYes, mbNo], 0) = mrYes then
    DeleteFile(OpenDialog1.filename)
end;
 
procedure TForm1.N5Click(Sender: TObject);
begin
AssignFile(f1,FName); // связывает файловую переменную и файл, имя которого указано в FName
Edit1.Text:=IntTostr(Count1(f1));
end;
0
Заблокирован
29.01.2018, 01:47 29
Ни хрена не понимаю
видимо фокус с массивом в консоли не проходит

Добавлено через 1 минуту
далеко не убегайте щас добьём
всё открывается но вот чот ни хрена не вырезает символ
0
0 / 0 / 0
Регистрация: 23.01.2018
Сообщений: 36
29.01.2018, 01:52  [ТС] 30
Цитата Сообщение от Lirrk Посмотреть сообщение
Ни хрена не понимаю
видимо фокус с массивом в консоли не проходит
Добавлено через 1 минуту
далеко не убегайте щас добьём
всё открывается но вот чот ни хрена не вырезает символ


куда мне бежать?)))) у меня зачет через 12 часов, так что я до последнего
0
northener
29.01.2018, 02:10
  #31

Не по теме:

Цитата Сообщение от Shot91 Посмотреть сообщение
куда мне бежать?)))) у меня зачет через 12 часов, так что я до последнего
"ТУ-104 - самый лучший самолёт".
Не волнуйтесь. Зачёт вы не сдадите.

0
Заблокирован
29.01.2018, 02:32 32
Во блин... я точно сплю...
на такой мелочи запороться....

Delphi
1
if (ord(S[1]) >= $30) and (ord(S[1]) <= $39) then k:=k+1;
всё... читает вроде работает

Добавлено через 1 минуту
лучше я вам проект вышлю с исправленными файлами
а то у вас они написаны тож неправильно
числа по строкам должны быть
1
0 / 0 / 0
Регистрация: 23.01.2018
Сообщений: 36
29.01.2018, 02:33  [ТС] 33
Цитата Сообщение от Lirrk Посмотреть сообщение
лучше я вам проект вышлю с исправленными файлами
а то у вас они написаны тож неправильно
числа по строкам должны быть
спасибо я подожду тогда.
0
Заблокирован
29.01.2018, 02:38 34
я просто лоханулся на символе $
чтоб вы знали $30 это число в 16-ричной системе коды символов записываются в ней. Хотя можно и в 10-ой...

Добавлено через 3 минуты
у вас там много недочётов
не объявлена функция
type fs = file of string[10];
Эта строка не нужна


файл нужно объявить текстовым - f1:TextFile;

В общем до фига всего вроде пофиксил
не знаю что ищё но файл загружает и подсчитывает строки с йифрами в начале строки
в строки добавил буквы
ну и строки с буквами в начале
в обще всё работает как надо вам. но другие функции я не проверял
0
0 / 0 / 0
Регистрация: 23.01.2018
Сообщений: 36
29.01.2018, 02:41  [ТС] 35
я как понимаю вы сразу скомпилировали сразу?
0
Заблокирован
29.01.2018, 02:43 36
так, ещё добавил
Delphi
1
if S = '' then continue;
0
0 / 0 / 0
Регистрация: 23.01.2018
Сообщений: 36
29.01.2018, 02:48  [ТС] 37
Цитата Сообщение от Lirrk Посмотреть сообщение
if S = '' then continue;
это как понимаю функция перехода на следующую итерацию цикла. Но для чего она нужна в программе?
0
Заблокирован
29.01.2018, 02:49 38
вота
Вложения
Тип файла: rar Задача 6.rar (179.0 Кб, 3 просмотров)
0
Заблокирован
29.01.2018, 02:51 39
видите ли в чём дело очень часто строка может оказаться пустой как во втором файле для примера и тогда вылетит ошибка, поскольку строки нет а её пытаются прочитать. Это защита от пустой строки. если она есть то попросту игнарируется
0
0 / 0 / 0
Регистрация: 23.01.2018
Сообщений: 36
29.01.2018, 02:51  [ТС] 40
прошу по поводу функции IF s:=''Then continue; объясни что-то не въезжаю
0
29.01.2018, 02:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2018, 02:51
Помогаю со студенческими работами здесь

найдите ошибку
Суть,сделал массив,типа список,содержит 3 поля,имя,фамилию,возраст,хочу в edit4,для начала,найти...

Найдите ошибку
программа в DELPHI Задание: ввести число. Определить, является ли оно полиндромом....

Найдите ошибку?!!
Нужно найти отношение количества положительных чисел к количеству отрицательных! constructor...

найдите ошибку
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics,...


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

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