Casa
Top.Mail.Ru Yandeks.Metrika
Foro: "Principal";
Archivo actual: 2002.01.08;
Descargar: [xml.tar.bz2];

abajo

Pregunta a pascalschik ??? Encontrar ramas similares


Art   (2001-12-18 17:19) [0]

Компилятор выдает ошибку Variable Indefinier Expected, и указывает на место в программе,где перемножаются две константы???В чем дело???



Владислав   (2001-12-18 17:20) [1]

Variable Indefinier Expected означает: Ожидался идентификатор переменной.

Sacar conclusiones.

Приведи код.



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

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



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

TIPO

{* 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}
FIN;
{* 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}
FIN;
{* 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);

Найди отличия...

Всем проще будет, если кто-нить знает, где достать исходник загрузчика!

"Дайте, пожалуйста, водички попить, а то так кушать хочется, что даже переночевать негде."

Buena suerte.



Арт   (2001-12-19 13:47) [19]

Ладно извините ,спасибо всем!



Páginas: 1 rama entera

Foro: "Principal";
Archivo actual: 2002.01.08;
Descargar: [xml.tar.bz2];

arriba









Memoria: 0.89 MB
Tiempo: 0.186 c
1-22167
Arte
2001-12-15 20:56
2002.01.08
¡¡¡Ese es el problema !!!


1-22052
avr555
2001-12-17 19:54
2002.01.08
Arrastrar y soltar componente


1-22038
Dima ~
2001-12-18 17:53
2002.01.08
¿Cómo transferir la línea de comando al archivo lanzado?


1-22081
Andrewv
2001-12-18 14:14
2002.01.08
Cómo causar un error de sistema.


1-22076
Serpiente
2001-12-19 12:50
2002.01.08
¿Cómo saber la fecha de lanzamiento de la BIOS?





africaans albanés Arabic armenio Azerbaiyán vasco Bielorruso Bulgarian Catalán Chino (simplificado) Chino (tradicional) Croata Checo Danés Dutch Inglés Estonia filipina Finnish Francés
gallego georgiano Alemán Griego criollo haitiano hebreo hindi Húngaro islandés Indonesian irlandés Italiana Japonés Korean letón lituano macedonio Malay maltés Noruego
persa polaco Portuguese rumano Ruso Serbio Slovak Esloveno Español swahili Sueco Thai turco ucranio Urdu vietnamita galés yídish bengalí bosnio
cebuano esperanto gujarati hausa hmong igbo javanés kannada khmer lao latín maorí marathi mongol nepali punjabi somalí Tamil telugu yoruba
zulú
Английский Francés Alemán Italiano portugués Русский Español