Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Памагите разобраться в ошибке! [D7, XP]


Страницы:   1 2

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]

У тебя какая-то ошибка ввода-вывода с неизвестным номером. Для ее исправления тебе нужно изменить какую-то процедуру или функцию в своей программе.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо