Помощь - Поиск - Пользователи - Календарь
Полная версия: Ошибка с переменными(Error 26:Type mismatch)
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
FDrum
 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
в файле прикреплены то из чего я слепил это чудо.
IUnknown
Цитата
Ошибка с переменными(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, истина или ложь }
Так нельзя. Конечное значение тоже должно быть целочисленным (байтовым)
FDrum
Цитата(IUnknown @ 13.05.2012 19:48) *

Файл PROGM из архива компилируется в Турбо Паскале прекрасно. В чем именно заключается Error 26? Как увидеть ее? smile.gif

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

Это что, означает что начальное значение переменной цикла задается переменной типа Byte, а конечное - значением типа Boolean? Не, ну так получается:

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


  For h:= bH to (h < eH) do { то, что в скобках - Boolean, истина или ложь }

да то я игрался и забыл булен убрать, прости)
там да на "h" - byte стоит)

вот картинка на не выделил куда ошибку выдает

тот что прогм и ранд я из этих двух свою спил


изначальное мое задание
тестирование нгмд
дано, ms-dos. pascal.13h прерывание
верификация. рандомНажмите для просмотра прикрепленного файла
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.