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

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

Странное поведение AssignFile( ) - короче не работает, а почему? [D6, Win95/98]


Страницы:   1 2

Сергей ©   (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]

Ошибка не здесь, где-то в другом месте

Желаю успехов


Страницы:   1 2

Наверх

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