主页
Top.Mail.Ru Yandeks.Metrika
论坛:“主要”;
当前存档:2002.01.08;
下载:[xml.tar.bz2];

向下

问题pascalshchik ??? 找到类似的分支


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);
结束;
{if-then}
结束
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]

Какое, к черту, двоеточие? Берем учебник для младших классов и начинаем выяснять, чем отличаются параметры-значения и параметры-переменные. Еще полезно заглянуть в справку и узнать, какие параметры у процедуры 移动 и сколько их.



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 ==========================*}



{* 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}
结束;
{* 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}
结束;
{* 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.89 MB
时间:0.073 c
4-22510
伊利亚
2001-10-14 18:06
2002.01.08
Изменение свойств принтера


4-22477
艺术
2001-10-31 12:17
2002.01.08
Как увидеть все процессы запущенные всеми прогами?


1-22104
DerZky
2001-12-18 19:54
2002.01.08
如何比较日期。


3-21902
Andrey Pogorelov
2001-12-02 10:49
2002.01.08
Проблема с составлением запроса и выводом его в QReport


1-22150
Dimich
2001-12-20 13:22
2002.01.08
如何在Panel中滚动





南非荷兰语 阿尔巴尼亚人 阿拉伯语 亚美尼亚 阿塞拜疆 巴斯克 白俄罗斯 保加利亚语 加泰罗尼亚 简体中文 中国(繁体) 克罗地亚 捷克 丹麦语 荷兰人 英语 爱沙尼亚语 菲律宾人 芬兰 法文
加利亚西语 格鲁吉亚语 德语 希腊语 海地克里奥尔语 希伯来语 印地语 匈牙利 北日耳曼语 印度尼西亚人 爱尔兰语 意大利语 日语 韩语 拉脱维亚 立陶宛 马其顿 马来语 马耳他语 挪威语
波斯语 波兰语 葡萄牙语 罗马尼亚 俄语 塞尔维亚 斯洛伐克 斯洛文尼亚 西班牙语 斯瓦希里 瑞典语 泰国人 土耳其 乌克兰 乌尔都语 越南人 威尔士语 意第绪语 孟加拉 波斯尼亚
宿务 世界语 古吉拉特语 豪萨语 苗族 伊博 爪哇 卡纳达语 高棉 老挝 拉丁语 毛利 马拉 蒙古人 尼泊尔 旁遮普 索马里 泰米尔人 泰卢固语 约鲁巴语
祖鲁
英文 Французский Немецкий Итальянский Португальский 俄文 Испанский