Ошибка в делфи write error on

3 / 3 / 1

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

Сообщений: 40

1

23.05.2010, 23:31. Показов 10096. Ответов 4


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

Подскажите, пожалуйста, пишу простую программу на дельфи, выдает такие ошибки

[Error] Write error on ‘C:Program FilesBorlandDelphi7ProjectsProject2.exe’

[Error] RLINK32: Error writing file «C:Program FilesBorlandDelphi7ProjectsProject2.exe»

что это может быть?



0



26 / 26 / 10

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

Сообщений: 71

24.05.2010, 01:07

2

А ос какая стоит? Если 7 или виста возможно из-за отсутствия прав администратора



0



3 / 3 / 1

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

Сообщений: 40

25.05.2010, 12:17

 [ТС]

3

семерка стоит, пасиба, щас посмотрю))



0



13095 / 5876 / 1706

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

Сообщений: 8,808

25.05.2010, 12:22

4

Rinas, возможно ты запустил EXE и во время его работы пытаешься скомпилировать проект.



1



3 / 3 / 1

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

Сообщений: 40

25.05.2010, 16:54

 [ТС]

5

это вряд ли, я скачал делфи, написал простенькую программу и такая ошибка.
я поставил консольное приложения, набрал буквально writeln(‘7’); и все, такая ошибка идет



0



Posted by jpluimers on 2021/07/29

Since I always forget where to get the full list: there is none in the documentation. Only parts.

Usually the mapping is from run-time errors to exceptions:

In addition, exceptions are converted to run-time errors when the exception handling mechanism in the SysUtils unit is not up.

This can happen early in start-up, or late un shut-down of an application.

The one I encountered most is the runtime error 216 during shutdown: it is an Access Violation (EAccessViolation).

Run-time errors (not changed since Delphi 2007)

  • [WayBack] Delphi 2007: Exceptions

    When an application uses the SysUtils unit, most runtime errors are automatically converted into exceptions. Many errors that would otherwise terminate an application – such as insufficient memory, division by zero, and general protection faults – can be caught and handled.

  • [WayBack] Delphi 2007: Delphi Runtime Errors

    Runtime errors take the form:

    Runtime error nnn at xxxxxxxx

    where nnn is the runtime error number, and xxxxxxxx is the runtime error address.

    Applications that use the SysUtils class map most runtime errors to Exceptions, which allow your application to resolve the error without terminating.

    Delphi runtime errors are divided into the following categories:

    • I/O errors, numbered 100 through 149
    • Fatal errors, numbered 200 through 255
    • Operating system errors
  • [WayBack] Delphi 2007: I/O Errors

    I/O errors cause an exception to be thrown if a statement is compiled in the {$I+} state. (If the application does not include the SysUtils class, the exception causes the application to terminate).

    In the {$I-} state, the program continues to execute, and the error is reported by the IOResult function.

    Number

    Name

    Description

    100

    Disk read error

    Reported by Read on a typed file if you attempt to read past the end of the file.

    101

    Disk write error

    Reported by CloseFile, Write, WriteIn, or Flush if the disk becomes full.

    102

    File not assigned

    Reported by Reset, Rewrite, Append, Rename, or Erase if the file variable has not been assigned a name through a call to Assign or AssignFile.

    103

    File not open

    Reported by CloseFile, Read Write, Seek, Eof, FilePos, FileSize, Flush, BlockRead, or BlockWrite if the file is not open.

    104

    File not open for input

    Reported by Read, Readln, Eof, Eoln, SeekEof, or SeekEoln on a text file if the file is not open for input.

    105

    File not open for output

    Reported by Write or Writeln on a text file if you do not generate a Console application.

    106

    Invalid numeric format

    Reported by Read or Readln if a numeric value read from a text file does not conform to the proper numeric format.

  • [WayBack] Delphi 2007: Fatal errors

    Number

    Name

    Exception

    200

    Division by zero

    EDivByZero

    201

    Range check error

    ERangeError

    202

    Stack overflow

    EStackOverflow

    203

    Heap overflow error

    EOutOfMemory

    204

    Invalid pointer operation

    EInvalidPointer

    205

    Floating point overflow

    EOverflow

    206

    Floating point underflow

    EUnderflow

    207

    Invalid floating point operation

    EInvalidOp

    210

    Abstract Method Error

    EAbstractError

    215

    Arithmetic overflow (integer only)

    EIntOverflow

    216

    Access violation

    EAccessViolation

    217

    Control-C

    EControlC

    218

    Privileged instruction

    EPrivilege

    219

    Invalid typecast

    EInvalidCast

    220

    Invalid variant typecast

    EVariantError

    221

    Invalid variant operation

    EVariantError

    222

    No variant method call dispatcher

    EVariantError

    223

    Cannot create variant array

    EVariantError

    224

    Variant does not contain array

    EVariantError

    225

    Variant array bounds error

    EVariantError

    226

    TLS initialization error

    No exception to map to.

    227

    Assertion failed

    EAssertionFailed

    228

    Interface Cast Error

    EIntfCastError

    229

    Safecall error

    ESafecallException

    230

    Unhandled exception

    No exception to map to.

    231

    Too many nested exceptions

    Up to 16 permitted.

    232

    Fatal signal raised on a non-Delphi thread

    No exception to map to.

For completeness, some DOS Borland/Turbo Pascal errors from [WayBack] where are the runtime error codes, eh? – delphi

Borland Pascal 7 runtime errors; most applicable to Delphi:
*** DOS ***
1   Invalid function number
2   File not found
3   Path not found
4   Too many open files
5   File access denied
6   Invalid file handle
12  Invalid file access code
15  Invalid drive number
16  Cannot remove current directory
17  Cannot rename across drives
18  No more files
*** I/O ***
100 Disc read error
101 Disc write error
102 File not assigned
103 File not open
104 File not open for input
105 File not open for output
106 Invalid numeric format read from file
*** CRITICAL ***
150 Write protected
151 Unknown unit/Bad drive request struct length
152 Drive not ready
153 Unknown command
154 CRC error in data
155 Bad drive request structure length
156 Disc seek error
157 Unknown media type
158 Sector not found
159 Printer out of paper
160 Device write fault
161 Device read fault
162 Hardware failure (C-DOS: file/device opened by another process)
*** FATAL ***
200 Division by zero
201 Range check
202 Stack overflow (on entry to a procedure or function)
203 Heap overflow (from New() or GetMem())
204 Invalid pointer operation (from Dispose() or FreeMem())
205 Floating point overflow
206 Floating point underflow
207 Invalid floating point operation
208 Overlay manager not installed (usually when calling OvrInit)
209 Overlay file read error
210 Object not initialized
211 Call to abstract method
212 Stream registration error
213 Collection index out of range
214 Collection overflow error
215 Arithmetic overflow error
216 General Protection fault

The run-time error 216

  • [WayBack] Delphi Runtime error 216 thrown in SysUtils.FinaliseUnits, line number not in mapfile – Stack Overflow
  • [WayBack] madshi.net • View topic – Runtime Error 216

–jeroen

This entry was posted on 2021/07/29 at 06:00 and is filed under Delphi, Development, Software Development.
You can follow any responses to this entry through the RSS 2.0 feed.

You can leave a response, or trackback from your own site.

I read my physical drive and am having some problems.

64-bit applications:

  • 512 bytes: Stream read error/Stream write error.
    • Read: work
    • ReadBuffer: not work
  • 38400 bytes: work.

32-bit applications: work on all cases.

function setinact(diskid: string): boolean;
var
  hdevi:    THandleStream;
  hDevice:  THandle;
  mfile:    TMemoryStream;
  hbuff, mbuff:    array[0..511] of byte;
  i:        integer;
  BytesReturned: DWORD;
begin
  Result:=False;
  hDevice := CreateFile(Pchar('\.PHYSICALDRIVE'+diskid), GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
  if hDevice <> INVALID_HANDLE_VALUE then
  begin
    try
      hdevi := THandleStream.Create(hDevice);
      try
        mfile:=TMemoryStream.Create();
        try
          hdevi.ReadBuffer(hbuff[0],length(hbuff));
          mfile.WriteBuffer(hbuff[0],Length(hbuff));
          mfile.Position:=0;
          mfile.ReadBuffer(mbuff[0],length(mbuff));
          mbuff[446]:=$00;
          mbuff[462]:=$00;
          mbuff[478]:=$00;
          mbuff[494]:=$00;
          hdevi.Position:=0;
          hdevi.WriteBuffer(mbuff[0],length(mbuff));
          Result:=True;
        finally
          mfile.Free;
        end;
      finally
        hdevi.Free;
        DeviceIoControl(hDevice, IOCTL_DISK_UPDATE_PROPERTIES, nil, 0, nil, 0, BytesReturned, nil);
      end;
    finally
      CloseHandle(hDevice);
    end;
  end;
end;

How to read 512 bytes on 64-bit applications?

Updated:
I’ve run this application on another PC, it worked. I do not understand why.

Updated 2:
Thanks to David Heffernan. The code below work. But why for 32-bit applications, it always succeed with the first code?

function setinact(diskid: string): boolean;
var
  hDevice:  THandle;
  hbuff:    PByte;
  i:        integer;
  hexstr: String;
  DISK_GEOMETRY : _DISK_GEOMETRY;
  BytesPerSector: Int64;
  BytesReturned: DWORD;
begin
  Result:=False;
  hDevice := CreateFile(Pchar('\.PHYSICALDRIVE'+diskid), GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
  if hDevice = INVALID_HANDLE_VALUE then Exit;
  try
    GetMem(hbuff, 512);
    try
      if not DeviceIoControl(hDevice, IOCTL_DISK_GET_DRIVE_GEOMETRY, Nil, 0, @DISK_GEOMETRY, sizeof(DISK_GEOMETRY), BytesReturned, nil) then Exit;
      BytesPerSector:=DISK_GEOMETRY.BytesPerSector;
      if not ReadFile(hDevice, hbuff^, 512, BytesReturned, nil) then Exit;

      .................

      SetFilePointer(hDevice, 0, nil, FILE_BEGIN);
      if not WriteFile(hDevice, hbuff^, 512, BytesReturned, nil) then Exit;
    finally
      FreeMem(hbuff, 512);
    end;
    Result:=True;
    DeviceIoControl(hDevice, IOCTL_DISK_UPDATE_PROPERTIES, nil, 0, nil, 0, BytesReturned, nil);
  finally
    CloseHandle(hDevice);
  end;
end;

Понравилась статья? Поделить с друзьями:
  • Ошибка в делфи access violation at address
  • Ошибка в делении скачок в делении
  • Ошибка в делении на абзацы
  • Ошибка в делении какой падеж
  • Ошибка в гугл 403 that s an error