![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Памагите разобраться в ошибке! [D7, XP]
VitAngel © (2007-02-22 15:16:00)Вечер добрый! Вопрос такой: Дело в том, что у меня приложение работает нормально, а на чужом компе выдаёт ошибку "I\O Error XXXXX" (номер ошибки не помню). заметил только то, что когда прога при создании форма считывает с файла данные и вносит их на форму, из-за ошибки Edit'ы не запоняются. Подскажите что за ошибка
RASkov (2007-02-22 16:04:00) [21]Единственное, на мой взгляд, место ошибки это:
fName := ExtractFilePath(Application.ExeName)+'config.txt';
AssignFile(f, fName);
{$I-}
Reset(f);
{$I+}
Т.е. не находится файл fName....
Попробуй вставить MessageBox
fName := ExtractFilePath(Application.ExeName)+'config.txt';
MessageBox('Файл '+fName);
AssignFile(f, fName);
{$I-}
Reset(f);
{$I+}
MessageBox('Opened');
Если второй месседж покажется на "чужой" машине, то тогда фик его знает :(
Ну и обрати внимание что покажет первый.
А этот config.txt одинаковый на обоих компах?
ЗЫ Здесь желательно использование try ... finally .. end;
VitAngel (2007-02-22 15:52:00) [22]Вот:
procedure TFConf.FormCreate(Sender: TObject);
var f: TextFile;
fName: String[80];
i: integer;
buf :array[1..3] of string;
begin
fName := ExtractFilePath(Application.ExeName)+'config.txt';
AssignFile(f, fName);
{$I-}
Reset(f);
{$I+}
i:=1;
while not EOF(f) do
begin
readln(f, buf[i]);
i:=i+1;
end;
IP.Text:=buf[1];
Port.Text:=buf[2];
Name.Text:=buf[3];
CloseFile(f);
end;
Во второй форме практически тоже самое:
procedure TFMain.FormCreate(Sender: TObject);
var f: TextFile;
fName: String[80];
i: integer;
buf :array[1..3] of string;
begin
fName := ExtractFilePath(Application.ExeName)+'config.txt';
AssignFile(f, fName);
{$I-}
Reset(f);
{$I+}
i:=1;
while not EOF(f) do
begin
readln(f, buf[i]);
i:=i+1;
end;
if (buf[2]='') then
ClientSocket1.Port:=0
else
ClientSocket1.Port:=StrToInt(buf[2]);
CloseFile(f);
end;
RASkov (2007-02-22 15:52:00) [23]> Хотя я не вижу CloseFile, но думаю, что просто забыл написать,
> иначе он(код) бы не на одном компе не работал бы, так как
> ты его вызываешь два раза.
Здесь я неправ.
Вообще-то отсутствие CloseFile прямую ошибку не вызовет...
RASkov (2007-02-22 15:44:00) [24]> [2] VitAngel (22.02.07 15:28)
Обрати внимание на пути к программе у себя и на "чужом" компьютере
Все может быть, что на "чужом" файл fName недоступен, по каким либо причинам...
> [4] VitAngel (22.02.07 15:35)
Нет, вряд-ли из-за этого
Хотя я не вижу CloseFile, но думаю, что просто забыл написать, иначе он(код) бы не на одном компе не работал бы, так как ты его вызываешь два раза.
Покажи полность метод, откуда этот кусок кода....
VitAngel (2007-02-22 15:35:00) [25]а может быть из-за того, что я этот блок вызываю в FormCreate двух форм?
RASkov (2007-02-22 15:32:00) [26]> [2] VitAngel (22.02.07 15:28)
С учетом, что этот же код на одном компьютере работает, криминального ничего нет....
Ошибка в другом месте.... Мало информации.
VitAngel (2007-02-22 15:28:00) [27]Ну раз я в момент загрузки приложения только считываю данные, следовательно ошибка в этом месте:
fName := ExtractFilePath(Application.ExeName)+'config.txt';
AssignFile(f, fName);
{$I-}
Reset(f);
{$I+}
i:=1;
while not EOF(f) do
begin
readln(f, buf[i]);
i:=i+1;
end;
Где тут она может быть?
DrPass (2007-02-22 15:21:00) [28]У тебя какая-то ошибка ввода-вывода с неизвестным номером. Для ее исправления тебе нужно изменить какую-то процедуру или функцию в своей программе.