Форум программистов  
Главная  |  Правила форума  |  Исходники Delphi  |  Основы Delphi  |  Блог программистов  |  Рассылка  |  Повторная активизация e-mail  | 

Вернуться   Форум программистов > Новички в программировании > Помощь студентам


Ответ
 
Опции темы
Старый 13.01.2009, 21:51   #1
Gambit90
 
Регистрация: 20.12.2007
Сообщений: 5
Репутация: 10
По умолчанию Ошибка:"Project raised exception class EConvertError..."

Вообщем надо сделать тестирующую программу.И на псоледней стадии когда загружаю ini-файл с вопросами, то возникает эта ошибка:"Project Project1.exe raised exception class EConvertError with message "F:\comp.ini" is not a valid integer value. Process stopped. Use Step or Run to continue"

Вот текст программы (не весь)
Код:

var
  Form1: TForm1;
   i, a, n, balls, vopr: integer; 
dir, dir2, ss, zz, yes: string;
win: TIniFile; 
mass: array[1..100] of integer; 
f1, f2: file of char; 
cop: char;

implementation

{$R *.dfm}
 procedure TForm1.start();
begin
Randomize;
for i:=1 to n do mass[i] := 0;
{$I-}
Memo1.Visible := True;
RadioGroup1.Visible := True;
Label1.Visible := True;
an1.Visible := True;
an2.Visible := True;
an3.Visible := True;
an4.Visible := True;
p1.Visible := True;
p2.Visible := False;
p3.Visible := False;
p4.Visible := False;
p5.Visible := False;
balls := 0;
Label2.Visible := False;
Label1.Caption := 'Первый вопрос:';
dir2 := 'C:\base.bsd';
CopyFile(PChar(ss), PChar(dir2), True);
AssignFile(f1, ss) ;
AssignFile(f2, dir2);
Reset(f1);
Rewrite(f2);
while not Eof(f1) do
begin 
Read(f1, cop);
cop := Chr(Ord(cop) xor 101);
Write(f2, cop);
end;
CloseFile (f1);
CloseFile(f2);
{$I+}
Win := TIniFile.Create(dir2);
ss := Win.ReadString('num', 'num', ss);
n := StrToInt(ss);
vopr := Random(4) + 1;
vars(vopr);
end;
procedure TForm1.question_select() ;
label ran;
begin
Randomize;
ran:
a := Random(n);
for i:=1 to n do
if mass[i] = a then goto ran;
for i:=1 to n do
if mass[i] = 0 then
begin
mass[i] := a;
Break;
end;
an1.Checked := False;
an2.Checked := False;
an3.Checked := False;
an4.Checked := False;
end;
procedure TForm1.verno();
begin
if an1.Checked then
if yes = an1.Caption then balls := balls + 1;
if an2.Checked then
 if yes = an2.Caption then balls := balls + 1;
if an3.Checked then
if yes = an3.Caption then balls := balls + 1;
if an4.Checked then
if yes = an4.Caption then balls := balls + 1;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
dir := GetCurrentDir;
ss := dir + '\comp.ini';
zz := ss;
start();
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
DeleteFile('c:\base.bsd');
end;
procedure TForm1.N2Click(Sender: TObject);
begin
Randomize;
ss := zz;
start();
end;
procedure TForm1.N3Click(Sender: TObject);
begin
Randomize;
Open1.InitialDir := GetCurrentDir;
if not Open1.Execute
then ShowMessage('Вы не выбрали файл!')
else begin
ss := Open1.FileName;
 zz := ss;
start();
end;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
Halt;
end;

Красным выделено то место которое отмечает Delphi после этой ошибки.Помогите пожалуйста!
Gambit90 вне форума   Ответить с цитированием
Старый 13.01.2009, 23:28   #2
mihali4
*
Профессионал
 
Регистрация: 22.11.2006
Адрес: Москва
Сообщений: 9,226
Репутация: 2650
По умолчанию

Пытался разобраться и бросил - неохота ломать глаза на таком "листинге"...
Посему совет только один - поставьте брэкпойнт на предыдущей строке (от красной) и пройдитесь по шагам (F7).
Ошибку вам Дельфи покажет - она умная... Она даже текстом все говорит, правда, по-аглицки. В общем-то, текст ошибки уже все разъяснил...
mihali4 вне форума   Ответить с цитированием
Старый 14.01.2009, 01:19   #3
Gambit90
 
Регистрация: 20.12.2007
Сообщений: 5
Репутация: 10
По умолчанию

Не, не помогло
Вот программа во вложенном файле
Вложения
Тип файла: rar test.rar (235.1 Кб, 20 просмотров)
Gambit90 вне форума   Ответить с цитированием
Старый 14.01.2009, 01:52   #4
mihali4
*
Профессионал
 
Регистрация: 22.11.2006
Адрес: Москва
Сообщений: 9,226
Репутация: 2650
По умолчанию

Цитата:
Сообщение от Gambit90 Посмотреть сообщение
Не, не помогло
Вот программа во вложенном файле
Похоже, сказанное мной показалось вам китайским языком. Это совсем плохо. Элементарные вещи нужно знать.
(Еще хуже только то, что вы и не хотите это узнать. И не спрашиваете. Из-за ложной "скромности", надо полагать?)
Код:

{$I+}
Win := TIniFile.Create(dir2);
ss := Win.ReadString('num', 'num', ss);
n := StrToInt(ss);
vopr := Random(4) + 1;
vars(vopr);
end;

Знакомый кусок?
Так вот - значение SS при первом же проходе равно "COMP.INI".
И что вы хотите с этой строкой сделать?
Докладываю - n := StrToInt(ss); то есть "мечтаете" преобразовать ее в целое число...
Это возможно??? Конечно, нет! Почему?
Об этом вам недвусмысленно намекает Дельфи: ""F:\comp.ini" is not a valid integer value"
На всякий случай переведу: ""F:\comp.ini" не является допустимым выражением целого числа"...
Инцидент исчерпан?

Последний раз редактировалось mihali4; 14.01.2009 в 02:03.
mihali4 вне форума   Ответить с цитированием
Старый 14.01.2009, 02:11   #5
Gambit90
 
Регистрация: 20.12.2007
Сообщений: 5
Репутация: 10
По умолчанию

Так, и как же это исправить?Удалить строку n := StrToInt(ss); ??
Gambit90 вне форума   Ответить с цитированием
Старый 14.01.2009, 13:34   #6
mihali4
*
Профессионал
 
Регистрация: 22.11.2006
Адрес: Москва
Сообщений: 9,226
Репутация: 2650
По умолчанию

Вполне. Ибо я не вижу, где это N используется и зачем оно вообще...
mihali4 вне форума   Ответить с цитированием
Старый 14.01.2009, 14:12   #7
Gambit90
 
Регистрация: 20.12.2007
Сообщений: 5
Репутация: 10
По умолчанию

Всё, спасибо большое!Помогло!!!
Gambit90 вне форума   Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при использовании OlePropertyGet("Documents").OleProcedure("Add") в C++ Builder AleksP C++ Builder 7 11.04.2009 12:06
Exception in thread " main " java.lang.ArrayIndexOUTofBounds 3.14oner Java SE 2 08.11.2008 11:18
raised exception class EIdSocketError with message' Socket Error # 10022 Invalid argument eldar Работа с сетью в Delphi 16 08.08.2008 22:49
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 05:51
Создаю диаграмму "Bar". Подскажите как убрать растояние между "столбами" MAcK Компоненты Delphi 11 24.10.2007 09:49




10:52.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.

Forex с Admiral Markets — это надежно


Работа на Forex с 2000 года. Очное и дистанционное обучение. Выгодные условия.
магазин горящих туров


более 1000 горящих предложений ежедневно
Бэбиблог - соц сеть для будущих мам


RusProfile.ru


Справочник российских юридических лиц и организаций.