Ошибка 122 паскаль

Стараюсь сделать,что бы кружки спавнились и шли по своей траектории. Для этого сделал координаты x и y массивами, но выдаёт ошибку.

До этого я x1 не представлял как массив, из-за чего кружки спавнились почти друг на друге. Помогите решить проблему.

В 129-й строке выдаёт ошибку №122 (ошибочная ссылка на переменную). Также, ошибка в 134-й, 143-й и 148-й строке.

В процедуре DVIG и GVIG_2 не могу обратиться к элементам массива(возможно неправильно указал)
в строках кода «pologitel(630 — 15*nom);» и «otrec(630 — 15*nom);» выдаёт ошибку 122

program Kolobok;
uses crt, graph;
const n = 20;
var
y1:array[1..n] of integer;
x1:array[1..n] of integer;
x,y,p,o,i,nom,k,l,q:integer;
bool:boolean;
c:string;

procedure grafika;
var gd,gm:integer;
begin
     gd:=detect;
     gm:=0;
     Initgraph(gd,gm,'');
end;

procedure Solnce;
begin
     setfillstyle(1,9);
     bar(0,0,800,350);
     setfillstyle(1,10);
     bar(0,351,640,640);
     setcolor(14);
     circle(0,0,50);
     setfillstyle(1,14);
     floodfill(0,0,14);
end;

procedure POLOGITEL_spawn;
begin
     randomize;
     y1[q]:=250+random(50);
     setcolor(2);
     circle(630,y1[q],10);
     SetFillStyle(1,2);
     floodfill(630,y1[q],2);
end;

procedure pologitel(x1:array of integer);
begin
     setcolor(2);
     circle(x1[q],y1[q],10);
     setfillstyle(1,2);
     floodfill(x1[q],y1[q],2);
end;

procedure OTREC_spawn;
begin
     randomize;

     y1[q]:=250+random(50);
     setcolor(4);
     circle(630,y1[q],10);
     SetFillStyle(1,4);
     floodfill(630,y1[q],4);
end;

procedure otrec(x1:array of integer);
begin
     setcolor(4);
     circle(x1[q], y1[q], 10);
     setfillstyle(1, 4);
     floodfill(x1[q], y1[q], 4);
end;

procedure FON;
begin
     setfillstyle(1, 9);
     bar(0, 0, 800, 350);
     SetFillStyle(1, 10);
     bar(0, 351, 1000, 1000);
end;

procedure OLOBOK(y:integer);
begin
     y := 330;
     setcolor(14);
     circle(20, y, 20);
     SetFillStyle(1, 14);
     floodfill(20, y, 14);
end;

procedure random_spawn;
begin
     i := random(2);

     if i=1 then
     begin
          pologitel_spawn;
          p := p+1;
     end
     else
     begin
          otrec_spawn;
          o := o+1;
     end;

     k := k+1;
end;

procedure random_spawn_2;
begin
     l := random(2);

     if l=1 then
     begin
          pologitel_spawn;
          p := p+1;
     end
     else
     begin
          otrec_spawn;
          o := o+1;
     end;
     k := k+1;
end;

procedure DVIG;
begin
     if i=1 then
     begin
          pologitel(630 - 15*nom);
          K := k+1
     end
     else
     begin
          otrec(630 - 15*nom);
          k:=k+1;
     end;
end;

procedure DVIG_2;
begin
     if L=1 then
     begin
          pologitel(630 - 15*nom);
          K := k+1
     end
     else
     begin
         otrec(630 - 15*nom);
         k := k+1;
     end;
end;

begin
     grafika;

     Solnce;
     randomize;
     olobok(y);

     k := 0;
     q := 1;
     random_spawn;
     nom := 0;
     bool := true;

     while bool do
     begin
          delay(100);
          cleardevice;
          Solnce;
          olobok(y);
          nom:=nom+1;
          DVIG;

          if k = 3 then
          begin
               q := q+1;
               random_spawn_2;
               dvig_2;
               k := 0;
          end;

          if (630 - 15*nom < 30) then
             bool := false;

     end;
     readln;
end.

Главная / Справочник / Сообщения об ошибках / Ошибки компиляции

Недопустимая ссылка на переменную.

Описание

Эта конструкция следует синтаксису переменной ссылки, но не указывает на область памяти.

Вы, вероятно, вызываете указательную функцию, но забываете разыменовывать результат.

extrem4ik

0 / 0 / 0

Регистрация: 03.11.2013

Сообщений: 16

1

03.11.2013, 14:43. Показов 2342. Ответов 8

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Pascal
1
2
3
4
5
6
7
8
9
var
  x, y, z: real;
begin
  readln(x);
  if x > -0.5  then y := 1 + x / sqrt(x * (sin(x) / cos(x)))
  else ln(abs((x * x * x * x + 2.3 * x * x * x + 1) / sin(x) * sin(x) * sin(x)));
  z := sqrt(1 + exp(x * sin(x)) + abs(x * y));
  writeln('z = ', z);
end.



0



Почетный модератор

64288 / 47587 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

03.11.2013, 15:43

2

Без точного условия не разобрать,ибо написан бред…



1



0 / 0 / 0

Регистрация: 03.11.2013

Сообщений: 16

03.11.2013, 15:46

 [ТС]

3

Вот такая вот ошибка( а написанная программма вовсе не бред

Миниатюры

122 ошибка в турбо паскале,на что  исправить?
 



0



Puporev

Почетный модератор

64288 / 47587 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

03.11.2013, 16:05

4

Pascal
1
else  что-то:=ln(abs.......

И разве это не бред?



1



0 / 0 / 0

Регистрация: 03.11.2013

Сообщений: 16

03.11.2013, 16:14

 [ТС]

5

ну да ну да,я вставил туда y:= что дальше?



0



Почетный модератор

64288 / 47587 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

03.11.2013, 16:20

6

Цитата
Сообщение от extrem4ik
Посмотреть сообщение

что дальше?

А я написал

Цитата
Сообщение от Puporev
Посмотреть сообщение

Без точного условия не разобрать,ибо написан бред…



0



0 / 0 / 0

Регистрация: 03.11.2013

Сообщений: 16

03.11.2013, 16:29

 [ТС]

7

вот само задание

Миниатюры

122 ошибка в турбо паскале,на что  исправить?
 



0



Puporev

Почетный модератор

64288 / 47587 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

03.11.2013, 16:39

8

Pascal
1
2
3
4
5
6
7
8
9
10
11
uses crt;
var
  x, y, z: real;
begin
write('x=');
read(x);
if x>-0.5 then y:=1+x/sqrt(x*(sin(x)/cos(x)))
else y:=ln(abs((x*x*x*x+2.3*x*x*x+1))/(sqrt(sin(x))*sin(x)));
z:=sqrt(1+exp(x*sin(x))+abs(x*y));
writeln('z=',z:0:4);
end.

Раздел Паскаль АВС, на нем и написано…



0



0 / 0 / 0

Регистрация: 03.11.2013

Сообщений: 16

03.11.2013, 16:57

 [ТС]

9

спасибо большое)



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

03.11.2013, 16:57

9

Topic: [SOLVED] Error Code 122 when retrieving GPT Partition Type GUID from offset 1024  (Read 9920 times)

Hi

I am trying to read the Partition TYPE GUID of GPT formatted disks. I don’t mean the Disk GUID itself. I mean, quite specifically, the partition type GUID which is what identifies the partition as being created by a certain type of system. For example, the partition type GUID for Microsoft reserved partition is E3C9E316-0B5C-4DB8-817D-F92DF00215AE. For a basic data partition, it is EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (see full list in the table here : https://en.wikipedia.org/wiki/GUID_Partition_Table)

I have successfully incorporated some existing code from the fantastic  David Heffernan at StackOverflow (http://stackoverflow.com/a/17132506) which works for things like the Disk GUID. But I am having problem when calling DeviceIOControl and populating another aspect of his type set, ‘TPartitionInformationGPT’. Basically, DeviceIOControl is returning false when I try to use it with a TPartitionInformationGPT record variable, but the handle to the disk is valid. The Last OS Error code is 122, which I gather means :

ERROR_INSUFFICIENT_BUFFER
The data area passed to a system call is too small.

Trouble is, I don’t understand why. The relevant portions of code are supplied below. Most is in my GPTMBR unit file, and then I call the functions from my main unit.

unit GPTMBR;

interface

uses
  Windows, SysUtils, Dialogs;

type
  TDriveLayoutInformationGpt = record
    DiskId: TGuid;
    StartingUsableOffset: Int64;
    UsableLength: Int64;
    MaxPartitionCount: DWORD;
  end;

  TPartitionInformationGpt = record
    PartitionType: TGuid;
    PartitionId: TGuid;
    Attributes: Int64;
    Name: array [0..35] of WideChar;
  end;

...
function Get_GPT_PartitionType(SelectedDisk : widestring) : TGUID;
function Textify_GPT_PartitionType(GPTType : TGUID) : string;

implementation

// Get_GPT_PartitionType : Get the GPT partition type GUID, which is usually
// located at the third sector at offset 1024 (decimal) 0x400 (hex) and is 16 bytes long.
function Get_GPT_PartitionType(SelectedDisk : widestring) : TGUID;
const
  PARTITION_STYLE_MBR = 0;
  PARTITION_STYLE_GPT = 1;
  PARTITION_STYLE_RAW = 2;
  IOCTL_DISK_GET_DRIVE_LAYOUT_EX = $00070050;
var
  i: Integer;
  Drive: widestring;
  hDevice: THandle;
  GPT_PartitionGUID : TPartitionInformationGpt;
  BytesReturned: DWORD;
  GPTPartitionType : TGUID;

begin
  Drive := SelectedDisk;

  hDevice := CreateFileW(PWideChar(Drive),
                        0,
                        FILE_SHARE_READ or FILE_SHARE_WRITE,
                        nil,
                        OPEN_EXISTING,
                        0,
                        0);

  if hDevice <> INVALID_HANDLE_VALUE then
  begin
    if DeviceIoControl(hDevice, IOCTL_DISK_GET_DRIVE_LAYOUT_EX, nil, 0,
        @GPT_PartitionGUID, SizeOf(GPT_PartitionGUID), BytesReturned, nil) then // returns FALSE, I assume because GPT_PartitionGUID is too small?
      begin
        // THIS IS NOT BEING EXECUTED
        ShowMessage(GPT_PartitionGUID.Name);
        GPTPartitionType := GPT_PartitionGUID.PartitionType;
        result := GPTPartitionType; // Return the GUID as TGUID for conversion to text next
      end
    else RaiseLastOSError; // Generates Error Code 122
  end;
  CloseHandle(hDevice);
end;

// Textify_GPT_PartitionType : Return a string representation of the type GUID
function Textify_GPT_PartitionType(GPTType : TGUID) : string;
begin
  result := GUIDToString(GPTType); // Convert the TGUID value to text
end;
...

Usage :

[code]
 // First, determine if it a MBR or GPT partitioned disk. Call GPTMBR unit...
      MBRorGPT := MBR_or_GPT(SelectedDisk);
// Now check if it's a GPT, lookup the partition type GUID for looking up against https://en.wikipedia.org/wiki/GUID_Partition_Table list
      if Pos('GPT', MBRorGPT) > 0 then
        begin
          ShowMessage(Textify_GPT_PartitionType(Get_GPT_PartitionType(SelectedDisk)));
        end;


If anyone has a GPT formatted disk (I create virtual disk VHD’s using Windows 7 disk manager) and opens it in HxD or any disk software and they navigate to offset 1024, chances are they will see the 16 bytes type GUID I am referring to, in byte reversed order.

Can anyone see why Error Code 122 is being generated here? Thanks a lot

« Last Edit: January 02, 2016, 12:33:52 pm by Gizmo »


Logged



Logged


Yes, I see.

I need to lookup the value in DriveLayoutInfo.PartitionEntry instead. I didn’t realise that it points to the TPartitionInformationGpt type, which in turn has the value PartitionType: TGuid. But how do I assign that to a TGUID variable?

TDriveLayoutInformationEx = record
    PartitionStyle: DWORD;
    PartitionCount: DWORD;
    DriveLayoutInformation: record
      case Integer of
      0: (Mbr: TDriveLayoutInformationMbr);
      1: (Gpt: TDriveLayoutInformationGpt);
    end;
    PartitionEntry: array [0..15] of TPartitionInformationGpt; // How to assign this to a TGUID variable? 

var
  GUIDType : TGUID;
...

if hDevice <> INVALID_HANDLE_VALUE then
    begin
      if DeviceIoControl(hDevice, IOCTL_DISK_GET_DRIVE_LAYOUT_EX, nil, 0,
        @DriveLayoutInfo, SizeOf(DriveLayoutInfo), BytesReturned, nil) then
      begin
        if DriveLayoutInfo.PartitionStyle = 0 then result := 'MBR (sig: ' + IntToHex(SwapEndian(DriveLayoutInfo.DriveLayoutInformation.Mbr.Signature), 8) + ')';
        if DriveLayoutInfo.PartitionStyle = 1 then // A GTP partition is there
        begin
          result := 'GPT (Disk GUID: ' + GUIDToString(DriveLayoutInfo.DriveLayoutInformation.Gpt.DiskId) + ')';
          GUIDType := DriveLayoutInfo.PartitionEntry; // HOW DO I DO THIS LINE PROPERLY?
          result := GUIDToString(GUIDType);   


Logged


But how do I assign that to a TGUID variable?

Assuming you are talking about this structure, you copy the GUID bytes into TGUID record ?

Other functions that might perhaps be of help, here.


Logged


OK, please see attached project which is a stripped demo to simplify.

You should find that by default it returns a false GUID Type of zeroes.

Or, if you switch the if statement to use IOCTL_GET_DISK_DRIVE_LAYOUT_EX you should find it generates the 122 error.

Can anyone else confirm if they get this as well? Does it help people help me work out where the problem is?


Logged


@Gizmo:
Yes i can confirm and yes you’re doing it wrong  ;D

I haven’t looked at your structures (i used those from jedi win), but you should understand that the DrivelayoutInformationEx structure only defines room for a single partition (even though your declared structure defined to be able to support more partitions). This seems to cause confusion (also for me), but it is mentioned on the IOCTL_DISK_GET_DRIVE_LAYOUT_EX msdn page

Community Additions

DRIVE_LAYOUT_INFORMATION_EX memory allocation

C99 Standard states that the last member of structure can be an array whose size is omitted.
DRIVE_LAYOUT_INFORMATION_EX is using this feathure, to call this control code correctly,
you cannot just declare a struct, should do something like this:

DWORD layout_size = sizeof(DRIVE_LAYOUT_INFORMATION_EX) + MAX_NUM_PARTITION * sizeof(PARTITION_INFORMATION_EX);
DRIVE_LAYOUT_INFORMATION_EX *disk_layout = (DRIVE_LAYOUT_INFORMATION_EX*) new char[layout_size];

MAX_NUM_PARTITION , maximum number of partitions on that disk.

I’ve attached a small test program (not lazarus, fpc), which seem to work for me and at least gets rid of the error 122. Now for the GUID’s, i’m leaving some room for you to experiment.

hope it helps.

PS: the remark in the source-code regarding not needing admin rights doesn’t work for me (tested with xp).

« Last Edit: November 24, 2015, 12:40:40 am by molly »


Logged


Thanks Molly.

The API either doesn’t suit my requirments (because GPT disks can be initialised without ever even being formatted with an actual partition) or I’m just a totally stupid. Probably the latter but hey, I’ve tried to write my own instead.

So I have a type declaration and a function:

type
...
  TGPTHeader = packed record
      TypeID : array [0..15] of byte;
      NextVal : array [0..15] of byte;
      WHateverElseINeed : array [0..15] of byte;
end;
...

function ReadGPT(hDevice : THandle) : string;
var
  DiskStream : THandleStream;
  GPTHeader : TGPTHeader;
  GPTGUIDType : string;
  I : integer;
begin
  i := 0;
  DiskStream := THandleStream.Create(hDevice);
  DiskStream.Position := 0;
  // Seek and start the read from offset 1024 of the disk
  DiskStream.Seek(1023, soFromBeginning);
  // Read in the 32 bytes of data, 16 into TypeID and 16 to NextVal
  if DiskStream.Read(GPTHeader, SizeOf(GPTHeader)) > -1 then
    begin
      // And display it
      for i:= 0 to 15 do
      begin
        GPTGUIDType := GPTGuidType + IntToHex(GPTHeader.TypeID[i], 2);
      end;
      result := GPTGUIDType;
    end
  else RaiseLastOSError;
  DiskStream.Free;
end;                   


But, no matter what I do, I keep just getting the following hex string :  00000000910000000000000046000000

What gives? Why the hell does this not simply start at offset zero, move to offset 1024, read in 45 bytes of data or so and parse out the first 16 bytes as a valid hex string? The hex string, incidentally, should be : 16 E3 C9 E3 5C 0B B8 4D 81 7D F9 2D F0 02 15 AE

« Last Edit: November 26, 2015, 07:28:09 pm by Gizmo »


Logged


Hi gizmo,

i wouldn’t dare say «you’re a totally stupid», however and afaik some things do go wrong in your code.

In order to let your (previous attached) code work, please change the hard-coded array of 16 partitions, as it is wrong.

My code (hopefully) showed that increasing that buffer does get rid of the «122 error code».

I’ve experimented a little, and it seems that 32 entries for partitions does the trick (at least when i reserve enough memory for that my code still works).

But there’s another ‘problem’ with the (previous) code you attached.

afaik the function DRIVE_LAYOUT_INFORMATION_EX, reads the whole drive layout, even when things are not formatted -> tested with mbr and seems to works like a charm as  it reports the partition being raw in that case.

So, there’s no need to read in the partition tables manually, as a single DRIVE_LAYOUT_INFORMATION_EX fills out the entire DrivelayoutInformationEx structure.

My current ‘read data from HD’ procedure reads:

Procedure DoSomeAction;
var
  hDevice            : THandle;
  DriveLayoutInfo    : PDrivelayoutInformationEx;
  DriveLayoutSize    : DWORD;
  BytesReturned      : DWORD;
begin
  hDevice := jwawinbase.CreateFile
  (
    '\.PHYSICALDRIVE0', 
    GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE,
    nil, OPEN_EXISTING, 0, 0
  );

  if (hDevice <> INVALID_HANDLE_VALUE) then
  begin
    DriveLayoutSize := sizeof(DRIVE_LAYOUT_INFORMATION_EX) + MAX_NUM_PARTITIONS * sizeof(PARTITION_INFORMATION_EX);
    DrivelayoutInfo := AllocMem(DriveLayoutSize);

    if DeviceIoControl
    (
      hDevice, IOCTL_DISK_GET_DRIVE_LAYOUT_EX, nil, 0,
      DriveLayoutInfo, DriveLayoutSize, @BytesReturned, nil
    ) then
    begin
      WriteLn('DeviceIoControl() call succeeded');
      WriteLn(BytesReturned, ' bytes were returned');

      DumpInfo(DriveLayoutInfo);
    end
    else WriteLn('failed with error nr: ', GetLastError);

    FreeMem(DriveLayoutInfo);

    CloseHandle(hDevice);
  end
  else WriteLn('unable to access partition');
end;


And The DumpInfo routine simply prints out the data that was read.

Attempting to read partition
DeviceIoControl() call succeeded
2928 bytes were returned
Sign = MBR (sig: REMOVED FOR PRIVACY)
This drive has 5 Partitions
---
Partition[  0].PartitionStyle          = MBR
Partition[  0].StartingOffset          = 32256
Partition[  0].PartitionLength         = 38165266944 (36397 MB)
Partition[  0].PartitionNumber         = 1
Partition[  0].RewritePartition        = FALSE
mbr info: used
Partition[  0].mbr.PartitionType       = PARTITION_IFS (#7)
Partition[  0].mbr.BootIndicator       = TRUE
Partition[  0].mbr.RecognizedPartition = TRUE
Partition[  0].mbr.HiddenSectors       = 63
---
Partition[  4].PartitionStyle          = MBR
Partition[  4].StartingOffset          = 38165331456
Partition[  4].PartitionLength         = 150489690624 (143518 MB)
Partition[  4].PartitionNumber         = 2
Partition[  4].RewritePartition        = FALSE
mbr info: used
Partition[  4].mbr.PartitionType       = PARTITION_IFS (#7)
Partition[  4].mbr.BootIndicator       = FALSE
Partition[  4].mbr.RecognizedPartition = TRUE
Partition[  4].mbr.HiddenSectors       = 63
---
Partition[  8].PartitionStyle          = MBR
Partition[  8].StartingOffset          = 188655054336
Partition[  8].PartitionLength         = 150489690624 (143518 MB)
Partition[  8].PartitionNumber         = 3
Partition[  8].RewritePartition        = FALSE
mbr info: used
Partition[  8].mbr.PartitionType       = PARTITION_IFS (#7)
Partition[  8].mbr.BootIndicator       = FALSE
Partition[  8].mbr.RecognizedPartition = TRUE
Partition[  8].mbr.HiddenSectors       = 63
---
Partition[ 12].PartitionStyle          = MBR
Partition[ 12].StartingOffset          = 339144777216
Partition[ 12].PartitionLength         = 150489690624 (143518 MB)
Partition[ 12].PartitionNumber         = 4
Partition[ 12].RewritePartition        = FALSE
mbr info: used
Partition[ 12].mbr.PartitionType       = PARTITION_IFS (#7)
Partition[ 12].mbr.BootIndicator       = FALSE
Partition[ 12].mbr.RecognizedPartition = TRUE
Partition[ 12].mbr.HiddenSectors       = 63
---
Partition[ 16].PartitionStyle          = MBR
Partition[ 16].StartingOffset          = 489634500096
Partition[ 16].PartitionLength         = 150489690624 (143518 MB)
Partition[ 16].PartitionNumber         = 5
Partition[ 16].RewritePartition        = FALSE
mbr info: used
Partition[ 16].mbr.PartitionType       = PARTITION_IFS (#7)
Partition[ 16].mbr.BootIndicator       = FALSE
Partition[ 16].mbr.RecognizedPartition = TRUE
Partition[ 16].mbr.HiddenSectors       = 63

Nothing exciting going on in DumpInfo() routine, just interpreting the data from record DrivelayoutInformationEx and printing it to console.

Why don’t you try telling what you want exactly instead of jumping left and right adjusting the question ?

The error 122 is fixed by simply increasing the array size to such extend that it can actually  contain all the partition data gathered by the windows DeviceIoControl() function.

Sorry, i haven’t looked at your latest snippet as the error is fixed.


Logged


  DiskStream.Seek(1023, soFromBeginning);

But, no matter what I do, I keep just getting the following hex string :  00000000910000000000000046000000

What gives? Why the hell does this not simply start at offset zero, move to offset 1024, read in 45 bytes of data or so and parse out the first 16 bytes as a valid hex string? The hex string, incidentally, should be : 16 E3 C9 E3 5C 0B B8 4D 81 7D F9 2D F0 02 15 AE

From documentation:

Remark:

  • ThandleStream does not obtain a handle from the OS by itself, it just handles reading and writing to such a handle by wrapping the system calls for reading and writing; Descendent classes should obtain a handle from the OS by themselves and pass it on in the inherited constructor.
  • Contrary to Delphi, no seek is implemented for THandleStream, since pipes and sockets do not support this. The seek is implemented in descendent methods that support it.


Logged


Hi Molly.

Thanks, as always, for your help and time.

Few observations….

I tried changing


  TDriveLayoutInformationEx = record
    PartitionStyle: DWORD;
    PartitionCount: DWORD;
    DriveLayoutInformation: record
      case Integer of
      0: (Mbr: TDriveLayoutInformationMbr);
      1: (Gpt: TDriveLayoutInformationGpt);
    end;
    PartitionEntry: array [0..15] of TPartitionInformationGpt;

to

  TDriveLayoutInformationEx = record
    PartitionStyle: DWORD;
    PartitionCount: DWORD;
    DriveLayoutInformation: record
      case Integer of
      0: (Mbr: TDriveLayoutInformationMbr);
      1: (Gpt: TDriveLayoutInformationGpt);
    end;
    PartitionEntry: array [0..31] of TPartitionInformationGpt;

Same error 122.

The entire reason I’m doing this is specifically for GPT data, and not just any parts of the GPT data. Just the 16 bytes that tell me what created the volume, that appear at offset 1024 of a GPT prepared disk. The implementation I have is inheritted from the example at Stackoverflow that gives me all the means to query a disks GPT properties, if its MBR or GPT, and if it is GPT, the values I need from it. Specifically, in TPartitionInformationGpt, is PartitionType: TGuid, which I can then convert to string using GUIDToString;

Using PDrivelayoutInformationEx does not give me those choices (as far as I can see), so I can’t query things like DriveLayoutInfo.PartitionStyle and then PartitionInformationEx.Gpt.PartitionType. I did of course adjust my uses declaration so it compiled OK, but the structure doesn’t seem to offer any properties. At least, if I can, I can’t see how.

And you’re not using the standard Windows API either I notice, which confused me further (whereas I have uses Windows) but rather the jwawinbase, jwawinnt, jwawinioctl uses. I’m not sure which is the recommended one, but I’ve generally assumed the Windows one. Is that not right?

You’re correct that your sample does compile and run without error, except all it returns is the bytes read. I could use it if I could query the GPT structures individually (type, diskGUID etc) but I don’t think I can?

Given that you seem to know what you’re doing, is it not possible for you to look at the existing demo project I uploaded and tweak whatever (small, single?) value it is (the partition count by the sounds of it?) that prevents the 122 error and successfully returns the value? Because any changes I make do not work.

The entire thing is pretty much done, except it doesn’t successfuly return the value. That’s all I need. I can take it from there.

As for the seek issue — I did read that, but left it in from my last desperate attempt to get it run. Taking it out makes no difference. It still generates the same value.   

« Last Edit: November 26, 2015, 10:24:19 pm by Gizmo »


Logged


@gizmo:
thank you for the clarification

Same error 122.

In that case either windows increased that value with newer version (tested with xp pro here), which can happen (as 32 is also not minimum possible amount, it’s more like 128 or even 256 entries), or something seems amiss with your declared structures (hence i used jedi’s to make sure -> and i was lazy checking yours  :D ).

The entire reason I’m doing this is specifically for GPT data, and not just any parts of the GPT data. Just the 16 bytes that tell me what created the volume, that appear at offset 1024 of a GPT prepared disk.

Then my code i attached earlier is a good starting point. The only thing left for you todo is interpreting the data correctly.

Using PDrivelayoutInformationEx does not give me those choices (as far as I can see), so I can’t query things like DriveLayoutInfo.PartitionStyle and then PartitionInformationEx.Gpt.PartitionType.

And that’s where the real culprit lies ;-)

Ok, so you have difficulty traveling down the structures:

Given that you seem to know what you’re doing, is it not possible for you to look at the existing demo project I uploaded and tweak whatever (small, single?) value it is (the partition count by the sounds of it?) that prevents the 122 error and successfully returns the value?

Too much credit, i have no idea how windows works  (i simply go along with what msdn writes and test in vm) :-[

Take my example, using jedi’s structures. After reading the data into DrivelayoutInformationEx:

When

PDrivelayoutInformationEx^.PartitionStyle = PARTITION_STYLE_GPT

then

writeLine(GUIDToString(PDrivelayoutInformationEx^.Union.Gpt.DiskId));

then check for each valid x (array of entries = nr of partitions)

  1.  PDrivelayoutInformationEx^.partitionEntry[x].PartitionStyle

if that partition style = PARTITION_STYLE_GPT then :

  1.  PDrivelayoutInformationEx^.partitionEntr[x].Gpt.PartitionType;

  2.  PDrivelayoutInformationEx^.partitionEntr[x].Gpt.PartitionId;

  3.  PDrivelayoutInformationEx^.partitionEntr[x].Gpt.Attributes;

  4.  PDrivelayoutInformationEx^.partitionEntr[x].Gpt.Name;

Does that make more sense ?

Sorry, i’m not in a habit writing code for someone else. There’s got to be something left for you to learn  ;D

(and i do apologize in advance if i made a mistake somewhere along the line, because in my code uses with’s, so it could be that i missed a dot or circumflex somewhere).

edit: ^^ and i did made a mistake, sorry for that: in the last code line samples i posted the union part must be removed, i have corrected this now.

« Last Edit: November 26, 2015, 11:48:03 pm by molly »


Logged


Reading the posts above, and reading:

The Last OS Error code is 122, which I gather means :

ERROR_INSUFFICIENT_BUFFER
The data area passed to a system call is too small.

then going directly to DeviceIoControl(..IOCTL_DISK_GET_DRIVE_LAYOUT_EX.. calls in your code and in molly’s, I see you used SizeOf(GPTPartitionLayoutInfo) while Molly used DriveLayoutSize := sizeof(DRIVE_LAYOUT_INFORMATION_EX) + MAX_NUM_PARTITIONS * sizeof(PARTITION_INFORMATION_EX);

I marked the difference in red.


Logged


You’re absolutely correct there engkin,

.. and most probably this is Gizmo’s (first) problem.

The (default declared) DrivelayoutInformationEx structure/record (ms$ and jedi) declares the structure/record to have room for only 1 single partition.

OP did declared a custom record structure to circumvent and increased the number of entries for the partition array, by (initially) making room for 16 entries.

I checked that value of 16, and allocating room for 16 entries failed for me with error 122, while allocating 32 entries worked for me (error went away).

The value of max. 16 partitions is mentioned somewhere in msdn documentation, but i believe this to be incorrect (or placed out of context).

According to Intel gpt white-paper the max. amount of partitions (per GPT disk) is 128.

But, since GPT could theoretically support 256 (??) partitions entries, i used that worsed case scenario for the example that i posted.

It might be that the value of MAX_NUM_PARTITIONS was increased over the years by m$ (i was unable to find the value for that constant), so that different versions of Windows might perhaps require another value for this variable.

Sorry to say that i was unable to locate the (official) specifications with regards to GPT, although i didn’t searched very long (allocating memory for 256 partition entries simply works for me).


Logged


Hi Gizmo,

I took some time to look at your definitions:

PartitionEntry: array [0..31] of TPartitionInformationGpt;

No idea where ^^ that ^^ came from, msdn writes:

PARTITION_INFORMATION_EX PartitionEntry[1];

That also explains why you seem to have a problem with reaching the information inside the structures/records, which you would like to obtain.

If you correct that inside your unit GPTMBR  + remove all code between begin end after you’ve read DiskGUID, then you should be good to go. In case you keep getting the 122 error then increase the PartitionEntry array so that it can contain 256 partition entries.

Which btw leaves you in the same situation as described in previous posts: you still need to interpret all the obtained data from the records.


Logged



Logged


СООБЩЕНИЯ КОМПИЛЯТОРА ОБ ОШИБКАХ

1
Out of memory
Выход за границы памяти
Компилятор выполняется вне допустимых границ памяти. Имеется ряд возможных решений проблемы:

§ Если в меню Options?Linker?Link Buffer, установлен параметр Memory, переключите его в значение Disk.

§ Возможно программа слишком велика, чтобы компилироваться в таком объеме памяти. Следует разбить ее на два или более модуля.

2
Identifier expected
Не указан идентификатор
В этом месте должен находиться идентификатор.

3
Unknown identifier
Неизвестный идентификатор
Этот идентификатор не был описан.

4
Duplicate identifier
Повторный идентификатор
Идентификатор уже представляет имя программы, модуля, константы, переменной, типа, процедуры и функции, описанных в текущем блоке.

5
Syntax  error
Синтаксическая ошибка
В исходном тексте найден неверный символ.

6
Error in real constant
Ошибка в вещественной константе
 

7
Error in integer constant
Ошибка в целой константе
 

8
String constant exceeds line
Строковая константа превышает размеры строки
Вероятно, отсутствует кавычка в конце строковой константы.

10
Unexpected end of file
Неожиданный конец файла
Причины:

§ несоответствующее количество begin и end (не забудьте, что оператор case также заканчивается словом end);

§ включаемый файл заканчивается в середине раздела операторов. Каждый раздел операторов должен целиком помещаться в одном файле;

§ незаконченный комментарий.

11
Line too long
Строка слишком длинная
Максимальная длина строки может равняться 126 символам. Возможно, отсутствует апостроф в конце строковой константы.

12
Type identifier expected
Нужен идентификатор типа
Не указан типа идентификатора, как это должно быть.

13
Too many open files
Слишком много открытых файлов
Файл CONFIG.SYS не содержит параметра FILES=xx или этот параметр указывает слишком много файлов. Следует увеличить число файлов.

14
Invalid file name
Неверное имя файла
Имя файла неверно или указывает несуществующий путь.

15
File not found
Файл не найден
Файл не может быть найден ни в текущем каталоге, ни в каком-либо другом исследуемом каталоге, предназначенном для этого типа файлов.

16
Disk full
Диск заполнен
Удалите некоторые файлы или воспользуйтесь новым диском (если речь идет о сменном носителе).

17
Invalid compiler directive
Неправильная директива компилятора
Возможно, неверная буква в директиве компилятора, один из параметров директивы компилятора неверный или используется глобальная директива компилятора, когда компиляция тела программы уже началась.

18
Too many files
Слишком много файлов
В компиляции программы или программного модуля участвует слишком много  файлов. Следует объединить включаемые файлы или сделать короче имена файлов.

19
Undefined type in pointer definition
Неопределенный тип в определении ссылки
Была осуществлена ссылка на тип в приведенном ранее описании указателя, но этот тип не был описан.

20
Variable identifier expected
Нужен идентификатор переменной
Идентификатор не описывает переменную, как это должно быть.

21
Error in type
Ошибка в определении типа
Определение типа не может начинаться с этого символа.

22
Structure too large
Слишком большая структура
Максимально допустимый размер структурного типа 65 535 байт.

23
Set base type of range
Базовый тип множества выходит за допустимые границы
Базовый тип множества должен представлять собой отрезок типа с границами в пределах от 0 до 255 или перечислимого типа, допускающим не более чем 256 значений.

24
File components may not be files or objects
Элементы файла не могут быть файлами или объектами
Тип компоненты файлового типа не может быть объектным или файловым типом и не может быть структурным типом с компонентами файлового или объектного типа: конструкции file of file или file of object не допускаются.

25
Invalid string length
Неверная длина строки
Длина строки должна находиться в диапазоне от 1 до 255.

26
Type mismatch
Несоответствие типов
Причины:

§ несовместимые типы переменной и выражения в операторе присваивания;

§ несовместимые типы фактического и формального параметров в обращении к процедуре или функции;

§ тип выражения, несовместимый с типом индекса при индексировании массива;

§ несовместимые типы операндов в выражении.

27
Invalid subrange base type
Неправильный базовый тип интервального типа
Допустимыми являются все порядковые типы.

28
Lower bound greater than upper bound
Нижняя граница больше верхней
В описании диапазона нижняя граница больше, чем верхняя.

29
Ordinal type expected
Нужен порядковый тип
Вещественные, строковые, структурные и ссылочные типы в данном случае  не допускаются.

30
Integer constant expected
Нужна целая константа
 

31
Constant expected
Нужна константа
 

32
Integer or real constant expected
Нужна целая или вещественная константа
 

33
Pointer type identifier expected
Нужен идентификатор типа указателя
Данный идентификатор не обозначает тип указателя, как это требуется.

34
Invalid function result type
Неправильный тип результата функции
Правильными типами результата функции являются все простые типы, а также строковые и ссылочные типы.

35
Label identifier expected
Нужен идентификатор метки
Метка не обозначена с помощью идентификатора, как это требуется.

36
BEGIN expected
Нужен BEGIN
 

37
END expected
Нужен END
Следует проверить соответствие ключевых слов BEGIN и END.

38
Integer expression expected
Нужно выражение типа INTEGER
Предыдущее выражение должно иметь целочисленный тип INTEGER

39
Ordinal expression expected
Нужно выражение порядкового типа
Предшествующее выражение должно иметь порядковый тип.

40
Boolean expression expected
Нужно выражение типа BOOLEAN
Предшествующее выражение должно иметь тип BOOLEAN

41
Operand types do not math operator
Типы операндов не соответствуют оператору
Данный оператор не может быть применен к операндам этого типа, например, нельзя ‘A’ разделить на ‘2’.

42
Error in expression
Ошибка в выражении
Данный идентификатор не может участвовать в выражении указанным образом.

43
Illegal assignment
Неверное присваивание
§ Нетипизированным файлам и переменным нельзя присваивать значения.

§ Идентификатору функции можно присваивать значения только внутри раздела операторов данной функции.

44
Field identifier expected
Нужен идентификатор поля
Данный идентификатор не является полем предшествующей переменной типа «запись».

45
Object file too large
Объектный файл слишком большой
Нельзя компоновать файлы .obj, превышающие 64 Кбайт.

46
Undefined external
Не определена внешняя процедура
Внешняя процедура или функция не имеет соответствующего определения Public в объектном файле. Убедитесь, что вы указали все объектные файлы в директивах   {$L имя_файла}, и проверьте написание идентификаторов процедуры или функции в файле .asm.

47
Invalid object file record
Неправильная запись объектного файла
Файл .obj содержит неверную объектную запись. Убедитесь, что данный файл является действительно файлом .obj.

48
Code segment too large
Сегмент кода слишком большой
Максимальный размер кода программы или программного модуля равняется 65 520 байт. Если вы компилируете программный модуль, разбейте его на два или более программных модулей.

49
Data segment too large
Сегмент данных слишком велик
Максимальный размер сегмента данных равен 65 520 байт, включая данные, описываемые используемыми программными модулями. Если вам нужно большее количество глобальных данных, опишите большие структуры с помощью указателей и выделяйте для них память динамически с помощью процедуры New.

50
DO expected
Нужен оператор DO
 

51
Invalid PUBLIC definition
Неверное определение PUBLIC
§ Две или более директивы PUBLIC на языке ассемблера определяют один и тот же идентификатор.

§ Объектный файл .obj определяет идентификаторы PUBLIC, которые не находятся в сегменте CODE.

52
Invalid EXTRN definition
Неверное определение EXTRN
§ На идентификатор имеется ссылка в директиве EXTRN на языке ассемблера, но он не описан в программе или модуле на Паскале или в интерфейсной части какого-либо из используемых модулей.

§ Идентификатор обозначает абсолютную переменную.

§ Идентификатор обозначает процедуру или функцию типа inline.

53
Too many EXTRN definition
Слишком много определений EXTRN
Невозможно обработать файлы .obj, если имеется более чем 256 EXTRN.

54
OF expected
Требуется OF
 

55
INTERFACE expected
Требуется интерфейсный раздел
 

56
Invalid relocatable reference
Недопустимая перемещаемая ссылка
§ Файл .obj содержит данные и перемещаемые ссылки в сегментах, отличных от CODE. Например, вы пытаетесь описать инициализированные переменные в сегменте DATA.

§ Файл .com содержит ссылки с размерами в байтах на перемещаемые идентификаторы. Такая ошибка происходит в случае, если вы используете операторы HIGH и DOWN с перемещаемыми идентификаторами или если вы ссылаетесь в директивах DB на перемещаемые идентификаторы.

§ Операнд ссылается на перемещаемый идентификатор, который не был определен в сегменте CODE или в сегменте DATA.

§ Операнд ссылается на процедуру EXTRN или функцию EXTRN со смещением, например CALL SortProc+8.

57
Then expected
Требуется THEN
В нужном месте отсутствует слово then.

58
TO or DOWNTO expected
Требуется TO или DOWNTO
В нужном месте отсутствует ключевое слово TO или DOWNTO.

59
Undefined forward
Не определено опережающее описание
§ Процедура или функция были описаны в интерфейсном разделе программного модуля, но их определение отсутствует в разделе реализации.

§ Процедуры или функции были описаны с помощью описания forward, но их определение не найдено.

61
Invalid typecast
Неверное преобразование типа
§ Размеры ссылки на переменную и тип результата отличаются друг от друга при изменении типа переменной.

§ Вы пытаетесь осуществить приведение типа выражения, когда разрешается только ссылка на переменную, процедуру или функцию.

62
Division by zero
Деление на нуль
Предшествующая операция пытается выполнить деление на нуль.

63
Invalid file type
Неверный файловый тип
Данный файловый тип не обслуживается процедурой обработки файлов. Например, вы пытаетесь использовать процедуру Readln для типизированного файла или процедуру Seek для текстового.

64
Cannot Read or Write variables of this type
Нельзя считать или записать переменные данного типа
Процедуры Read и Readln могут считывать переменные символьного, целого, вещественного и строкового типа.

65
Pointer variable expected
Нужно использовать переменную-указатель
Предыдущая переменная должна иметь тип «указатель».

66
String variable expected
Нужна строковая переменная
Предшествующая переменная должна иметь строковый тип.

67
String expression expected
Нужно выражение строкового типа
Предшествующее выражение должно иметь строковый тип.

68
Circular unit reference
Циклическая ссылка на модуль
Два модуля не могут ссылаться друг на друга в разделе interface, но могут это делать в разделе implementation. Переупорядочите операторы uses таким образом, чтобы циклические ссылки имели место только в разделе implementation.

69
Unit name mismatch
Несоответствие имен программных модулей
Имя программного модуля, найденное в файле .tpu, не соответствует имени, указанному в операторе uses.

70
Unit version mismatch
Несоответствие версий программных модулей
Один или несколько программных модулей, используемых данной программой, были изменены после их компиляции. Воспользуйтесь командой Compile?Make или Compile?Build в интегрированной интерактивной среде программирования, что позволит автоматически скомпилировать программные модули, нуждающиеся в перекомпиляции.

71
Internal stack overflow
Переполнение внутреннего стека
Внутренний стек компилятора исчерпан из-за слишком большого уровня вложенности операторов. Переорганизуйте исходный код и уменьшите уровень вложенности. Например, переместите внутренние уровни вложенных операторов в отдельную процедуру.

72
Unit file format error
Ошибка формата файла программного модуля
Файле .tpu является недействительным. Возможно, он создан с помощью старой версии Turbo Pascal или Borland Pascal. В этом случае нужно перекомпилировать исходный код модуля и создать новый модуль.

73
Implementation expected
Требуется раздел реализации
Ключевое слово Implementation отсутствует там, где оно должно быть. Возможно, вы включили реализацию процедуры, функции или метода в интерфейсную часть модуля.

74
Constant and case types do not math
Типы констант и выражения оператора Case не соответствуют друг другу
Тип константы оператора Case несовместим с выражением селектора в операторе выбора

75
Record variable expected
Нужна переменная типа запись
Предшествующая переменная должна иметь тип «запись».

76
Constant out of range
Константа выходит за допустимые границы
§ Вы пытаетесь указать массив с константами, нарушающими границы.

§ Вы пытаетесь присвоить константу вне диапазона переменной.

§ Вы пытаетесь передать константу вне диапазона в качестве параметра процедуре или функции.

77
File variable expected
Нужна файловая переменная
Предшествующая переменная должна иметь файловый тип.

78
Pointer expression expected
Нужно выражение типа указатель
Предшествующая переменная должна иметь ссылочный тип.

79
Integer or real expression expected
Нужно выражение типа real  или integer
Предшествующее выражение должно иметь тип real  или integer.

80
Label not within current block
Метка не находится внутри текущего блока
Оператор goto не может ссылаться на метку, находящуюся вне текущего блока.

81
Label already defined
Метка уже определена
Данная метка уже помечает оператор.

82
Undefined label in processing statement part
Неопределенная метка в предшествующем разделе операторов
Данная метка была описана, и на нее осуществлялась ссылка в предшествующем разделе операторов, но она не определена.

83
Invalid @ argument
Недействительный аргумент оператора @
Действительными аргументами являются ссылки на переменные и идентификаторы процедур или функций.

84
Unit expected
Нужно ключевое слово Unit
Не указано ключевое слово Unit, как это требуется.

85
« expected
Нужно указать «;»
Не указана, где это требуется, точка с запятой.

86
«:» expected
Нужно указать «:»
Не указана, где это требуется, двоеточие.

87
«,» expected
Нужно указать «,»
Не указана, где это требуется, запятая.

88
«(» expected
Нужно указать «(»
Не указана, где это требуется, открывающаяся круглая скобка.

89
«)» expected
Нужно указать «)»
Не указана, где это требуется, закрывающаяся круглая скобка.

90
«=» expected
Нужно указать «=»
Нужно указать знак равенства.

91
«:=» expected
Нужно указать «:=»
Требуется использовать операцию присваивания.

92
« or «(.» expected
Нужно «[» or «(.»
Требуется указать квадратную скобку или «(. ».

93
« or «.expected
Нужно «]» or «.)»
Требуется указать квадратную скобку или «.) ».

94
« expected
Нужно «.»
Требуется указать точку. Убедитесь, что тип не используется как переменная или что именем программы не переопределяется важный идентификатор другого модуля.

95
«..» expected
Нужно «..»
Требуется указать точки. Там, где это нужно, не указан диапазон.

96
Too many variables
Слишком много переменных
Общий размер глобальных переменных, описанных в программе или программном модуле, не может превышать 64 Кбайт.

Размер локальных переменных, описанных в программе или функции, не может превышать 64 Кбайт.

97
Invalid for control variable
Недопустимая управляющая переменная оператора for
Управляющая переменная оператора for должна быть переменной перечисляемого типа, определенной в разделе описаний текущей подпрограммы.

98
Integer variable expected
Нужна переменная целого типа
Предшествующая переменная должна иметь тип integer.

99
Files are not allowed here
Здесь не допускаются файлы
Типизированная константа не может иметь файловый тип.

100
String length mismatch
Несоответствие длины
Длина строковой константы не соответствует количеству элементов символьного массива.

101
Invalid ordering of fields
Неверный порядок полей
Поля в константе типа «запись» должны указываться в порядке их описания.

102
String constant expected
Нужна константа строкового типа
 

103
Integer or real variable expected
Нужна переменная типа integer или real
Предшествующая переменная должна иметь целый или вещественный тип.

104
Character expression
 
Ожидается символьные выражения

105
Compilation aborted
 
Компиляция прервана

106
Error in statement
 
Ошибка в операторе

107
Error in type
 
Ошибка в типе

108
Expected
 
Ожидается имя

109
Invalid floating point operation
 
 Неправильная операция для вещественных операндов

110
 Ordinal variable expected
 
Ожидается переменная целого или символьного типа

111
 Too many symbols 
 
Слишком много символов

112
Undefined type
 
Неопределенный тип

113
Abnormal program termination
 
Ненормальное окончание программы

114
Ctrl-Break to quit
 
нажмите CTRL и Break для входа

115
Disk is write-protected
 
Диск защищен от записи

116
Disk read error
 
Ошибка записи на диск

117
Disk write error
 
Ошибка записи на диск

118
Drive not ready
 
дисковод не готов (нет дискеты)

119
Error on execute 
 
Ошибка исполнения

120
Floating point overflow
 
Вещественное переполнение

121
Hardware failure
 
Ошибка оборудования

122
Heap overflow error
 
Не хватает основной памяти

123
I/O checking
 
Ошибка ввода/вывода

124
Invalid Breakpoint
 
Неправильная точка останова

125
Invalid format specifier
 
Неправильный формат

126
No debug info
 
Не задана информация для отладки

127
Not enough memory
 
Не хватает памяти

128
Press any key
 
Нажмите любую клавишу

129
Program terminated
 
Исполнение программы прекращено

130
Range check error
 
Выход индекса за пределы массива

131
Runtime error
 
Ошибка во время исполнения

132
Stack overflow error
 
Ошибка по переполнению стека

133
Too many breakpoints
 
Слишком много точек останова

134
Type EXIT to return to Turbo Pascal
 
Введите Exit для возврата в Турбо Паскаль

135
User Break
 
Пользователь прервал исполнение программы

П3.
СООБЩЕНИЯ И КОДЫ ОШИБОК

П3.1. СООБЩЕНИЯ
ОБ ОШИБКАХ ПЕРИОДА КОМПИЛЯЦИИ

Среда Турбо Паскаля дает исчерпывающую
информацию о характере и месте обнаруженной
компилятором ошибки. При обнаружении
ошибки среда автоматически загружает
в окно редактора исходный файл и помещает
курсор около того места, где в исходном
тексте обнаружена ошибка. При этом в
верхней строке редактора появляется
диагностическое сообщение. После нажатия
на любую клавишу (кроме FI) верхняя строка
восстанавливает свой первоначальный
вид и среда переходит к режиму
редактирования. Если после появления
сообщения об ошибке нажать F1, на экране
появится окно справочной службы с
детальной информацией об ошибке и
рекомендациями по ее устранению.
Некоторые ошибки в исходном тексте
обнаруживаются не сразу, а в ходе
продолжающегося контекстного разбора.
Например, несоответствие типов в
операторе присваивания не может быть
обнаружено до тех пор, пока не будет
вычислено целиком выражение в правой
части этого оператора. В таких случаях
ищите ошибку слева от курсора или в
предыдущей строке текста.

Ниже приводятся сообщения об ошибках
в том виде, в каком они появляются в
верхней строке редактора, а также перевод
сообщений справочной службы.

На экране после кода ошибки (цифры) нет
точки, поэтому ее нет и в соответствующем
месте текста.

1 Out of memory  (Выход
за границы памяти).

Компилятору не хватает памяти. Имеется
ряд возможных решений этой проблемы:

  • если в опции COMPILE/DESTINATION установлено
    значение MEMORY, замените эту опцию на
    DISK;

  • если в опции OPTIONS/LINKER/LINK BUFFER установлено
    значение MEMORY, замените эту опцию т DISK;

  • если Вы используете резидентные
    обслуживающие программы, такие как
    SIDEKICK, NORTON, удалите их из памяти;

  • если Вы используете интегрированную
    среду TVRBO.EXE, то попробуйте воспользоваться
    компилятором ТРС.ЕХЕ — он занимает
    меньше памяти.

Если ни одна из рекомендаций не помогает,
то, возможно, Ваша программа просто
слишком велика, чтобы компилировать ее
в таком объеме памяти. В этом случае Вы
должны разбить ее на два или более
модулей.

2 Identifier
expected (He указан
идентификатор).

В этом месте должен находиться
идентификатор. Возможно, Вы пытаетесь
использовать в качестве идентификатора
зарезервированное слово.

3 Unknown identifier (Неизвестный
идентификатор). 

Этот идентификатор не был описан.

4 Duplicate identifier (Двойной
идентификатор). 

Попытка дважды описать один и тот же
идентификатор.

5 Syntax error (Синтаксическая
ошибка).

В исходном тексте найден недопустимый
символ. Возможно, Вы забыли заключить
в апострофы строковую константу.

6 Error in real constant (Ошибка
в вещественной константе). 

Синтаксис констант вещественного типа
описан в гл.4.

7 Error in integer constant
(Ошибка в целой константе).

Синтаксис констант целого типа описан
в гл.4. Учтите, что после целых действительных
чисел, превышающих диапазон представления
целых чисел (-2147483648..+2147483647), должны
ставиться точка и ноль, например,
12345678912.0.

8 String constant exceeds line
(Строковая константа превышает допустимые
размеры).

Вероятно, Вы забыли поставить апостроф
в конце строковой константы.

9 Too many nested files (Слишком
много вложенных файлов).

Компилятор допускает не более пяти
уровней вложенности включаемых файлов
(т.е. в исходном файле есть ссылка на
включаемый файл, в котором есть ссылка
на еще один включаемый файл и т.д.).

10 Unexpected end of file (He
найден конец файла).

Вы могли получить это сообщение об
ошибке по одной из следующих причин:

  • Ваш исходный файл закончился перед
    последним END основного раздела операторов;
    вероятно, в Вашей программе неодинаковое
    количество операторов BEGIN и END;

  • включаемый файл заканчивается в середине
    раздела операторов; каждый раздел
    операторов должен целиком помещаться
    в одном файле;

  • Вы не закончили комментарий.

11 Line too long (Слишком
длинная строка).

Максимальная длина строки, обрабатываемой
компилятором, равна 126 символам (обратите
внимание: редактор среды может обрабатывать
строки практически неограниченной
длины).

12 Type identifier expected
(Здесь нужен идентификатор типа). 

Не указан тип идентификатора.

13 Too many open files (Слишком
много открытых файлов).

Появление этой ошибки означает, что
конфигурационный файл CONFIG.SYS операционной
системы не включает параметр FlLES=xx или
этот параметр указывает слишком мало
файлов. Увеличьте число файлов до нужного
значения, например, до 80.

14 Invalid file name (Неверное
имя файла). 

Имя файла неверно или указан несуществующий
путь.

15 File not found (Файл не
найден). 

Файл не был найден в просмотренных
каталогах.

16 Disk full (Диск
заполнен). 

Удалите некоторые файлы или воспользуйтесь
новым диском.

17 Invalid compiler directive
(Неправильная директива компилятора). 

Неверная буква в директиве компилятора,
один из параметров директивы компилятора
неверный, или Вы пользуетесь глобальной
директивой компилятора, когда компиляция
тела программы уже началась.

18 Too many files (Слишком
много файлов).

В компиляции программы или программного
модуля участвуют слишком много файлов.
Попытайтесь не использовать так много
файлов, например, объединяя включаемые
файлы или делая короче имена файлов.

19 Undefined type in pointer
definition (Неопределенный тип в объявлении
указателя).

Попытка объявить типизированный
указатель, связанный с ранее не объявленным
типом данных.

20 Variable identifier expected
(Отсутствует идентификатор переменной). 

На этом месте должен быть идентификатор
переменной.

21 Error in type (Ошибка в
объявлении типа). 

Объявление типа не может начинаться с
этого символа.

22 Structure too large (Слишком
большая структура). 

Максимально допустимый размер любого
структурного типа составляет 65520 байт.

23 Set base type of range
(Базовый тип множества нарушает границы). 

Базовый тип множества должен представлять
собой тип-диапазон с границами в пределах
от 0 до 255 или перечисляемый тип с не
более чем 256 значениями.

24 File components may not be files (Компонентами файла
не могут быть файлы) .

Конструкции типа file of file (файл файлов)
или file of object (файл объектов) не допускаются.
Нельзя объявлять любые структурные
типы, которые используют в качестве
компонентов объекты или файлы.

25 Invalid string length
(Неверная длина строки). 

Объявляемая длина строки должна
находиться в диапазоне от 1 до 255.

26 Type mismatch (Несоответствие
типов).

Это сообщение может быть вызвано
следующими причинами:

  • несовместимые типы переменной и
    выражения в операторе присваивания;

  • несовместимые типы фактического и
    формального параметров в обращении к
    процедуре или функции;

  • тип выражения не совместим с типом
    индекса при индексировании массива;

  • несовместимые типы операндов в выражении.

27 Invalid subrange base
type(Неправильный базовый тип для
типа-диапазона).

Допустимыми базовыми типами являются
все порядковые типы.

28 Lower bound greater than upper
bound (Нижняя граница больше верхней). 

Описание типа-диапазона содержит
неправильные границы.

29 Ordinal type expected (Нужен
порядковый тип) .

Вещественные, строковые, структурные,
процедурные типы и указатели в данном
месте программы не допускаются.

30 Integer constant expected
(Нужна целая константа).

31 Constant expected (Нужна
константа).

32 Integer or real constant
expected (Нужна целая или вещественная
константа) .

33 Tуре identifier expected
(Нужен идентификатор типа)

34 Invalid function result type
(Неправильный тип результата функции) 

Правильными типами результата функции
являются все простые типы, строковые
типы и указатели.

35 Label identifier expected
(Нужен идентификатор метки).

Метка не обозначена с помощью
идентификатора, как это требуется из
контекста программы.

36 BEGIN expected (Нужен
BEGIN).

37 END expected (Нужен END).

38 Integer expression expected
(Нужно выражение типа INTEGER).

39 Ordinal expression expected
(Нужно выражение перечисляемого типа).

40 Boolean expression expected
(Нужно выражение типа BOOLEAN).

41 Operand types do not match
operator (Типы операндов не соответствуют
операции).

Данная операция не может быть применена
к указанным операндам, например, ‘ А’ div
‘ 2 ‘ .

42 Error in expression (Ошибка
в выражении).

Данный символ не может участвовать в
выражении указанным образом. Возможно,
Вы забыли указать операцию между двумя
операндами.

43 Illegal assignment (Неверное
присваивание).

Файлам и нетипизированным переменным
нельзя присваивать значения. Идентификатору
функции можно присвоить значение только
внутри раздела операторов данной
функции.

44 Field identifier expected
(Нужен идентификатор поля).

Попытка использовать запись целиком в
том месте, где требуется ссылка на
какое-либо поле записи.

45 Object file too large
(Объектный файл слишком большой). 

Турбо Паскаль не может компоновать
файлы .OBJ больше 64 Кбайт.

46 Undefined external
(Неопределенная внешняя процедура).

Внешняя процедура или функция не имеет
соответствующего определения PUBLIC в
объектном файле. Убедитесь, что Вы
указали все объектные файлы в директивах
{$L <имя .OBJ-файлa>} и проверьте написание
идентификаторов процедуры или функции
в файле . ASM.

47 Invalid object file record
(Неправильная запись объектного файла). 

Файл .OBJ содержит неверную объектную
запись. Убедитесь, что данный файл
является действительно файлом .OBJ.

48 Code segment too large
(Сегмент кода слишком большой).

Максимальный размер кода программы или
программного модуля равняется 65520
байтам. Разбейте Вашу программу или
модуль на два или более модулей.

49 Data segment too large
(Сегмент данных слишком велик).

Максимальный размер сегмента данных
программы равен 65520 байтам, включая
данные, используемые программными
модулями. Если Вам нужно большее
количество глобальных данных, опишите
большие структуры с помощью указателей
и выделяйте для них память динамически
с помощью процедуры NEW.

50 DO expected (Нужен
оператор DO).

51 Invalid PUBLIC definition
(Неверное PUBLIC-определение). 

Возможные причины сообщения:

  • данный идентификатор получил тип PUBLIC
    с помощью соответствующей директивы
    языка ассемблера, но не соответствует
    описанию EXTERNAL в программе или программном
    модуле Паскаля;

  • две или более директивы PUBLIC языка
    ассемблера определяют один и тот же
    идентификатор;

  • файлы .OBJ определяют символы PUBLIC, не
    находящиеся в сегменте CODE.

52 Invalid EXTRN definition
(Неправильное EXTRN-определение). 

Возможные причины сообщения:

  • программа на ассемблере ссылается с
    помощью директивы EXTRN на идентификатор,
    который не описан в программе на Паскале
    и не был описан в интерфейсных секциях
    используемых программных модулей;

  • ассемблерная программа ссылается на
    идентификатор, обозначающий абсолютную
    переменную (т.е. определенную словом
    ABSOLUTE);

  • ассемблерная программа ссылается на
    идентификатор процедуры или функции
    типа INLINE.

53 Too many EXTRN definition
(Слишком много EXTRN-определений). 

Турбо Паскаль не может обрабатывать
файлы .OBJпри более чем 256 определениях
EXTRN.

54 OF expected (Требуется
OF).

55 INTERFACE expected (Требуется
интерфейсная секция).

56 Invalid relocatable reference
(Неправильная перемещаемая ссылка). 

Возможные причины сообщения:

  • файл .OBJ содержит данные и перемещаемые
    ссылки в сегментах, отличных от CODE.
    Например, Вы пытаетесь описать
    инициализированные переменные в
    сегменте DATA;

  • файл .OBJ содержит ссылки с размерами в
    байтах на перемещаемые символы. Такая
    ошибка происходит в случае, если Вы
    используете операторы HIGH и LOW с
    перемещаемыми символами или если Вы
    ссылаетесь в директивах DB на перемещаемые
    символы;

  • операнд ссылается на перемещаемый
    символ, который не был определен в
    сегменте CODE или в сегменте DATA;

  • операнд ссылается на процедуру EXTRN или
    функцию EXTRN со сдвигом, например, CALL
    SortProc+8.

57 THEN expected (Требуется
THEN).

58 TO or DOWNTO expected
(Требуется ТО или DOWNTO).

59 Undefined forward
(Неопределенное опережающее описание). 

Возможные причины сообщения:

  • была рписана процедура или функция в
    интерфейсной секции программного
    модуля, но ее определение отсутствует
    в секции реализации;

  • процедуры или функции были описаны с
    помощью опережающего описания, но их
    определение не найдено.

60 Too many procedures (Слишком
иного процедур).

Турбо Паскаль допускает не более 512
процедур или функций в одном модуле.
Если Вы компилируете программу, то
поместите некоторые процедуры или
функции в модули. Если Вы компилируете
модуль, то разбейте его на два или
несколько модулей.

61 Invalid typecast (Неверное
преобразование типа). 

Возможные причины сообщения:

  • Вы пытаетесь разместить в памяти,
    занимаемой некоторой переменной,
    значение выражения другого типа э
    случае, когда размер размещаемого
    значения не равен размеру переменной;

  • Вы пытаетесь осуществить преобразование
    типа выражения, когда разрешается
    только ссылка на переменную, процедуру
    или функцию.

62 Division by zero (Деление
на ноль). 

Предшествующая операция пытается
выполнить деление на ноль.

63 Invalid file type (Неверный
файловый тип).

Данный файловый тип не обслуживается
процедурой обработки файлов. Например,
процедура READLN используется для
типизированного файла или процедура
SEEK — для текстового файла.

64 Cannot Read or Write variables
of this type (Нет возможности считать или
записать переменные данного типа). 

Нарушены следующие ограничения:

  • процедуры READ и READLN могут считывать
    переменные символьного, целого,
    действительного и строкового типов;

  • процедуры WRITE и WRITELN могут выводить
    переменные символьного, целого,
    действительного, булевского и строкового
    типов.

65 Pointer variable expected
(Нужно использовать переменную-указатель). 

Предыдущая переменная должна быть
указателем.

66 String variable expected
(‘Нужна строковая переменная) . 

Предшествующая переменная должна иметь
строковый тип.

67 String expression expected
(Нужно выражение строкового типа). 

Предшествущее выражение должно иметь
строковый тип.

68 Circular unit reference
(Перекрестная ссылка модулей). 

Два модуля ссылаются друг на друга:

Unit A;      
Unit В;

Uses В;      
Uses А; 

…..        
…..

69 Unit name mismatch
(Несоответствие имен программных
модулей). 

Имя программного модуля, найденное в
файле .TPU, не соответствует имени,
указанному в предложении USES.

70 Unit version mismatch
(Несоответствие версий модулей).

Один или несколько программных модулей,
используемых данной программой, были
изменены после их компиляции. Воспользуйтесь
опцией COMPILE/MAKE или COMPILE/BUILD в интегрированной
среде или опциями /М или /В в компиляторе
ТРС, что позволит автоматически
скомпилировать программные модули,
нуждающиеся в перекомпиляции.

71 Duplicate unit name (Повторное
имя программного модуля). 

Вы уже указали этот программный модуль
в операторе USES.

72 Unit file format error (Ошибка
формата файла модуля). 

Файл .TPU не соответствует стандарту
Турбо Паскаля.

73 IMPLEMENTATION expected
(Отсутствует исполняемая часть модуля).

74 Constant and case types do not
match (Типы констант и тип выражения
оператора CASE не соответствуют друг
другу).

Тип константы оператора CASE не совместим
с выражением в операторе варианта.

75 Record variable expected
(Нужна переменная типа запись) . 

Предшествующая переменная должна иметь
тип запись.

76 Constant out of range
(Константа нарушает границы). 

Возможные причины сообщения:

  • Вы пытаетесь указать индекс массива,
    выходящий за его границы;

  • Вы пытаетесь присвоить переменной
    значение, выходящее за границы, допустимые
    для типа этой переменной;

  • Вы пытаетесь передать в качестве
    фактического параметра процедуре или
    функции константу, выходящую за границы,
    допустимые для типа соответствующего
    формального параметра.

77 File variable expected (Нужна
файловая переменная). 

Предшествующая переменная должна иметь
файловый тип.

78 Pointer expression expected
(Нужно выражение типа указатель). 

Предшествующее выражение должно иметь
тип указателя.

79 Integer or real expression
expected (Нужно выражение вещественного
или целого типа).

Предшествующее выражение должно иметь
тип REAL или INTEGER.

80 Label not within current block
(Метка не находится внутри текущего
блока) .

Оператор GOTO не может ссылаться на метку,
находящуюся вне текущего блока.

81 Label already defined (Метка
уже определена). 

Данная метка уже помечает оператор.

82 Undefined label in processing
statement part (Неопределенная метка в
предшествующем разделе операторов).

Данная метка была описана, и на нее
осуществлялась ссылка в предшествующем
разделе операторов, но она не указана
в тексте программы.

83 Invalid @ argument
(Неправильный аргумент операции @). 

Правильными аргументами являются
идентификаторы переменных, процедур и
функций.

84 Unit expected (Нужно
кодовое слово UNIT).

85«;» expected (Нужно
указать»;») .

86«:» expected (Нужно
указать*:») .

87«,» expected (Нужно
указать»,») .

88 «(» expected (Нужно
указать «(»).

89«)» expected (Нужно
указать»)»).

90 «=» expected (Нужно
указать «=») .

91«:=» expected (Нужно
указать»:=»).

92 «[» or «(.» expected
(Нужно указать «[» или «(.»).

93«]» or «.)» expected (Нужно
указать»]» или».)»).

94».» expected (Нужно
указать».») ,

95«..» expected (Нужно
указать»..») .

96 Too many variables (Слишком
много переменных).

Нарушены следующие ограничения:

  • общий размер глобальных переменных,
    описанных в программе или программном
    модуле, не может превышать 64 Кбайт;

  • размер локальных переменных, описанных
    в процедуре или функции, не может
    превышать 64 Кбайт. .

97 Invalid FOR control
variable(Неправильный параметр цикла
оператора FOR).

Параметр цикла оператора FOR должен быть
переменной порядкового типа, определенной
в разделе описаний текущей подпрограммы.

98 Integer variable expected
(Нужна переменная целого типа). 

Предшествующая переменная должна иметь
целый тип.

99 File and procedure types are
not allowed here (Здесь не могут использоваться
файлы или процедурные типы).

Типизированная константа не может иметь
файловый или процедурный тип.

100 String length mismatch
(Несоответствие длины строки).

Длина строковой константы не соответствует
количеству элементов символьного
массива.

101 Invalid ordering of fields
(Неверный порядок полей). 

Поля в константе типа запись должны
записываться в порядке их описания.

102 String constant expected
(Нужна константа строкового типа).

103 Integer or real variable
expected (Нужна переменная типа INTEGER или
REAL).

Предшествующая переменная должна иметь
целый или вещественный тип.

104 Ordinal variable expected
(Нужна переменная порядкового типа). 

Предшествующая переменная должна иметь
порядковый тип.

105 INLINE error (Ошибка в
операторе INLINE).

Оператор «<» не допускается в сочетании
с перемещаемыми ссылками на переменные.
Такие ссылки всегда имеют размер в
слово.

106 Character expression expected
(Предшествующее выражение должно иметь
символьный тип).

107 Too many relocation items
(Слишком много перемещаемых Элементов).

Размер таблицы перемещения файла .ЕХЕ
превышает 64 Кбайта, что является верхним
пределом в Турбо Паскале. Если Вы
обнаружили эту ошибку, то это значит,
что программа просто слишком велика
для обработки компоновщиком Турбо
Паскаля. Возможно также, что она слишком
велика для выполнения в MS-DOS. В таком
случае нужно выделить в программе
основной раздел, который выполнял бы
обращение к двум или более вспомогательным
разделам с помощью процедуры ЕХЕС из
модуля DOS (см. гл.11).

108 Overflow in arithmetic
operator (Переполнение при выполнении
арифметического оператора).

Результат предыдущей арифметической
операции не лежит в диапазоне -2 146 483
648…+2 147 483 647. Исправьте операцию или
используйте вещественные типы вместо
целочисленных.

109 No enclosing FOR, WHILE or
REPEAT statment (Нет операторов, заканчивающих
операторы FOR, WHILE или REPEAT) .

Процедуры BREAK и CONTINUE не могут вызываться
вне тела оператора цикла.

110 Debug information table
overflow (Переполнение информационной
таблицы отладки).

Возможно, программа содержит более
65536 имен или 65536 строк. Отключите генерацию
таблиц отладки директивой компилятора
{$D-} или исправьте один или более модулей.

111

Ошибка с этим кодом не описана в версии
7.0 системы Турбо Паскаль.

112 CASE constant out of
range(Константа CASE нарушает допустимые
границы).

Целочисленные константы оператора CASE
должны находиться в диапазоне от -32768
до 32767.

113 Error in
statement (Ошибка
в
операторе). 

Данный символ не может быть первым
символом в операторе.

114 Cannot call an interrupt
procedure (Невозможно вызвать процедуру
прерывания) .

Вы не можете непосредственно вызвать
процедуру обработки прерывания.

115

Ошибка с этим кодом не описана в версии
7.0 системы Турбо Паскаль.

116 Must be in
8087 mode to compile this (Для
компиляции
необходим
режим
8087) .

Данная программа может быть скомпилирована
только в режиме {$N+}. В состоянии {SN-}
операции с типами SINGLE, DOUBLE, EXTENDED и СОМР
не допускаются.

117 Target address not found
(Указанный адрес не найден).

Команда COMPILE/FIND ERROR в среде Турбо Паскаля
(или поиск с помощью опции /F в командной
строке компилятора ТРС.ЕХЕ) не обнаружила
оператор, соответствующий заданному
адресу.

118 Include
files are not allowed here (Здесь
не
допускаются
включаемые
файлы)
.

Раздел операторов должен целиком
размещаться в одном файле.

119 No inherited methods are
accessible here (В этом месте программы нет
унаследованных методов).

Вы используете зарезервированное слово
INHERITED вне метода объекта или в методе,
который не унаследован от родительского
объекта.

120

Ошибка с этим кодом не описана в версии
7.0 системы Турбо Паскаль. .

121 Invalid qualifier (Неверный
квалификатор). 

Возможные причины сообщения:

  • Вы пытаетесь индексировать переменную,
    которая не является массивом;

  • Вы пытаетесь указать поля в переменной,
    которая не является записью;

  • Вы используете в качестве указателя
    переменную, которая не является
    указателем.

122 Invalid variable reference
(Недействительная ссылка на переменную).

Предыдущая конструкция удовлетворяет
синтаксису ссылки на переменную, но она
не указывает адрес памяти. Возможно Вы
вызываете функцию-указатель, но забываете
сослаться на результат с помощью знака
^.

123 Too many symbols'(Слишком
много символов) .

Программа или программный модуль
содержат более 64 Кбайт символов. Если
Вы компилируете программу с директивой
{$D+}, то попробуйте отключить эту директиву
или разбейте программу на несколько
модулей.

124 Statement part too large
(Слишком большой раздел операторов).

Турбо Паскаль ограничивает размер
раздела операторов до величины примерно
24 Кбайта. Если Вы обнаружили эту ошибку,
поместите части раздела операторов в
одну или несколько процедур и вообще
сделайте Вашу программу более
структурированной.

125

Ошибка с этим кодом не описана в версии
7.0 системы Турбо Паскаль.

126 Files must be var parameters
(Файлы должны передаваться как
параметры-переменные) .

Вы пытаетесь передать процедуре или
функции параметр-значение файлового
типа. Параметры файлового типа должны
быть параметрами-переменными.

127 Too many conditional symbols
(Слишком много условных символов). 

Недостаточно памяти для определения
условных символов (слов, управляющих
командами условной компиляции).
Попытайтесь удалить некоторые символы
или уменьшить их длину.

128 Misplaced conditional
directive (Пропущена условная директива). 

Компилятор обнаружил директиву {$ELSE}
или {$ENDIF} без соответствующих директив
{$IFDEF}, {$IFNDEF} или {$IFOPT}.

129 ENDIF
directive missing (Пропущена
директива
ENDIF).

Исходный файл закончился внутри
конструкции условной компиляции. В
исходном файле должно быть равное
количество директив {$IFxxx} и {$ENDIF}.

130 Error in
initial conditional defines (Ошибка
в
условных
определениях).

Исходные условные символы.указанные в
опции OPTIONS/COMPILER /CONDITIONAL DEFINES являются
недействительными. Турбо Паскаль требует
нуля или более идентификаторов,
разделенных пробелами, запятыми или
точками с запятой.

131 Header does not match
previous definition (Заголовок не соответствует
предыдущему определению). 

Возможные причины сообщения:

  • заголовок процедуры или функции,
    указанный в интерфейсной секции, не
    соответствует заголовку в исполняемой
    части.

  • заголовок процедуры или функции,
    указанный с помощью опережающего
    описания FORWARD, не соответствует заголовку
    найденной далее одноименной процедуры
    или функции.

132 Critical disk error
(Критическая ошибка диска).

Во время компиляции произошла критическая
ошибка диска (например, дисковод находится
в состоянии «не готов»).

133 Cannot
evaluate this expression (Нельзя
вычислить
данное
выражение).

В выражении-константе или в отладочном
выражении Вы пытаетесь использовать
неподдерживаемые средства, например,
в описании константы пытаетесь
использовать функцию SIN или вызвать в
отладочном выражении определенную
пользователем функцию.

134 Expression incorrectly
terminated (Некорректное завершение
выражения). 

Контекстуально в данном месте программы
должен быть конец выражения или оператора.

135 Invalid format specifier
(Неверный спецификатор формата). 

Используется неверный спецификатор
формата или числовой аргумент спецификатора
формата выходит за допустимые границы.

136 Invalid indirect reference
(Недопустимая косвенная ссылка).

Оператор пытается осуществить недопустимую
косвенную ссылку. Например, Вы используете
абсолютную переменную, базовая переменная
которой в текущем модуле неизвестна,
или используете программу типа INLINE, в
которой делается ссылка на переменную,
неопределенную в текущем модуле.

137 Structured variable are not
allowed here (Здесь нельзя использовать
переменную структурного типа).

Делается попытка выполнить над переменной
структурного типа неподдерживаемую
операцию. Например, Вы пытаетесь
перемножить две записи.

138 Cannot evaluate without
System unit (Нельзя вычислить выражение без
модуля SYSTEM).

Чтобы отладчик смог вычислить выражение,
в файле TURBO.TPL должен содержаться модуль
SYSTEM.

139 Cannot access this symbol
(Нет доступа к данному символу). 

Как только Вы скомпилируете программу,
все множество ее символов становится
доступным. Однако к отдельным символам
(например, к переменным) нельзя получить
доступ, пока Вы не запустите программу.

140 Invalid floating-point
operation (Недопустимая операция с плавающей
запятой) .

При выполнении операции с плавающей
запятой произошло переполнение или
деление на ноль.

141 Cannot compile overlay to
memory (Нельзя выполнить компиляцию
оверлейных модулей в память).

Программа, использующая оверлейные
модули, должна компилироваться на диск.

142 Procedure or function
variable expected (Должна использоваться
переменная процедурного типа).

В этом контексте оператор получения
адреса @ может использоваться только с
переменной процедурного типа.

143 Invalid
procedure or function reference (Недопустимая
ссылка
на
процедуру
или
функцию).

Возможные причины сообщения:

  • Вы пытаетесь вызвать процедуру в
    выражении;

  • процедура или функция, использующаяся
    в качестве параметра вызова другой
    процедуры или функции, должна
    компилироваться в состоянии {$F+} и не
    может описываться с помощью
    зарезервированных слов INLINE или INTERRUPT.

144 Cannot overlay this unit
(Этот модуль не может использоваться в
качестве оверлейного).

Попытка использовать в качестве
оверлейного модуль, который не был
скомпилирован с директивой {$O+}.

145 Too many nested scopes
(Слишком много вложений).

В программе не может быть больше 512
вложений с не более чем 128 вложениями в
каждом модуле. Вложениями считаются:

  • каждый модуль в предложении USES;

  • каждая вложенная запись в типе RECORD;

  • каждый вложенный оператор WITH.

146 File access denied (Отказано
в доступе к файлу). 

Возможные причины:

  • Вы пытаетесь использовать файл с
    атрибутом «только для чтения» в качестве
    выводного файла;

  • Вы используете имя каталога вместо
    имени выводного файла.

147 Object
type expected (Здесь
должен
быть
тип
OBJECT). 

1 Out of memory (Выход за границы памяти). 2 Identifier expected (Не указан идентификатор). 3 Unknown identifier (Неизвестный идентификатор). 4 Duplicate identifier (Двойной идентификатор). 5 Syntax error (Синтаксическая ошибка). 6 Error in real constant (Ошибка в вещественной константе). 7 Error in integer constant (Ошибка в целой константе). 8 String constant exceeds line (Строковая константа превышает допустимые размеры). 9 Too many nested files (Слишком много вложенных файлов). 10 Unexpected end of file (He найден конец файла). 11 Line too long (Слишком длинная строка) 12 Type identifier expected (Здесь нужен идентификатор типа). 13 Too many open files (Слишком много открытых файлов). 14 Invalid file name (Неверное имя файла). 15 File not found (Файл не найден). 16 Disk full (Диск заполнен). 17 Invalid compiler directive (Неправильная директива компилятора). 18 Too many files (Слишком много файлов). 19 Undefined type in pointer definition (Неопределенный тип в объявлении указателя). 20 Variable identifier expected (Отсутствует идентификатор переменной). 21 Error in type (Ошибка в объявлении типа). 22 Structure too large (Слишком большая структура). 23 Set base type of range (Базовый тип множества нарушает границы). 24 File components may not be files (Компонентами файла не могут быть файлы) . 25 Invalid string length (Неверная длина строки). 26 Type mismatch (Несоответствие типов). 27 Invalid subrange base type (Неправильный базовый тип для типа-диапазона). 28 Lower bound greater than upper bound (Нижняя граница больше верхней). 29 Ordinal type expected (Нужен порядковый тип). 30 Integer constant expected (Нужна целая константа). 31 Constant expected (Нужна константа). 32 Integer or real constant expected (Нужна целая или вещественная константа) . 33 Type identifier expected (Нужен идентификатор типа) 34 Invalid function result type (Неправильный тип результата функции) 35 Label identifier expected (Нужен идентификатор метки). 36 BEGIN expected (Нужен BEGIN). 37 END expected (Нужен END). 38 Integer expression expected (Нужно выражение типа INTEGER). 39 Ordinal expression expected (Нужно выражение перечисляемого типа). 40 Boolean expression expected (Нужно выражение типа BOOLEAN). 41 Operand types do not match operator (Типы операндов не соответствуют операции). 42 Error in expression (Ошибка в выражении). 43 Illegal assignment (Неверное присваивание). 44 Field identifier expected (Нужен идентификатор поля) . 45 Object file too large (Объектный файл слишком большой). 46 Undefined external (Неопределенная внешняя процедура). 47 Invalid object file record (Неправильная запись объектного файла). 48 Code segment too large (Сегмент кода слишком большой). 49 Data segment too large (Сегмент данных слишком велик). 50 DO expected (Нужен оператор DO). 51 Invalid PUBLIC definition (Неверное PUBLIC-определение). 52 Invalid EXTRN definition (Неправильное EXTRN-определение). 53 Too many EXTRN definition (Слишком много EXTRN-определений). 54 OF expected (Требуется OF). 55 INTERFACE expected (Требуется интерфейсная секция). 56 Invalid relocatable reference (Неправильная перемещаемая ссылка). 57 THEN expected (Требуется THEN). 58 TO or DOWNTO expected (Требуется TO или DOWNTO). 59 Undefined forward (Неопределенное опережающее описание). 60 Too many procedures (Слишком много процедур). 61 Invalid typecast (Неверное преобразование типа). 62 Division by zero (Деление на ноль). 63 Invalid file type (Неверный файловый тип). 64 Cannot Read or Write variables of this type (Нет возможности считать или записать переменные данного типа). 65 Pointer variable expected (Нужно использовать переменную-указатель). 66 String variable expected (Нужна строковая переменная). 67 String expression expected (Нужно выражение строкового типа). 68 Circular unit reference (Перекрестная ссылка модулей). 69 Unit name mismatch (Несоответствие имен программных модулей). 70 Unit version mismatch (Несоответствие версий модулей). 71 Duplicate unit name (Повторное имя программного модуля). 72 Unit file format error (Ошибка формата файла модуля). 73 IMPLEMENTATION expected (Отсутствует исполняемая часть модуля). 74 Constant and case types do not match (Типы констант и тип выражения опе- ратора CASE не соответствуют друг другу). 75 Record variable expected (Нужна переменная типа запись). 76 Constant out of range (Константа нарушает границы). 77 File variable expected (Нужна файловая переменная). 78 Pointer expression expected (Нужно выражение типа указатель). 79 Integer or real expression expected (Нужно выражение вещественного или целого типа). 80 Label not within current block (Метка не находится внутри текущего блока) 81 Label already defined (Метка уже определена). 82 Undefined label in processing statement part (Неопределенная метка в предшествующем разделе операторов). 83 Invalid @ argument (Неправильный аргумент операции @). 84 Unit expected (Нужно кодовое слово UNIT). 85 ”;” expected (Нужно указать”;”). 86 ”:” expected (Нужно указать”:”). 87 ”,”expected (Нужно указать”,”). 88 ”(” expected (Нужно указать ”(”). 89 ”)” expected (Нужно указать”)”). 90 ”=” expected (Нужно указать”=”) 91 ”:=” expected (Нужно указать”:=”) 92 ”[” or ”(.”expected (Нужно указать ”[” или ”(.”). 93 ”]” or ”.)” expected (Нужно указать”]” или ”.)”). 94 ”.” expected (Нужно указать”.”) 95 ”..” expected (Нужно указать”..”). 96 Too many variables (Слишком много переменных). 97 Invalid FOR control variable (Неправильный параметр цикла оператора FOR). 98 Integer variable expected (Нужна переменная целого типа). 99 File and procedure types are not allowed here (Здесь не могут использоваться файлы или процедурные типы). 100 String length mismatch (Несоответствие длины строки). 101 Invalid ordering of fields (Неверный порядок полей). 102 String constant expected (Нужна константа строкового типа). 103 Integer or real variable expected (Нужна переменная типа INTEGER или REAL). 104 Ordinal variable expected (Нужна переменная порядкового типа). 105 INLINE error (Ошибка в операторе INLINE) 106 Character expression expected (Предшествующее выражение должно иметь символьный тип). 107 Too many relocation items (Слишком много перемещаемых элементов). 108 Overflow in arithmetic operator (Переполнение при выполнении арифметического оператора). 109 No enclosing FOR, WHILE or REPEAT statement (Нет операторов, заканчивающих операторы FOR, WHILE или REPEAT). 110 Debug information table overflow (Переполнение информационной таблицы отладки) 111 N/A 112 CASE constant out of range (Константа CASE нарушает допустимые границы) . 113 Error in statement (Ошибка в операторе). 114 114 Cannot call an interrupt procedure (Невозможно вызвать процедуру npерывания). 115 N/A 116 Must be in 8087 mode to compile this (Для компиляции необходим режим 8087). 117 Target address not found (Указанный адрес не найден). 118 118 Include files are not allowed here (Здесь не допускаются включаемые файлы). 119 No inherited methods are accessible here (В этом месте программы нет унаследованных методов). 120 N/A 121 Invalid qualifier (Неверный квалификатор). 122 Invalid variable reference (Недействительная ссылка на переменную). 123 Too many symbols (Слишком много символов). 124 Statement part too large (Слишком большой раздел операторов). 125 N/A 126 Files must be var parameters (Файлы должны передаваться как параметры-переменные). 127 Too many conditional symbols (Слишком много условных символов). 128 Misplaced conditional directive (Пропущена условная директива). 129 ENDIF directive missing (Пропущена директива ENDIF). 130 Error in initial conditional defines (Ошибка в условных определениях). 131 Header does not match previous definition (Заголовок не соответствует предыдущему определению). 132 Critical disk error (Критическая ошибка диска). 133 Cannot evaluate this expression (Нельзя вычислить данное выражение). 134 Expression incorrectly germinated (Некорректное завершение выражения). 135 Invalid format specifier (Неверный спецификатор формата). 136 Invalid indirect reference (Недопустимая косвенная ссылка). 137 Structured variable are not allowed here (Здесь нельзя использовать переменную структурного типа). 138 Cannot evaluate without System unit (Нельзя вычислить выражение без мо-дуля SYSTEM). 139 Cannot access this symbol (Нет доступа к данному символу). 140 Invalid floating-point operation (Недопустимая операция с плавающей запятой). 141 Cannot compile overlay to memory (Нельзя выполнить компиляцию оверлейных модулей в память). 142 Procedure or function variable expected (Должна использоваться перемен- ная процедурного типа). 143 Invalid procedure or function reference (Недопустимая ссылка на процедуру или функцию) . 144 Cannot overlay this unit (Этот модуль не может использоваться в качестве оверлейного). 145 Too many nested scopes (Слишком много вложений). 146 File access denied (Отказано в доступе к файлу). 147 Object type expected (Здесь должен быть тип OBJECT) . 148 object types are not allowed (Нельзя объявлять локальные объекты). 149 VIRTUAL expected (Пропущено слово VIRTUAL). 150 Method identifier expected (Пропущен идентификатор инкапсулированного правила). 151 Virtual constructor are not allowed (Конструктор не может быть виртуальным). 153 Destructor identifier expected (Пропущен идентификатор деструктора). 154 Fail only allowed within constructor (Обращение к стандартной процедуре FAIL может содержаться только в конструкторе). 155 Invalid combination of opcode and operands (Недопустимая комбинация кода команды и операндов). 156 Memory reference expected (Отсутствует адрес). 157 Cannot add or subtract relocatable symbols (Нельзя складывать или вычитать перемещаемые символы). 158 Invalid register combination (Недопустимая комбинация регистров). 159 286/287 instructions are not enabled (Недоступен набор команд микропроцессоров 286/287). 160 Invalid symbol reference (Недопустимая ссылка на символ). 161 Code generation error (Ошибка генерации кода). 162 ASM expected (Отсутствует зарезервированное слово ASM).

СООБЩЕНИЯ КОМПИЛЯТОРА ОБ ОШИБКАХ

1 Out of memory Выход за границы памяти Компилятор выполняется вне допустимых границ памяти. Имеется ряд возможных решений проблемы:

§ Если в меню Options?Linker?Link Buffer, установлен параметр Memory, переключите его в значение Disk.

§ Возможно программа слишком велика, чтобы компилироваться в таком объеме памяти. Следует разбить ее на два или более модуля.

2 Identifier expected Не указан идентификатор В этом месте должен находиться идентификатор. 3 Unknown identifier Неизвестный идентификатор Этот идентификатор не был описан. 4 Duplicate identifier Повторный идентификатор Идентификатор уже представляет имя программы, модуля, константы, переменной, типа, процедуры и функции, описанных в текущем блоке. 5 Syntax  error Синтаксическая ошибка В исходном тексте найден неверный символ. 6 Error in real constant Ошибка в вещественной константе   7 Error in integer constant Ошибка в целой константе   8 String constant exceeds line Строковая константа превышает размеры строки Вероятно, отсутствует кавычка в конце строковой константы. 10 Unexpected end of file Неожиданный конец файла Причины:

§ несоответствующее количество begin и end (не забудьте, что оператор case также заканчивается словом end);

§ включаемый файл заканчивается в середине раздела операторов. Каждый раздел операторов должен целиком помещаться в одном файле;

§ незаконченный комментарий.

11 Line too long Строка слишком длинная Максимальная длина строки может равняться 126 символам. Возможно, отсутствует апостроф в конце строковой константы. 12 Type identifier expected Нужен идентификатор типа Не указан типа идентификатора, как это должно быть. 13 Too many open files Слишком много открытых файлов Файл CONFIG.SYS не содержит параметра FILES=xx или этот параметр указывает слишком много файлов. Следует увеличить число файлов. 14 Invalid file name Неверное имя файла Имя файла неверно или указывает несуществующий путь. 15 File not found Файл не найден Файл не может быть найден ни в текущем каталоге, ни в каком-либо другом исследуемом каталоге, предназначенном для этого типа файлов. 16 Disk full Диск заполнен Удалите некоторые файлы или воспользуйтесь новым диском (если речь идет о сменном носителе). 17 Invalid compiler directive Неправильная директива компилятора Возможно, неверная буква в директиве компилятора, один из параметров директивы компилятора неверный или используется глобальная директива компилятора, когда компиляция тела программы уже началась. 18 Too many files Слишком много файлов В компиляции программы или программного модуля участвует слишком много  файлов. Следует объединить включаемые файлы или сделать короче имена файлов. 19 Undefined type in pointer definition Неопределенный тип в определении ссылки Была осуществлена ссылка на тип в приведенном ранее описании указателя, но этот тип не был описан. 20 Variable identifier expected Нужен идентификатор переменной Идентификатор не описывает переменную, как это должно быть. 21 Error in type Ошибка в определении типа Определение типа не может начинаться с этого символа. 22 Structure too large Слишком большая структура Максимально допустимый размер структурного типа 65 535 байт. 23 Set base type of range Базовый тип множества выходит за допустимые границы Базовый тип множества должен представлять собой отрезок типа с границами в пределах от 0 до 255 или перечислимого типа, допускающим не более чем 256 значений. 24 File components may not be files or objects Элементы файла не могут быть файлами или объектами Тип компоненты файлового типа не может быть объектным или файловым типом и не может быть структурным типом с компонентами файлового или объектного типа: конструкции file of file или file of object не допускаются. 25 Invalid string length Неверная длина строки Длина строки должна находиться в диапазоне от 1 до 255. 26 Type mismatch Несоответствие типов Причины:

§ несовместимые типы переменной и выражения в операторе присваивания;

§ несовместимые типы фактического и формального параметров в обращении к процедуре или функции;

§ тип выражения, несовместимый с типом индекса при индексировании массива;

§ несовместимые типы операндов в выражении.

27 Invalid subrange base type Неправильный базовый тип интервального типа Допустимыми являются все порядковые типы. 28 Lower bound greater than upper bound Нижняя граница больше верхней В описании диапазона нижняя граница больше, чем верхняя. 29 Ordinal type expected Нужен порядковый тип Вещественные, строковые, структурные и ссылочные типы в данном случае  не допускаются. 30 Integer constant expected Нужна целая константа   31 Constant expected Нужна константа   32 Integer or real constant expected Нужна целая или вещественная константа   33 Pointer type identifier expected Нужен идентификатор типа указателя Данный идентификатор не обозначает тип указателя, как это требуется. 34 Invalid function result type Неправильный тип результата функции Правильными типами результата функции являются все простые типы, а также строковые и ссылочные типы. 35 Label identifier expected Нужен идентификатор метки Метка не обозначена с помощью идентификатора, как это требуется. 36 BEGIN expected Нужен BEGIN   37 END expected Нужен END Следует проверить соответствие ключевых слов BEGIN и END. 38 Integer expression expected Нужно выражение типа INTEGER Предыдущее выражение должно иметь целочисленный тип INTEGER 39 Ordinal expression expected Нужно выражение порядкового типа Предшествующее выражение должно иметь порядковый тип. 40 Boolean expression expected Нужно выражение типа BOOLEAN Предшествующее выражение должно иметь тип BOOLEAN 41 Operand types do not math operator Типы операндов не соответствуют оператору Данный оператор не может быть применен к операндам этого типа, например, нельзя ‘A’ разделить на ‘2’. 42 Error in expression Ошибка в выражении Данный идентификатор не может участвовать в выражении указанным образом. 43 Illegal assignment Неверное присваивание § Нетипизированным файлам и переменным нельзя присваивать значения.

§ Идентификатору функции можно присваивать значения только внутри раздела операторов данной функции.

44 Field identifier expected Нужен идентификатор поля Данный идентификатор не является полем предшествующей переменной типа «запись». 45 Object file too large Объектный файл слишком большой Нельзя компоновать файлы .obj, превышающие 64 Кбайт. 46 Undefined external Не определена внешняя процедура Внешняя процедура или функция не имеет соответствующего определения Public в объектном файле. Убедитесь, что вы указали все объектные файлы в директивах   {$L имя_файла}, и проверьте написание идентификаторов процедуры или функции в файле .asm. 47 Invalid object file record Неправильная запись объектного файла Файл .obj содержит неверную объектную запись. Убедитесь, что данный файл является действительно файлом .obj. 48 Code segment too large Сегмент кода слишком большой Максимальный размер кода программы или программного модуля равняется 65 520 байт. Если вы компилируете программный модуль, разбейте его на два или более программных модулей. 49 Data segment too large Сегмент данных слишком велик Максимальный размер сегмента данных равен 65 520 байт, включая данные, описываемые используемыми программными модулями. Если вам нужно большее количество глобальных данных, опишите большие структуры с помощью указателей и выделяйте для них память динамически с помощью процедуры New. 50 DO expected Нужен оператор DO   51 Invalid PUBLIC definition Неверное определение PUBLIC § Две или более директивы PUBLIC на языке ассемблера определяют один и тот же идентификатор.

§ Объектный файл .obj определяет идентификаторы PUBLIC, которые не находятся в сегменте CODE.

52 Invalid EXTRN definition Неверное определение EXTRN § На идентификатор имеется ссылка в директиве EXTRN на языке ассемблера, но он не описан в программе или модуле на Паскале или в интерфейсной части какого-либо из используемых модулей.

§ Идентификатор обозначает абсолютную переменную.

§ Идентификатор обозначает процедуру или функцию типа inline.

53 Too many EXTRN definition Слишком много определений EXTRN Невозможно обработать файлы .obj, если имеется более чем 256 EXTRN. 54 OF expected Требуется OF   55 INTERFACE expected Требуется интерфейсный раздел   56 Invalid relocatable reference Недопустимая перемещаемая ссылка § Файл .obj содержит данные и перемещаемые ссылки в сегментах, отличных от CODE. Например, вы пытаетесь описать инициализированные переменные в сегменте DATA.

§ Файл .com содержит ссылки с размерами в байтах на перемещаемые идентификаторы. Такая ошибка происходит в случае, если вы используете операторы HIGH и DOWN с перемещаемыми идентификаторами или если вы ссылаетесь в директивах DB на перемещаемые идентификаторы.

§ Операнд ссылается на перемещаемый идентификатор, который не был определен в сегменте CODE или в сегменте DATA.

§ Операнд ссылается на процедуру EXTRN или функцию EXTRN со смещением, например CALL SortProc+8.

57 Then expected Требуется THEN В нужном месте отсутствует слово then. 58 TO or DOWNTO expected Требуется TO или DOWNTO В нужном месте отсутствует ключевое слово TO или DOWNTO. 59 Undefined forward Не определено опережающее описание § Процедура или функция были описаны в интерфейсном разделе программного модуля, но их определение отсутствует в разделе реализации.

§ Процедуры или функции были описаны с помощью описания forward, но их определение не найдено.

61 Invalid typecast Неверное преобразование типа § Размеры ссылки на переменную и тип результата отличаются друг от друга при изменении типа переменной.

§ Вы пытаетесь осуществить приведение типа выражения, когда разрешается только ссылка на переменную, процедуру или функцию.

62 Division by zero Деление на нуль Предшествующая операция пытается выполнить деление на нуль. 63 Invalid file type Неверный файловый тип Данный файловый тип не обслуживается процедурой обработки файлов. Например, вы пытаетесь использовать процедуру Readln для типизированного файла или процедуру Seek для текстового. 64 Cannot Read or Write variables of this type Нельзя считать или записать переменные данного типа Процедуры Read и Readln могут считывать переменные символьного, целого, вещественного и строкового типа. 65 Pointer variable expected Нужно использовать переменную-указатель Предыдущая переменная должна иметь тип «указатель». 66 String variable expected Нужна строковая переменная Предшествующая переменная должна иметь строковый тип. 67 String expression expected Нужно выражение строкового типа Предшествующее выражение должно иметь строковый тип. 68 Circular unit reference Циклическая ссылка на модуль Два модуля не могут ссылаться друг на друга в разделе interface, но могут это делать в разделе implementation. Переупорядочите операторы uses таким образом, чтобы циклические ссылки имели место только в разделе implementation. 69 Unit name mismatch Несоответствие имен программных модулей Имя программного модуля, найденное в файле .tpu, не соответствует имени, указанному в операторе uses. 70 Unit version mismatch Несоответствие версий программных модулей Один или несколько программных модулей, используемых данной программой, были изменены после их компиляции. Воспользуйтесь командой Compile?Make или Compile?Build в интегрированной интерактивной среде программирования, что позволит автоматически скомпилировать программные модули, нуждающиеся в перекомпиляции. 71 Internal stack overflow Переполнение внутреннего стека Внутренний стек компилятора исчерпан из-за слишком большого уровня вложенности операторов. Переорганизуйте исходный код и уменьшите уровень вложенности. Например, переместите внутренние уровни вложенных операторов в отдельную процедуру. 72 Unit file format error Ошибка формата файла программного модуля Файле .tpu является недействительным. Возможно, он создан с помощью старой версии Turbo Pascal или Borland Pascal. В этом случае нужно перекомпилировать исходный код модуля и создать новый модуль. 73 Implementation expected Требуется раздел реализации Ключевое слово Implementation отсутствует там, где оно должно быть. Возможно, вы включили реализацию процедуры, функции или метода в интерфейсную часть модуля. 74 Constant and case types do not math Типы констант и выражения оператора Case не соответствуют друг другу Тип константы оператора Case несовместим с выражением селектора в операторе выбора 75 Record variable expected Нужна переменная типа запись Предшествующая переменная должна иметь тип «запись». 76 Constant out of range Константа выходит за допустимые границы § Вы пытаетесь указать массив с константами, нарушающими границы.

§ Вы пытаетесь присвоить константу вне диапазона переменной.

§ Вы пытаетесь передать константу вне диапазона в качестве параметра процедуре или функции.

77 File variable expected Нужна файловая переменная Предшествующая переменная должна иметь файловый тип. 78 Pointer expression expected Нужно выражение типа указатель Предшествующая переменная должна иметь ссылочный тип. 79 Integer or real expression expected Нужно выражение типа real  или integer Предшествующее выражение должно иметь тип real  или integer. 80 Label not within current block Метка не находится внутри текущего блока Оператор goto не может ссылаться на метку, находящуюся вне текущего блока. 81 Label already defined Метка уже определена Данная метка уже помечает оператор. 82 Undefined label in processing statement part Неопределенная метка в предшествующем разделе операторов Данная метка была описана, и на нее осуществлялась ссылка в предшествующем разделе операторов, но она не определена. 83 Invalid @ argument Недействительный аргумент оператора @ Действительными аргументами являются ссылки на переменные и идентификаторы процедур или функций. 84 Unit expected Нужно ключевое слово Unit Не указано ключевое слово Unit, как это требуется. 85 « expected Нужно указать «;» Не указана, где это требуется, точка с запятой. 86 «:» expected Нужно указать «:» Не указана, где это требуется, двоеточие. 87 «,» expected Нужно указать «,» Не указана, где это требуется, запятая. 88 «(» expected Нужно указать «(» Не указана, где это требуется, открывающаяся круглая скобка. 89 «)» expected Нужно указать «)» Не указана, где это требуется, закрывающаяся круглая скобка. 90 «=» expected Нужно указать «=» Нужно указать знак равенства. 91 «:=» expected Нужно указать «:=» Требуется использовать операцию присваивания. 92 « or «(.» expected Нужно «[» or «(.» Требуется указать квадратную скобку или «(. ». 93 « or «.expected Нужно «]» or «.)» Требуется указать квадратную скобку или «.) ». 94 « expected Нужно «.» Требуется указать точку. Убедитесь, что тип не используется как переменная или что именем программы не переопределяется важный идентификатор другого модуля. 95 «..» expected Нужно «..» Требуется указать точки. Там, где это нужно, не указан диапазон. 96 Too many variables Слишком много переменных Общий размер глобальных переменных, описанных в программе или программном модуле, не может превышать 64 Кбайт.

Размер локальных переменных, описанных в программе или функции, не может превышать 64 Кбайт.

97 Invalid for control variable Недопустимая управляющая переменная оператора for Управляющая переменная оператора for должна быть переменной перечисляемого типа, определенной в разделе описаний текущей подпрограммы. 98 Integer variable expected Нужна переменная целого типа Предшествующая переменная должна иметь тип integer. 99 Files are not allowed here Здесь не допускаются файлы Типизированная константа не может иметь файловый тип. 100 String length mismatch Несоответствие длины Длина строковой константы не соответствует количеству элементов символьного массива. 101 Invalid ordering of fields Неверный порядок полей Поля в константе типа «запись» должны указываться в порядке их описания. 102 String constant expected Нужна константа строкового типа   103 Integer or real variable expected Нужна переменная типа integer или real Предшествующая переменная должна иметь целый или вещественный тип. 104 Character expression   Ожидается символьные выражения 105 Compilation aborted   Компиляция прервана 106 Error in statement   Ошибка в операторе 107 Error in type   Ошибка в типе 108 Expected   Ожидается имя 109 Invalid floating point operation    Неправильная операция для вещественных операндов 110  Ordinal variable expected   Ожидается переменная целого или символьного типа 111  Too many symbols    Слишком много символов 112 Undefined type   Неопределенный тип 113 Abnormal program termination   Ненормальное окончание программы 114 Ctrl-Break to quit   нажмите CTRL и Break для входа 115 Disk is write-protected   Диск защищен от записи 116 Disk read error   Ошибка записи на диск 117 Disk write error   Ошибка записи на диск 118 Drive not ready   дисковод не готов (нет дискеты) 119 Error on execute    Ошибка исполнения 120 Floating point overflow   Вещественное переполнение 121 Hardware failure   Ошибка оборудования 122 Heap overflow error   Не хватает основной памяти 123 I/O checking   Ошибка ввода/вывода 124 Invalid Breakpoint   Неправильная точка останова 125 Invalid format specifier   Неправильный формат 126 No debug info   Не задана информация для отладки 127 Not enough memory   Не хватает памяти 128 Press any key   Нажмите любую клавишу 129 Program terminated   Исполнение программы прекращено 130 Range check error   Выход индекса за пределы массива 131 Runtime error   Ошибка во время исполнения 132 Stack overflow error   Ошибка по переполнению стека 133 Too many breakpoints   Слишком много точек останова 134 Type EXIT to return to Turbo Pascal   Введите Exit для возврата в Турбо Паскаль 135 User Break   Пользователь прервал исполнение программы

Понравилась статья? Поделить с друзьями:
  • Ошибка 1222 1 мерседес
  • Ошибка 122 нива шевроле
  • Ошибка 1221 фиат панда
  • Ошибка 122 на приоре
  • Ошибка 1221 фиат добло