![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Странное поведение AssignFile( ) - короче не работает, а почему? [D6, Win95/98]
Сергей © (2002-12-25 20:39:00)Вводные такие
Delphi 6, win 98.
Процедура записи в файл
.......
var
F : TextFile;
S : String;
begin
S := "C:\temp\test.txt";
AssignFile(F,S);
// прокатывает
Rewrite(F); // I/O error "File not found"
Вызов идет из процедуры класса формы, которая создается в run time (т.е. ее копия не создается при запуске программы).
Процедура FileOpen и FileCreate работают здесь нормально.
Если я выдираю упомянутую форму из проекта и тестирую ее как отдельное приложение с созданием копии класса при запуске - все нормально.
Где же я мудак? - т.е. как правильно вызвать AssignFile (ну очень хочется иметь интерфейс текстового файла в етом месте).
Ответы плз, пишите на мыло, так как в инете бываю редко.
Спас.
Сергей (2002-12-25 21:51:00) [21]2 gsu> А форму ты откуда создаешь?
Проверь еще так
Форма 1 создается в самом начале.
Application.CreateForm(Form1, TForm1);
Application.Run;
TForm1 = class(TForm)
.......
proc CreateForm2;
end;
TForm2 = class(TForm)
.......
proc Save;
end;
var
Form1 : TForm1;
proc Form1.CreateForm2;
var
F2 : TForm2;
begin
F2 := TForm2.Create(Self);
end;
proc Form2.Save;
var
F : TextFile;
S : String;
begin
S := "C:\temp\test.txt";
AssignFile(F,S);
Rewrite(F);
CloseFile(F);
end;
А так прокатывает?
gsu (2002-12-25 21:46:00) [22]>> Anatoly Podgoretsky © (25.12.02 21:44)
>> Чудес же не бывает.
Бывают, но не в математике
Anatoly Podgoretsky (2002-12-25 21:45:00) [23]Кроме того попробуй создать файл "C:\temp\test.txt" из проводника
Anatoly Podgoretsky (2002-12-25 21:44:00) [24]Это могут быть постороннии компоненты, попробуй обращаться так
System.AssignFile
System.Rewrite
Чудес же не бывает.
gsu (2002-12-25 21:44:00) [25]Ах, да 98, сорри, но если все так:
Процедура записи в файл
.......
var
F : TextFile;
S : String;
begin
S := "C:\temp\test.txt";
AssignFile(F,S);
// прокатывает
Rewrite(F); // I/O error "File not found"
то мне самому интересно, потому как у мя работает, вот
Сергей (2002-12-25 21:39:00) [26]2 gsu > Дело не в правах. Под 98 я могу писать куда угодно - ето раз. Во вторых FileCreate работает.
2 Anatoly Podgoretsky > эти процедуры я не переопределял, первое что я проверил - нет ли процедур с такими именами в проекте - НЕТ.
gsu (2002-12-25 21:32:00) [27]var
F : TextFile;
S : String;
begin
S := "C:\temp\test.txt";
AssignFile(F,S);
Rewrite(F);
CloseFile(f);
end;
Наверняка, все работает, скорее нет прав на создание файла ?
Anatoly Podgoretsky (2002-12-25 21:30:00) [28]Ты пишешь "Если я выдираю упомянутую форму из проекта и тестирую ее как отдельное приложение с созданием копии класса при запуске - все нормально." - это говорит о том, что проблема у тебя в другом месте.
Возможно переопределен AssignFile мли Rewrite
Morfein (2002-12-25 21:30:00) [29]Ну как знаешь %))
Сергей (2002-12-25 21:27:00) [30]файла нет. Он должен создаваться после вызова Rewrite. Указанный путь существует. А прогу целиком слать - мазы нет, так много кб Ж)
Morfein (2002-12-25 21:16:00) [31]Ты не ответил, есть ли у тебя файл... А вообще, пришли прогу на мыло... мож чего скажу
Rouse_ (2002-12-25 21:15:00) [32]> Morfein © (25.12.02 21:03)
А какая разница есть или нет? Автор указал что у него Rewrite, здесь до балды, если нет то он сам создасться
> Сергей (25.12.02 20:52)
Код работоспособный
Желаю успехов
Сергей (2002-12-25 21:07:00) [33]Дык, сделать то все можно, только это вопрос времени (сколько его уйдет на хелпы по API, c учетом того, что пользую я его весьма ограничено). И ваще, вопрос принципиальный... Глюк ето неописанный или я дурак (второе конечно вероятней)
Morfein (2002-12-25 21:03:00) [34]А может у тебя действительно файла нету? %))
А если есть, то зачем ты привязался к этому методу?... Чё, WinAPI теперь не в моде?
CreateFile или открывает иили создаёт файл, или тестирует его наличие... быстро, выгодно, удобно!
Сергей (2002-12-25 20:52:00) [35]Да, забыл добавить, что F - локальная переменная.
Какой еще может быть вариант?
Допустим ли такое код?
var
T1 : TextFile;
imlementation
proc 1
begin
AssignFile(T1, "C:\test1.txt");
Rewrite(T1);
end;
proc 2
T2 : TextFile;
begin
AssignFile(T2, "C:\test2.txt");
Rewrite(T2);
//будет ли тут возникать ошибка
end;
Может ето мой случай?
Rouse_ (2002-12-25 20:45:00) [36]Ошибка не здесь, где-то в другом месте
Желаю успехов