IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Ошибка с переменными(Error 26:Type mismatch), запутался в переменных
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Andrew

Репутация: -  0  +


 Program Kyrs;
uses
crt, dos;
var
sC, sH, sS : byte;
eC, eH, eS : byte;
c, h, s : byte;
mC, mH, mS : byte;
bH, bC, bS : byte;
flag : integer;
v, bad, cnt, i : longint;
last_s : byte;
check, error : integer;

hr, m, sec, s100 : word;
stime, etime, dur, total, avg : extended;
r : registers;
buf_save, buf_const, buf_read : array[1..512] of byte ;
Begin
for i := 1 to 512 do
buf_const[i] := $AA;

ClrScr;
Writeln('TCS Lab 11 Testing FDD (drive A:)');
r.AH := $08;
r.DX := 0;
intr($13, r);
mC := r.CH;
mH := r.DH;
mS := r.CL;

if r.AX <> 0 then
begin
Writeln('ERROR: Can not to define geomethry');
Halt;
end
else
begin
Writeln('08 INT 13h OK');
Writeln('MAX cylinder number is: ', mC);
WriteLn('MAX head is: ', mH);
WriteLn('MAX sector is: ', mS);
v := (mC + 1)* (mH + 1)*mS;
v := v * 512;
Writeln('Volume = ', v, ' in bytes');
end;
(*/////////////////////////////////////////*)
repeat
Write('Enter start position for cylinder: C[0-', mC, '] : ');
Readln(sC);
TextColor(Yellow);
until (sC >= 0) and (sC <= mC);
TextColor(LightGray);
repeat
Write('Enter end position for cylinder: C[', sC, '-', mC, '] : ');
Readln(eC);
TextColor(Yellow);
until (eC >= sC) and (eC <= mC);
TextColor(LightGray);
WriteLn;
repeat
Write('Enter start position for head: H[0-', mH, '] : ');
Readln(sH);
TextColor(Yellow);
until (sH >= 0) and (sH <= mH);
TextColor(LightGray);
repeat
Write('Enter end position for head: H[', sH, '-', mH, '] : ');
Readln(eH);
TextColor(Yellow);
until (eH >= sH) and (eH <= mH);
TextColor(LightGray);
WriteLn;
repeat
Write('Enter start position for sector: S[1-', mS, '] : ');
Readln(sS);
TextColor(Yellow);
until (sS >= 1) and (sS <= mS);
TextColor(LightGray);
repeat
Write('Enter end position for sector: S[', sS, '-', mS, '] : ');
Readln(eS);
TextColor(Yellow);
until (eS >= sS) and (eS <= mS);
TextColor(LightGray);
(*/////////////////////////////////////////*)
Writeln('=================================================');
Writeln('Testing range');
Writeln('Start: CHS(', sC, ', ', sH, ', ', sS, ')');
Writeln('End : CHS(', eC, ', ', eH, ', ', eS, ')');
Writeln('=================================================');

GetTime(hr, m, sec, s100);
Writeln(hr, ':', m, ':', sec, '.', s100, ' Starting test...');

bad := 0;
cnt := 0;
For h:= bH to h < eH do
For c:= bC to C < eC do
For s:= bS to s < eS do
Begin
rS:= random(eS – bS+1);
Begin
gettime(h1,m1,S1,S101);
r.ah:=4;
t.al:=1;
r.cl:=bS+rS;
r.ch:=C;
r.dl:=0;
r.dh:=h;
intr ($13,r);
gettime(h2,m2,S2,S102);
t:=(S101- S102)*10;
if t<0
then t:=t+1000;
if r.ah=0
then
wtiteln(‘Sektor (’,h,c,bstrS): Ok’);
else
writeln(‘Sektor (‘,h,c,bstrs,’): error’);
writeln(' transition time from head to head:’,t,’ms’);
end;
end;
Writeln('-------------------------------------------------');
Writeln('Checked : ', cnt);
Writeln('Bad : ', bad);
Writeln('Total time : ', total :0:2, ' sec');
Writeln('Avg time : ', total / cnt :0:2, ' sec');
Writeln('Press any key to exit...');
ReadKey;
End.


задача поставлена что бы под DOS программа была написана вот и использую DOSBox
в файле прикреплены то из чего я слепил это чудо.


Прикрепленные файлы
Прикрепленный файл  prog.rar ( 2.05 килобайт ) Кол-во скачиваний: 235
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Цитата
Ошибка с переменными(Error 26:Type mismatch)
Файл PROGM из архива компилируется в Турбо Паскале прекрасно. В чем именно заключается Error 26? Как увидеть ее? smile.gif

А в посте вообще бредовые вещи написаны. Строка 98:

Цитата
  For h:= bH to h < eH do { <-- 98 }
For c:= bC to C < eC do
For s:= bS to s < eS do
Это что, означает что начальное значение переменной цикла задается переменной типа Byte, а конечное - значением типа Boolean? Не, ну так получается:

  For h:= bH to (h < eH) do { то, что в скобках - Boolean, истина или ложь }
Так нельзя. Конечное значение тоже должно быть целочисленным (байтовым)

Сообщение отредактировано: IUnknown -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 12.09.2025 11:44
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name