![]() |
| ||
|
|
Новости |
Поиск |
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 (ну очень хочется иметь интерфейс текстового файла в етом месте).
Ответы плз, пишите на мыло, так как в инете бываю редко.
Спас.
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 не помогает :( Ето все я уже долбал.