Форум: "Основная";
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];
ВнизВопрос к паскальщикам??? Найти похожие ветки
← →
Art (2001-12-18 17:19) [0]Компилятор выдает ошибку Variable Indefinier Expected, и указывает на место в программе,где перемножаются две константы???В чем дело???
← →
Владислав (2001-12-18 17:20) [1]Variable Indefinier Expected означает: Ожидался идентификатор переменной.
Делай выводы.
Приведи код.
← →
Art (2001-12-18 17:23) [2]System.Move(grecFixedDiskBoot,gsTempInput[1],aMaxTpStrLen);
gsTempInput[0] := System.Char(aMaxTpStrLen);
IF (System.Pos(asCopyrightNotice,gsTempInput) <> 0)
THEN BEGIN
System.WriteLn(asProgramPrompt+asProgram+
" loader found on fixed disk 0.");
System.Write(asProgramPrompt+
"Copy description strings from installed copy (Y/N): ");
System.ReadLn(gsTempInput);
IF (System.UpCase(_fnchGetFirstChar(gsTempInput)) <> achNo)
THEN BEGIN
System.WriteLn(asProgramPrompt+"Copy description strings.");
System.Move(System.Mem[System.Seg(grecFixedDiskBoot.dbReservedCode):
(System.Ofs(grecFixedDiskBoot.dbReservedCode)+aOS_Desc_Start)],
(“казывает сюда это константы) aOS_Desc_Str_Len_Ext*aMaxAvailLogicalPartition);
END;
{if-then}
END
ELSE
System.WriteLn(asProgramPrompt+asProgram+" loader not present.");
{if-then}
← →
Владислав (2001-12-18 17:26) [3]Объяви переменную. Присвой ей значение. Передай в процедуру.
Скорее всего процедура ожидает параметр по ссылке, а ты передаешь по значению.
← →
MBo (2001-12-18 18:40) [4]двоеточие там нужно?
← →
Иван Шихалев (2001-12-18 18:52) [5]Какое, к черту, двоеточие? Берем учебник для младших классов и начинаем выяснять, чем отличаются параметры-значения и параметры-переменные. Еще полезно заглянуть в справку и узнать, какие параметры у процедуры
Move
и сколько их.
← →
Anatoly Podgoretsky (2001-12-18 20:06) [6]Мне кажется что проблема вот здесь
"(“казывает сюда это константы)" - это переменная? и где тогда запятая?
А так синтаксис в остальном правильный.
Приведи точный код вызова и объявление переменных используемый в процедуре Move.
← →
Art (2001-12-18 20:22) [7]Ребят я уже замучался,щас приведу весь код!
← →
Art (2001-12-18 20:29) [8]{*========================== CONSTANTS PART ============================*}
CONST
{ program definitions }
asPurpose = "OS-MultBoot";
asVersion = "1.30";
asAuthor = "Dima Stefankov";
asCopyright = "Copyright (c) 1987, 1993";
asProgram = "OS-Boot";
asProgramPrompt = asProgram+": ";
{ exit codes }
errTerminateOK = 0;
errBootStrapDebug = 1;
errBadReadFixedDisk = 2;
errBadWriteFixedDisk = 3;
errUserInstallAbort = 4;
errUserWriteAbort = 5;
errMismatchLoaderCode = 6;
{ miscellaneous }
aMaxTpStrLen = 255;
asBlank = "";
achHexPrefix = "$";
asFreeSlot = " <*** free slot ***>";
asNonFreeSlot = " <*** disk slot ***>";
aSectorSize = 512;
aSecSizeInWords = aSectorSize DIV 2;
aQuit = "Q";
achYes = "Y";
achNo = "N";
aDefExt = "BIN";
aDosExtMark = ".";
{ ASCII codes }
achNULL = 00;
achLF = 10;
achCR = 13;
achOne = "1";
achFour = "4";
{***** ATTENTION!!! Hard-coded values below. *****}
{***** Please modify carefully! *****}
{$IFDEF DebugVersion}
adwBootSeg = $8000; { segment at 512K }
{$ELSE}
adwBootSeg = $0000; { segment at 0K }
{$ENDIF}
adwBootOfs = $7C00;
adwRelBootOfs = adwBootOfs + aSectorSize;
adwPartitionTable = $1BE;
aPartitonEntrySize = $10;
aMaxAvailLogicalPartition = 4;
adwBootMarkOfs = adwPartitionTable +
(aPartitonEntrySize*
aMaxAvailLogicalPartition);
adwBootSecID = $AA55;
aOS_Desc_Str_Len = $16; { these values found }
aOS_Desc_Ofs = $04; { after assembly of }
aOS_Desc_Start = $40-1; { IPL procedure. }
aOS_Desc_Str_Len_Ext = aOS_Desc_Str_Len + 2;
aDebugOff = 0;
aDebugOn = 1;
aFarJumpOpCode = $EA; { iAPX86 opcode }
aRomKbdDriver = $16; { IBM PC BIOS functions }
aRomDiskDriver = $13;
aRomVideoDriver = $10;
{ use for to check of installed version }
asCopyrightNotice = "OS-MultBoot (C) 1992 D.Stefankov";
{*====================== TYPED CONSTANTS PART ==========================*}
TYPE
{* strings *}
STR2 = STRING[2];
STR4 = STRING[4];
STR8 = STRING[8];
{* Information about logical disk *}
recLogicalPartition = RECORD
dbBootDriveMark : System.Byte; {00}
dbStartingHead : System.Byte; {01}
dwStartingCylSec : System.Word; {02}
dbOperatingSystemID : System.Byte; {04}
dbEndingHead : System.Byte; {05}
dwEndingCylSec : System.Word; {06}
ddPrecedingSecs : System.Longint; {08}
ddSecsPerPartition : System.Longint; {0C}
END;
{* recLogicalPartition *}
{* Master Boot Sector *}
recMasterBoot = RECORD
dbReservedCode : ARRAY[0..adwPartitionTable-1] OF
System.Byte; {000}
recDiskPartitionsTable : ARRAY[0..aMaxAvailLogicalPartition-1] OF
recLogicalPartition; {1BE}
dwValidBootRecID : System.Word; {1FE}
END;
{* recMasterBoot *}
{*=========================== VARIABLES PART ===========================*}
VAR
grecFixedDiskBoot : recMasterBoot;
gfOutStream : FILE OF recMasterBoot;
gsTempInput : STRING;
gdwOurBootRecLen : System.Word;
gdwMemOfs : System.Word;
gbStatusOk : System.Boolean;
gdbIndex : System.Byte;
gchIn : System.Char;
← →
Anatoly Podgoretsky (2001-12-18 20:30) [9]С этого лучше начинать, но не надо весь код, только для move и необходимые объявления переменных.
← →
Art (2001-12-18 20:33) [10]System.Move(grecFixedDiskBoot,gsTempInput[1],aMaxTpStrLen);
gsTempInput[0] := System.Char(aMaxTpStrLen); - эту строчку он пропускает значит параметры все!
← →
Art (2001-12-18 20:39) [11]Move с модуля SYSUTILS
← →
Anatoly Podgoretsky (2001-12-18 20:54) [12]Так на какой из двух Move у тебя ругается компилятор?
Ну не вытягивать же из тебя информацию по каплям, скоро надоест.
← →
Иван Шихалев (2001-12-18 21:06) [13]> эту строчку он пропускает значит параметры все!
System.Move(grecFixedDiskBoot,gsTempInput[1],aMaxTpStrLen);
Здесь три параметра
System.Move(System.Mem[System.Seg(grecFixedDiskBoot.dbReservedCode): (System.Ofs(grecFixedDiskBoot.dbReservedCode)+aOS_Desc_Start)],
aOS_Desc_Str_Len_Ext*aMaxAvailLogicalPartition);
Здесь два параметра
> Move с модуля SYSUTILS
А это еще что значит?
← →
Art (2001-12-18 21:07) [14]Move с модуля SYSUTILS
← →
Art (2001-12-18 21:10) [15]Ладно забейте на модуль!
System.Move(System.Mem[System.Seg(grecFixedDiskBoot.dbReservedCode): (System.Ofs(grecFixedDiskBoot.dbReservedCode)+aOS_Desc_Start)],
aOS_Desc_Str_Len_Ext*aMaxAvailLogicalPartition); - на этот кусок ругается!
← →
Art (2001-12-18 21:12) [16]Народ!Всем проще будет,если кто-нить знает ,где достать исходник загрузчика!!
← →
Anatoly Podgoretsky (2001-12-19 00:05) [17]Надо что бы было не два, а три параметра!!!
← →
Владислав (2001-12-19 07:44) [18]> Art © (18.12.01 21:12)
Будет проще, если ты не будешь "воду мутить" :-)
Вот декларация процедуры:
procedure Move(const Source; var Dest; Count: Integer);
А вот как ты ее используешь:
System.Move(System.Mem[System.Seg(grecFixedDiskBoot.dbReservedCode): (System.Ofs(grecFixedDiskBoot.dbReservedCode)+aOS_Desc_Start)], aOS_Desc_Str_Len_Ext*aMaxAvailLogicalPartition);
Найди отличия...
Всем проще будет, если кто-нить знает, где достать исходник загрузчика!
"Дайте, пожалуйста, водички попить, а то так кушать хочется, что даже переночевать негде."
Удачи.
← →
Арт (2001-12-19 13:47) [19]Ладно извините ,спасибо всем!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.007 c