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 (ну очень хочется иметь интерфейс текстового файла в етом месте).

Ответы плз, пишите на мыло, так как в инете бываю редко.
Спас.


Alexander1966   (2002-12-27 15:28:00) [1]

А диск точно c: СИ, может c: ЭС. Бывает.


gsu   (2002-12-26 16:03:00) [2]

>> TStringList.SaveToFile("path")
героическое решение ...


Жорик   (2002-12-26 14:19:00) [3]

Попробуй такую связку:

var f: system.text;
//
assignfile(f,"c:\temp.text");
rewrite(f);

...

closefile(f);

Должно работать, по крайней мере у меня работает...


Каспер   (2002-12-26 14:04:00) [4]

:) Сорри Но точно там стоит AssignFile а не Assign?


Сергей   (2002-12-26 13:08:00) [5]

Ничего не решилось. Все еще интьересней. Assign, Rewrite и CloseFile везде ходят парами. Из некоторых классов форм Assign работает, из некоторых нет - сл-но дело не в забытии закрыть файл.

PVOzerski >> либо
где-то происходит несанкционированное перекрытие строковой или файловой переменной
с "забиванием" его содержимого из-за некоррекной работы с индексами, динамической
памятью и т.п. или даже глюка компилятора.

Скорее всего так, но сроки жмут (2 дня осталось). Посему все кончилось прозаически - TStringList.SaveToFile("path");

Спасибо всем!


Каспер   (2002-12-26 11:26:00) [6]

Так все решилось? И все таки интересно что выдал ИОРезулт


Song   (2002-12-26 11:21:00) [7]

Я уже сказал в чём проблема..


Каспер   (2002-12-26 11:04:00) [8]

Все таки интересно чем это закончится.
Мне так интитивно кажется что файл уже занят чем то.
Давай выведи на экран IOResult... предварительно отрубив {$I-}...


gsu   (2002-12-26 10:50:00) [9]

угу, все хренова оптимизация


Anatoly Podgoretsky   (2002-12-26 10:38:00) [10]

Во всяком случае придено недостаточно информации, причина ошибки в неприведенном коде, на это также указывает следующее:

Если я выдираю упомянутую форму из проекта и тестирую ее как отдельное приложение с созданием копии класса при запуске - все нормально.


gsu   (2002-12-26 10:28:00) [11]

Да, да может понаоткрывал, а не закрывал и комп обиделся, грузанись.
А на счет в какой ты форме открываешь, это по фигу, если она создана и работоспособна


icWasya   (2002-12-26 10:23:00) [12]

а втом примере что приведён нет CoseFile


PVOzerski   (2002-12-26 00:17:00) [13]

IMHO, либо ошибка совсем нелепая (например, нет на самом деле каталога c:\temp), либо
где-то происходит несанкционированное перекрытие строковой или файловой переменной
с "забиванием" его содержимого из-за некоррекной работы с индексами, динамической
памятью и т.п. или даже глюка компилятора. Попробуйте-ка посмотреть содержимое
файловой переменной в момент rewrite - то ли там имя. Внутреннее представление
структуры поищите в исходниках RTL, наверняка можно обойтись приведением
типов (во FreePascal есть TextRec и FileRec, наверняка подобное есть и в Delphi).


Song   (2002-12-25 23:24:00) [14]

Такое бывает когда предыдуще открытый такого же типа файл не закроешь, а потом снова делаешь ReWrite(), и прчём здесь уже похрену, какая это переменная локальная или глобальная.


Сергей   (2002-12-25 22:07:00) [15]

2 Anatoly Podgoretsky> Вся ета эпопея станет украшением fido7.ru.delphi.chainik :)


Сергей   (2002-12-25 22:04:00) [16]

system.dcu в единственном экземпляре. А что там - только дельфи знает :) Бэкапов вроде не наблюдается.


Anatoly Podgoretsky   (2002-12-25 22:01:00) [17]

Да и system.pas не интересует, интеренсует только system.dcu


Сергей   (2002-12-25 21:59:00) [18]

Результат тот же. Может Дельфа мусором поросла? Я тут недавно компоненты смотрел, модет они напоганили чего? Переинсталить ее...


Anatoly Podgoretsky   (2002-12-25 21:57:00) [19]

Ты проверил

System.AssignFile
System.Rewrite

Если проверил какой результат?


Сергей   (2002-12-25 21:54:00) [20]

Файл тестовый из проводника создается. system.pas на диске в единственном экземпляре, и обращение напрямую system.rewrite не помогает :( Ето все я уже долбал.


Страницы:   1 2

Наверх

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