Ошибка при запуски программы делфи

Выходит табличка со следующим текстом:

Project Project1.exe raised exception class EInvalidOperation with message 'Cannot focus a disabled or invisible vindows'. Process stopped. Use Step or Run to continue.

const
 R: array[1..13] of string[2] =
 ('I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM', 'M');
 A: array[1..13] of Integer =
 (1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000);

var
  Form1: TForm1;
  mode:integer;
  Radix1,Radix2:integer;
implementation

{$R *.dfm}

//===================== Вспомогательные функции ============================

function CharToInt(Ch:char):integer;
begin 
  case Ch of
    '0'..'9': Result:= Ord(Ch) - Ord('0');
    'A'..'F': Result:= Ord(Ch) - Ord('A') + 10;
     else Result:= 0;
  end;
end;

function IntToChar(N:integer):char;
begin 
  case N of
    0..9   : Result:= char(Ord('0') + N);
    10..15 : Result:= char(Ord('A') + N - 10);
    else Result:= '0';
  end;
end;

//===================== Основные функции ================================

function StringToInt(const S:string; Radix:integer):integer;
var i:integer; 
begin
  Result:= 0;
  for i:= 1 to Length(S) do
    Result:= Result*Radix + CharToInt(S[i]);
end;

function IntToString(N,Radix:integer):string;
begin 
  while N > 0 do begin
    Result:= IntToChar(N mod Radix) + Result;
    N:= N div Radix;
  end;
end;

function RomanToArabic(S: string): Integer; 
var i, p: Integer;
begin
 Result := 0;
 i := 13;
 p := 1; 
while p <= Length(S) do 
begin
while Copy(S, p, Length(R[i])) <> R[i] do
 begin
 Dec(i); 
 if i = 0 then
 Exit;
 end;
Result := Result + A[i];
p := p + Length(R[i]);
 end;
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
if Edit1.Text='' then
StaticText2.Caption:=''
 else
StaticText2.Caption:='По русски -> '+IntToStr(RomanToArabic(Edit1.Text));
   RadioGroup2.Enabled:= Length(StaticText2.Caption) > 0;
  Edit2.Clear;
  RadioGroup2.ItemIndex:= -1;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
Key:=UpCase(Key);
  case Radix1 of
    2 : case Key of '0'..'1',#8,#13 : ; else
    begin if (Mode=0) and (not (Key in ['0'..'9','I','M','D','C','L','X','V',#8])) then
 Key:=#0;
 if (Mode=1) and (not (Key in ['0'..'9',#8])) then
 Key:=#0;
 if (Mode=2) and (not (Key in ['I','M','D','C','L','X','V',#8])) then
 Key:=#0; end; end;
    8 : case Key of '0'..'7',#8,#13 : ; else begin if (Mode=0) and (not (Key in ['0'..'9','I','M','D','C','L','X','V',#8])) then
 Key:=#0;
 if (Mode=1) and (not (Key in ['0'..'9',#8])) then
 Key:=#0;
 if (Mode=2) and (not (Key in ['I','M','D','C','L','X','V',#8])) then
 Key:=#0; end; end;
    10: case Key of '0'..'9',#8,#13 : ; else begin if (Mode=0) and (not (Key in ['0'..'9','I','M','D','C','L','X','V',#8])) then
 Key:=#0;
 if (Mode=1) and (not (Key in ['0'..'9',#8])) then
 Key:=#0;
 if (Mode=2) and (not (Key in ['I','M','D','C','L','X','V',#8])) then
 Key:=#0; end;  end;
  end; 
end;

procedure TForm1.RadioGroup2Click(Sender: TObject);
var N:integer;
begin
  N:= StringToInt(StaticText2.Caption,Radix1);
  case RadioGroup2.ItemIndex of
    0: Radix2:= 2;
    1: Radix2:= 8;
    2: Radix2:= 10;
    3: Radix2:= 16;
  end;
  Edit2.Text:= IntTOString(N,Radix2);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Radix1:=10;
  RadioGroup2.ItemIndex:= -1;
  Edit2.Clear; StaticText2.SetFocus ;
end;

end.

Писал на Delphi ХЕ2. Написано некоторое количество софта, стоит на нескольких комапх с разными ОС, и тебе ХР и 7-ка и Windows Server 2003; 32 и 64 разрядных. Все нормально. Но вот однажды понадобилось одному из руководителей поставить мой софт на компьютер, до этого не пользовался моим софтом. И, началось… Если сказать коротко никакие мои программы не запускаются на его компе. Даже тестовые, самые простые.

О программе:

unit Unit2;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm2 = class(TForm)
    txt1: TStaticText;
    btn1: TButton;
    mmo1: TMemo;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.btn1Click(Sender: TObject);
var s:TStringList;i:Integer;
begin
  s:=TStringList.Create;

  for i := 0 to 9 do begin
  s.Append('test-' + IntToStr(i + 100000) + ' ');
  end;

  mmo1.Clear;
  mmo1.Lines.Assign (s);

  s.Free;
end;
end.

Все просто, но даже такая не запускается. Вот что происходит,- в диспетчере задач появляются 3 процесса (запускал один раз) с размеров около 100Кб (она весит >2Мб); процессы нельзя вырубить; сам запустивший(из которого я их запускаю) процесс (проводник, Total Comander) вешается и умирает через некоторое время.

Тот же результат при запуске с любого жесткого диска компьютера.
Тоже с 32 и 64 битной версией тестовой ПО.
Антивируса не обнаружено.
При этом на компе том полно работающего софта, всякие ексели , 1С-ки, циткриксы и прочее.

Самое интересное, компилировал эту тестовую софтину и с ХЕ2, и с ХЕ7, все тоже

проверил файлы на virustotal.com, вирусов нет.
вот ссылки:
TEST_32

TEST_64

Там нажмите «Сведения о файле» и «Доп. сведения»

Собственно вопрос, где можно глянуть логи операционной системы, в которых была бы видна причина такого поведения?

На чтение 3 мин. Просмотров 55 Опубликовано 15.12.2019

При запуске Delphi 7, в особенности на операционных системах Windows 7, Windows 8, Windows 10 возникает ошибка следующего содержания:

Unable to rename ‘C:Program Files (x86)BorlandDelphiABindelphi32.SSS’ to ‘C:Program Files (x86)BorlandDelphiABindelphi32.dro’

Так выглядит интерфейс Delphi 7 без формы и листинга программы в результате ошибки «Unable to rename«.

Чтобы исправить ошибку, закрываем программу Delphi 7

Затем в Панели управления находим Delphi 7 и запускаем её от имени администратора

Радуемся, Delphi 7 запустилась и ошибки больше нет. Теперь можно программировать.

Форум посвящен проблеммам Windows, разработке игр, информационных систем с использованием технологий Delphi, PHP. На сайте можно найти ответы на вопросы по ошибках, решения проблемм Windows XP/7/10, найти веселые демотиваторы, и просто поболтать с интеерсными людьми. Программирование баз, приложений для Windows, MSSQL. Задавай вопросы мы будем ковыряться и может решим вашу проблему.

Софт / Программирование / решение проблемм / интернет / юмор

Опрос: Помогло ли вам это решение?
Опрос закрыт.
Помогло! 21 100.00%
Не помогло 0 0%
Всего Голосов: 21 100%
* Вы проголосовали за этот ответ. [Показать результаты]

Автор
Сообщение

all__
Админ


Сообщений: 869
Зарегистрирован: 01.2010

В Windows 7 с Delphi 7 случилась следующая ошибка. При запуске дельфи появляется окно с сообщением.
«Unable to rename ‘C:Program FilesBorlandDelphi7Bindelphi32.$$$’ to ‘C:Program FilesBorlandDelphi7Bindelphi32.dro’» . Среда запускается, но при попытке создания проекта всё повторяется.
Переустановка Дельфи не помогла.

Сначала удалил файл Bin/DELPHI32.DCI. Он сопротивлялся, поэтому пришлось запустить totalcommander с админскими правами.

Удаление не помогло. Но есть вероятность, что это тоже необходимо сделать.

Потом запустил Delphi 7 с правами администратора.

После этого дельфи стал запускаться с любыми правами.

Лучшая благодарность — «Мне нравится», +1 или Like! Вверху страницы.

02.05.2010 7:23

02.10.2010 15:48

10.12.2010 11:12

11.12.2010 14:18

11.12.2010 18:18

08.01.2011 11:58

24.01.2011 8:36

15.02.2011 17:33

29.03.2011 15:42

all__
Админ


Сообщений: 869
Зарегистрирован: 01.2010

Лучшая благодарность — «Мне нравится», +1 или Like! Вверху страницы.

В 2007 IDE Delphi, я надеюсь, что есть вариант конфигурации я мог бы включить, чтобы отключить генерацию __HISTORY папок.

Я получаю это исключение, которое блокирует мою способность сохранять файлы в IDE:

MadExcept говорит мне, что это происходит в coreide100.bpl ::

Кажется, я помню, там было что-то в реестре можно изменить, чтобы исправить это.

Закройте IDE. Скачать Process Explorer от Sysinternals Нажмите Ctrl + F и поиск имени файла, который заперт. Найдя, закройте ручку этого файла

Вы можете отключить его в Tools Options Editor Options, «Создание резервных копий файлов».

Резервное копирование файлов являются хорошо, так что вы , вероятно , хотите , чтобы провести некоторое время , выслеживая , почему они не могут быть сохранены. Есть больные вели себя приложения , что нос вокруг в измененных файлов — в основном захватывая их в то время как вы пытаетесь получить работу. С верхней части моей головы: сканеры вирусов (рекомендуется отключить сканирование вашей исходной папки) и Copernic Desktop ( большой локальный поиск приложения, но @ $ # * вещь блокировки источника и резервного копирования файлов , а я их редактирования и только! «исправить», чтобы закрыть приложение поиска, сохраните файл, а затем перезагрузить приложение). Я не знаю о собственном файле индексатор Windows’ (как я уже сказал, Коперник намного лучше , когда он ведет себя) , но если у вас есть ход службы индексатор, попробуйте отключить его.

Создав аккаунт на облачном хранилище Яндекс.

2.8k.

Windows 10 имеет множество плюсов и во многом выигрывает

1.2k.

Многофункциональное устройство помогает распечатывать

807

Сегодня любой браузер позволяет смотреть контент на

824

Here it is, a malicious website that promotes a paid

629

На одном из этапов кастомизации Windows 10 можно изменить

859

В операционной системе Windows 10 существует огромное

921

Для любителей погонять в компьютерные игры не секрет

619

We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies.

Форум UGOO.Ru

Опрос: Помогло ли вам это решение?
Опрос закрыт.
Помогло! 100.00% 21 100.00%
Не помогло 0% 0 0%
Всего Голосов: 21 100%
all__
Не на форуме


Админ
*******

Сообщений: 869
Зарегистрирован: 01.2010

Сообщение: #1

Ошибка Delphi: delphi32.$$$ и delphi32.dro — Решено

В Windows 7 с Delphi 7 случилась следующая ошибка. При запуске дельфи появляется окно с сообщением.
«Unable to rename ‘C:Program FilesBorlandDelphi7Bindelphi32.$$$’ to ‘C:Program FilesBorlandDelphi7Bindelphi32.dro’» . Среда запускается, но при попытке создания проекта всё повторяется.
Переустановка Дельфи не помогла.

Сначала удалил файл Bin/DELPHI32.DCI. Он сопротивлялся, поэтому пришлось запустить totalcommander с админскими правами.

Удаление не помогло. Но есть вероятность, что это тоже необходимо сделать.

Потом запустил Delphi 7 с правами администратора.

Ошибка Delphi: delphi32.$$$ и delphi32.dro - Решено

После этого дельфи стал запускаться с любыми правами.


Лучшая благодарность — «Мне нравится», +1 или Like! Вверху страницы.

02.05.2010 7:23
Гость

Unregistered
 

Сообщение: #2

RE: Ошибка Delphi: delphi32.$$$ и delphi32.dro — Решено

Невероятное спасибо!
Час уже мучаюсь над делфой не могу начать писать прогу!
Спасибо все 100% помогло):195:

02.10.2010 15:48
Гость

Unregistered
 

Сообщение: #3

RE: Ошибка Delphi: delphi32.$$$ и delphi32.dro — Решено

sposibo bolshoe vy mne toje pomogli, uje xotel snisti systemu .

10.12.2010 11:12
Гость

Unregistered
 

Сообщение: #4

RE: Ошибка Delphi: delphi32.$$$ и delphi32.dro — Решено

Да, да, да, большое спасибо тебе милый человек!!! А то скоро лабу надо сдавать, а среда разработки то не ставится))

11.12.2010 14:18
Гость

Unregistered
 

Сообщение: #5

RE: Ошибка Delphi: delphi32.$$$ и delphi32.dro — Решено

Невероятно… Сколько раз запускала другие программы от имени админа, а тут как обрубило)))
Спасибо вам огромное! =)

11.12.2010 18:18
Гость

Unregistered
 

Сообщение: #6

RE: Ошибка Delphi: delphi32.$$$ и delphi32.dro — Решено

Спасибо! За совет очень полезная информация то же столько промучился а оказалось то.

08.01.2011 11:58
Гость

Unregistered
 

Сообщение: #7

RE: Ошибка Delphi: delphi32.$$$ и delphi32.dro — Решено

THANKS!

24.01.2011 8:36
Гость

Unregistered
 

Сообщение: #8

RE: Ошибка Delphi: delphi32.$$$ и delphi32.dro — Решено

спасибо работает

15.02.2011 17:33
Гость

Unregistered
 

Сообщение: #9

Smile RE: Ошибка Delphi: delphi32.$$$ и delphi32.dro — Решено

И от мея огромное…..

29.03.2011 15:42

Тема закрыта

Похожие темы
Тема: Автор Ответов: Просмотров: Посл. сообщение
  AutoCAD виснет при загрузке — решено clk824 20 31 137 29.11.2013 19:17
Посл. сообщение: Гость
  Флэшка постоянно теряет данные и просит отформатировать — решено clk824 9 19 931 30.10.2013 23:16
Посл. сообщение: Гость
  Курсор мыши перестал двигаться после перезагрузки — решено clk824 7 13 278 14.07.2013 23:15
Посл. сообщение: all__
  Ubuntu unity и system tray — решено all__ 1 1 705 14.07.2013 17:48
Посл. сообщение: all__
  Disconnect: Invalid Steam userID ticket — решено all__ 4 13 161 14.03.2013 10:00
Посл. сообщение: Гость

Работает на скрипте форума MyBB

Появилась необходимость использовать Delphi
Попробовал накатить на свою систему программу и получил по началу
unknown error during init такую ошибку
а потом в добавок еще и такую
Directory preparation failed for : c:programdatadelphi133_cars2015.r3_4nwsty9albHIX6GAQzg85Q2cars 2015.r3data.
Please make sure that all applications that may use files and folders in that directory are terminated, then retry.

И они менялись одна на другую.

Ну дай думаю возьму чистый винт поставлю на него все авто программы и буду пользоваться по мере необходимости.
Поставил.
НИХРЕНА.
При всем при том что система чистая, свежая, антивирусники не стоят, и вроде все поставил
включая рекомендуемый Download Microsoft SQL Server Compact 3.5
После каждой попытки чистил папки
c:UsersAUTOzAppDataRoamingDelphi
c:ProgramDataDelphi
потом ccleaner

Нашел решение тут
Сразу скажу мне не помогло))
Инсталляции программ Autocom или Delphi в определенных случаях на 64-битной операционной системе Windows 7 происходит ошибка unknown error during init.

Для разрешения данного вопроса нам надо произвести несколько действий:
— деинсталлируем программный продукт Autocom или Delphi посредством файла Uninstall.exe;
— содержимое скрытой папки C:UsersИМЯ ПОЛЬЗОВАТЕЛЯAppDataRoamingAutocom подлежит удалению;
— содержимое скрытой папки C:ProgramDataAutocom также подлежит удалению;
— выполняем чистку реестра от сохранившихся ненужных записей программы посредством утилиты CCleaner;
— производим установку Microsoft SQL Server Compact 3.5;
Производим повторную инсталляцию программного продукта Autocom или Delphi.

Идем дальше
Подозрения были на то что все таки в процессе удаления старых программ зачищало что то не то.
Так и оказалось.
Нашел сайт
autocom.ucoz.com/down.html
Скачал Delphi
отключаем интернет
опять ставим doNET_4.6.1_install.exe
копируем в основную папку license.key
копируем два файла
Installation.xml
Resources.dll

из папки 2014R1 Activator LuisAndre
заменяем Main.exe
Запускаем, ну а дальше все по стандарту
Сохраняем FileActivation на рабочий стол, активируем его 2014R1 Activator LuisAndre.exe
И ВСЕ)))

И к этому я шел всего то пару часов ))) (не считая установки чистой системы)

Допустим, сделана опечатка и неправильно написано какое-нибудь ключевое слово. В этом случае при попытке запуска программы внизу появляется окно, в котором отображены сообщения об ошибках. При этом программа не запустится. Благодаря подсказке такую ошибку легко найти и исправить.

Частой ошибкой начинающих является пропуск конструкции begin – end в цикле. При
этом имеется в виду, что в цикле должны выполняться, например, обе команды, но на самом-то деле в цикле, конечно, будет выполняться только первая, а вторая выполнится только один раз – потом, когда программа выйдет из цикла. При попытке запуска появляется сообщение. Но это не ошибка, а предупреждение. В нем обращается внимание на то, что параметр цикла после выполнения цикла может быть неопределенным (он присутствует во второй команде).

Однако, несмотря на предупреждение, программа может запуститься. Если вводятся
дкакие-либо данные, то появляется сообщение об исключительной ситуации – exception. При этом программа приостанавливается, переходя из режима исполнения в режим отладки. Чтобы перейти к обычному редактированию кода, лучше остановить программу. Это можно сделать с помощью команды Program Reset. Затем можно поправить ошибку и вновь запустить программу.

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

Механизм исключительных ситуаций (exception)
одно из больших достоинств Delphi. С их помощью вы можете контролировать
возникновение ошибок и создавать в результате устойчивые к ошибкам программы.

По мере знакомства с языком и средой программист проходит несколько этапов. На
первом этапе он, по незнанию, путает типы, забывает ставить знаки препинания (например, точку с запятой в конце строки), некорректно использует операторы и т.п. В результате написанный им код в принципе невозможно исполнить. И это хорошо – 15 поскольку допущенные им ошибки оказываются автоматически выявленными на этапе компиляции, более того, часто среда программирования сама подсказывает, какая ошибка допущена, и, что важно, указывает строку, которую нужно поправить. По мере изучения языка и борьбы с синтаксическими ошибками программист плавно переходит к следующему этапу. Теперь он уже не делает таких простейших ошибок, но, поскольку сложность его программ возрастает, возрастает и вероятность совершения им ошибки, при которой программа все равно запустится. Поскольку, с точки зрения компилятора, явной ошибки нет, а некоторые странности кода, по-видимому, являются замыслом программиста. Однако компилятор все-таки сообщает об этих странностях с помощью предупреждений (Warning).

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

Опасность таких скрытых ошибок состоит:

1) в том, что они таятся в той части кода, которую программист написал и уверен, что
она правильная (программа запустилась), а значит, и не очень внимательно будет
искать ошибку;

2) в том, что проявляется эта ошибка совсем в другом месте кода – не в том, в котором
допущена. А это приводит к долгим поискам ее по всей программе.

При возникновении исключительной ситуации можно проигнорировать ее и запустить
исполнение программы дальше, нажав F9. В этом случае программа выдает сообщение об ошибке. Необходимо найти ошибку – понять, в какой строке и почему происходит сбой. Для этого можно воспользоваться трассировкой. Для того чтобы определить первую строчку, начиная с которой будет проводиться трассировка, нужно поставить Breakpoint – точку останова.

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

Чтобы выполнить текущую строку, на которой стоит курсор отладки, нажмите F7 или
F8. Строка выполнилась, и курсор сместился. Если необходимо перейти к следующей строке, то можно нажать F8, если нужно зайти в какую-либо функцию, то нажимают клавишу F7 и продолжают трассировку.

Для того чтобы в ходе отладки узнать значение той или иной переменной, нужно просто подвести к ней курсор. Появится hint со значением этой переменной. Это, однако, работает не со всеми переменными, а только с доступными в данный момент. Если нужно постоянно контролировать значение переменной, то еще проще добавить ее в список Watch.

Для более основательного слежения за значениями можете воспользоваться Списком Наблюдения (Watch List, Ctrl+F5).

Таким образом, при программировании среда Delphi может находиться в различных
режимах:

• Режим редактирования – режим, в котором редактируется код проекта,
модифицируется форма, добавляя на нее компоненты и настраивая их свойства. Это
основной режим.

• Режим исполнения программы – режим, в который среда переходит, как только
нажата клавиша F9 и был построен exe-файл. Фактически, в этом режиме происходиткак раз исполнение получившегося exe-файла проекта. Программа исполняется так,
как если бы ее вызвали не из Delphi, а просто из Windows.

• Режим отладки – в этот режим можно перейти из режима исполнения программы.

При этом программа будет приостановлена (но не остановлена совсем).

Чтобы продолжить трассировку (последовательный переход от команды к команде),
можете воспользоваться клавишами:

• F9 (Run) – продолжить программу, не трассируя ее.

• F8 (Step over) – выполняется текущая строка кода, и переходят к следующей строке.

• F7 (Trace Into) – то же, что и F8, с тем отличием, что если в текущей строчке
содержится вызов какой-либо функции или процедуры, то попадают внутрь этой
процедуры и трассируют ее до конца, затем из нее возвращаетс и переходят к
следующей строке (на которую перешли бы сразу, если бы нажали F8).

• F4 (Run to Cursor) – переход в режим исполнения программы до тех пор, пока не
должна будет выполнена строка, на которой стоит текстовый курсор (аналогично
тому, как если бы была установлена точка останова)

• Shift+F8 (Run Until Return) – процедура выполняется до конца.

• Ctrl+F2 (Program Reset) – остановка трассировки и переход в режим редактирования
кода. (Иногда целесообразнее, если это не грозит ошибками, продолжить исполнение
программы (F9) и выйти из нее нормальным образом, закрыв главную форму).

При работе в Delphi сообщение об ошибке фактически появляется дважды: сначала
выводится окно об исключительной ситуации и программа приостанавливается, а потом,
если нажать F9 (F8, F7 и т.п.), – возникает стандартное сообщение об ошибке Windows.

Итак:

1. Произошла ошибка.

2. Программа приостанавливается.

3. Выводится сообщение об exception. Это сообщение для программиста. Среда Delphi
сообщает, что программа не в состоянии выполнить какую-то свою команду.
Программист не предусмотрел возможность исключительной ситуации. Среда Delphi
приостанавливает программу, чтобы программист разобрался, где и в чем ошибка.
Отключить приостановку (2)–(3) можно, сняв флажок Menu => Tools => Debugger
Options => Language Exceptions => Stop on Delphi Exceptions.

4. Нажатие клавиши F9 (F8, F7 или др.).

5. Выводится сообщение об ошибке. Это сообщение для пользователя программы
(ситуация запуска приложения не из Delphi, а через exe-файл из Windows, т.е. не
существовует пунктов 2, 3, 4).

6. Программа продолжается (при этом она не сумела выполнить ту часть, в которой
произошла ошибка, и значит, если эта часть важная, продолжение может
сопровождаться дальнейшими ошибками).

Механизм обработки исключительных ситуаций заключается в том, что если
произошла ошибка (1) и не надо выводить (5), предпринимаются действия, чтобы (6) исполнялось корректно.

Для этого «опасная» команда (или целый блок) помещается внутрь конструкции try..except..end или try..finally..end.

Блок try..finally..end используется аналогично try..except.., но с тем отличием, что блок
команд между finally и end выполняется в любом случае, вне зависимости от того, было исключение между try и finally или нет.

Отладка программы: Классификация ошибок

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

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

Классификация ошибок.

Ошибки, которые могут быть в программе, принято делить на три группы:

  • синтаксические;
  • ошибки времени выполнения;
  • алгоритмические.

Синтаксические ошибки, их также называют ошибками времени компиляции (Compile-time error), наиболее легко устранимы. Их обнаруживает компилятор, а программисту остается только внести изменения в текст программы и выполнить повторную компиляцию.

Ошибки времени выполнения, в Delphi они называются исключениями (exception), тоже, как правило, легко устранимы. Они обычно проявляются уже при первых запусках программы и во время тестирования.

При возникновении ошибки в программе, запущенной из Delphi, среда разработки прерывает работу программы, о чем свидетельствует заключенное в скобки слово Stopped в заголовке главного окна Delphi, и на экране появляется диалоговое окно, которое содержит сообщение об ошибке и информа-

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

После возникновения ошибки программист может либо прервать выполнение программы, для этого надо из меню Run выбрать команду Program Reset, либо продолжить ее выполнение, например, по шагам (для этого из меню Run надо выбрать команду Step), наблюдая результат выполнения каждой инструкции.

Рис. 13.1. Сообщение об ошибке при запуске программы из Delphi 

Если программа запушена из Windows, то при возникновении ошибки на экране также появляется сообщение об ошибке, но тип ошибки (исключения) в сообщении не указывается (рис. 13.2). После щелчка на кнопке ОК программа, в которой проявилась ошибка, продолжает (если сможет) работу.

Рис. 13.2. Сообщение об ошибке при запуске программы из Windows

 

С алгоритмическими ошибками дело обстоит иначе. Компиляция программы, в которой есть алгоритмическая ошибка, завершается успешно. При пробных запусках программа ведет себя нормально, однако при анализе результата выясняется, что он неверный. Для того чтобы устранить алгоритмическую ошибку, приходится анализировать алгоритм, вручную «прокручивать» его выполнение.

Помоги проекту! Расскажи друзьям об этом сайте:

  • 60
  • 1
  • 2
  • 3
  • 4
  • 5

Понравилась статья? Поделить с друзьями:
  • Ошибка при запуски приложения 0xc0150002
  • Ошибка при запуске сити кар драйвинг msvcr100 dll
  • Ошибка при запуске сити кар драйвинг msvcp110 dll
  • Ошибка при запуске сити кар драйвинг msvcp100 dll
  • Ошибка при запуске сити кар драйвинг gettextwrapper unable