Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
3 / 2 / 1
Регистрация: 12.10.2017
Сообщений: 214
1

Ошибка чтение с диска 100

13.08.2018, 19:56. Показов 2220. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Я делал поблоковое сравние и мне выдало ошибку 100 Disk read error, я знаю что это ошибка генерируется процедурой READ в типизированном файле в случае, если я пытаюсь осуществить считывание из полностью прочитанного файл, вот сам вопрос,
как ввести в файл четное число компонент, раз уж я парами читаю ?
Pascal
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
uses crt;
type
  tfile = file of char;
  mas = array ['a'..'z'] of integer;
  var f1: tfile;
    f2:text;
    a: mas;
    c:char;
    s:byte;
    f3,f4:file;
    
procedure readfile(var f1: tfile; var a: mas;var s:byte);
var c:char;
begin
s:=0;
assign(f1,'text.txt');
{$I-}
reset(f1);
{$I+}
if IOResult=0 then
 begin
  while not eof(f1) do
   begin
    read(f1, c);
    if c in ['a'..'z'] then inc(a[c]);
   end;
  close(f1);
 end
else
 begin
  writeln('File with text dont found');
  s:=1;
  exit;
 end;
end;
 
procedure maxsymb(var f1:text;a:mas);
var c:char;
    maxCnt: integer;
begin
assign(f1,'output.txt');
rewrite(f1);
maxcnt := 0;
for c:='a' to 'z' do
if a[c] > maxcnt then maxcnt:=a[c];
for c:='a' to 'z' do
if a[c]=maxcnt then
 begin
  writeln('Letter ', c, ' meets ', a[c], ' times');
  writeln(f1,'Letter ', c, ' meets ', a[c], ' times');
 end;
close(f1);
writeln('Date was record in file "output"');
end;
 
function ComparisonF (var f3, f4: file): boolean;
var
i, j: byte;
CF: boolean;
begin
Assign(f3,'text1.txt');
Assign(f4,'text2.txt');
reset(f3);
reset(f4);
CF:=false;
if FileSize (f3) <> FileSize (f4) then ComparisonF := false
else
  begin
  CF := true;
  while not (eof (f3)) and CF do
    begin
      BlockRead (f3, i, 512);
      BlockRead (f4, j, 512);
      CF := i = j;
    end;
    ComparisonF := CF;
  end;
  writeln(CF);
end;
 
 
begin
clrscr;
writeln('This program determines which letter is most often found in the file');
writeln('file.txt located on the C drive, press any key to continue');
readkey;
writeln;
readfile(f1,a,s);
if s=0 then maxsymb(f2,a);
writeln('Are the file the same size?');
ComparisonF(f3,f4);
writeln('The program has finished its work, press any key ...');
readkey;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.08.2018, 19:56
Ответы с готовыми решениями:

Ошибка 100: Ошибка чтения с диска
Здравствуйте. Подскажите, в чем причина? При запуске программы выдает ошибку чтения с диска. Сразу...

не могу разобраться вылезат ошибка 100 чтение с диска
Var f, g : file of Real; a : Real; Begin Assign(f,'G:\f.txt'); Assign(g,'G:\g.txt');...

Cтруктура диска повреждена чтение невозможно.как спасти ценную информацию с диска D?
нет доступа к D: структура диска повреждена чтение невозможно-вот такое сообщение получила когда...

Ошибка жесткого диска "Нет доступа к D, Файл или папка повреждены. Чтение невозможно"
после проверки компа на вирусы после перезагрузки жесткий не открывает один из дисков. пишет: &quot;Нет...

6
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
13.08.2018, 20:48 2
Лучший ответ Сообщение было отмечено SkyLark_71 как решение

Решение

Интересно где это ты парами читаешь?
Цитата Сообщение от SkyLark_71 Посмотреть сообщение
как ввести в файл четное число компонент
Pascal
1
2
3
4
5
for i:=1 to 20 do//или другое четное число
 begin
  c:=chr(97+random(26));// c:char;
  write(f,c);
 end;
1
3 / 2 / 1
Регистрация: 12.10.2017
Сообщений: 214
14.08.2018, 10:00  [ТС] 3
Puporev, извините, а в какую часть кода мне вставать ваш кусок ?)
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
14.08.2018, 10:03 4
В ту программу где создается типизированный файл text.txt, в этом коде нет создания файла.
0
5079 / 2651 / 2349
Регистрация: 10.12.2014
Сообщений: 10,028
14.08.2018, 11:02 5
Синтаксис:

BlockRead(file_, block_, size_, count_)

где
file_ — безтиповая файловая переменная — у вас это так
block_ — переменная или структура, в которую производится чтение — у вас это переменные типа Byte
size_ — размер читаемого блока в байтах — т.е. вы читаете 512 байт в однобайтовую переменную?
count_ — необязательный параметр, который возвращает число реально прочитанных байтов — у вас не задан. Значит вы 100% уверены, что чтение будет „правильным“… Иначе говоря, ваши файлы имеют одинаковую длину и размером кратны 512 !!!
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
14.08.2018, 11:07 6
А я и не посмотрел что он зачем-то приплел файлы без типа. Просто эта тема продолжение другой и там этого не было.
0
5079 / 2651 / 2349
Регистрация: 10.12.2014
Сообщений: 10,028
14.08.2018, 11:27 7
Лучший ответ Сообщение было отмечено SkyLark_71 как решение

Решение

Побайтовое сравнение будет как-то так:
Pascal
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
const
  maxSize = 100;
  f1Name = '1.txt';
  f2Name = '2.txt';
var
  f1, f2 : File;
  b1, b2 : array [1..maxSize] of Byte;
  count1, count2, i, cicle : Integer;
  NoMore : Boolean;
begin
  Assign(f1, f1Name); Reset(f1);
  Assign(f2, f2Name); Reset(f2);
  NoMore := False;
  cicle := 0;
  if FileSize(f1) <> FileSize(f2) then
    WriteLn('Размер?')
  else
    begin
      WriteLn('Размер одинаковый.');
      repeat
        Inc(cicle);
        BlockRead(f1, b1, maxSize, count1);
        BlockRead(f2, b2, maxSize, count2);
        WriteLn('Считано ', count1, ' и ', count2);
 
        for i := 1 to maxSize do
          if b1[i] <> b2[i] then
            begin
              WriteLn('Различие в ', i + pred(cicle) * maxSize,' : ', b1[i], ' - ', b2[i]);
              NoMore := True;
              Break;
            end;
 
      until (count1 = 0) or NoMore;
 
      if Not NoMore then
        WriteLn('Идентичны!');
    end;
  Close(f1); Close(f2);
end.
1
14.08.2018, 11:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.08.2018, 11:27
Помогаю со студенческими работами здесь

Ошибка: "Не удаётся выполнить чтение из файла или с диска" (WD External HDD 1021 USB Device)
Вчера попытался скопировать несколько файлов на WD External HDD 1021 USB Device (файловая система...

Загруженность диска 100%
Всем привет такая проблема началась пару дней назад При входе в танки ноут просто зависает на...

Загрузка диска 100%
Добрый день столкнулся с такой проблемой, на ноутбуках HP. После переустановки windiws жесткий диск...

Загрузка цп 20-50% и диска 90-100%
Добрый день! Буквально недавно началась такая проблема: загрузка цп в состоянии покоя может быть...


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

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