Головна сторінка
Top.Mail.Ru Яндекс.Метрика
Форум: "Основна";
Поточний архів: 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]

Яке, до біса, двокрапка? Беремо підручник для молодших класів і починаємо з'ясовувати, чим відрізняються параметри-значення і параметри-змінні. Ще корисно заглянути в довідку і дізнатися, які параметри у процедури Рухатися і скільки їх.



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.63 MB
Час: 0.034 c
1-22121
Сталін
2001-12-18 00:20
2002.01.08
Нова проблема: + (


1-22011
KSergey
2001-12-16 14:26
2002.01.08
Як відловити клавішу TAB?


3-21940
Серік
2001-12-05 09:15
2002.01.08
InterBase & VisualC ++


3-21901
переможець
2001-12-06 09:46
2002.01.08
проблема з видаленням записів


1-22182
Вал
2001-12-20 18:11
2002.01.08
Chart -> JPEG





африкаанс албанський арабська вірменин азербайджанець баскський білоруський болгарська каталонський Китайська (спрощене письмо) Китайський традиційний) хорватський чеська данську мову нідерландський Ukranian естонець Філіппінська фінську мову французький
галісійська грузинський німецький грецький гаїтянський креольський давньоєврейську хінді угорський ісландський індонезієць ірландський італійський японський корейський латиська литовець македонець малайський мальтійський норвежець
перс полірування португальська румунський російська сербський словацький словенський іспанська суахілі шведську мову тайський турецька український урду в'єтнамський валлійський ідиш бенгальський боснійський
кебуано есперанто гуджараті хауса хмонг ігбо яванський каннада кхмерская Лао латинь маорі маратхі монгольський непальська панджабі сомалійський тамільська телугу йоруба
зулуський
Англійська Французький Німецький Італійський Португальська Русский Іспанська