Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2009, 21:51   #1
Gambit90
 
Регистрация: 20.12.2007
Сообщений: 5
По умолчанию Ошибка:"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,201
По умолчанию

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

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

Цитата:
Сообщение от 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
По умолчанию

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

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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