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

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

проблема с сохранением в файл


Страницы:   1 2 3

fen ©   (2009-12-26 12:09:00) 

всем привет, подскажите:

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


fname:='save\'+save+'.txt';
 AssignFile(fil,fname);
 Append(fil);
 Writeln(fil,'Результаты игрока  '+save);
 Writeln(fil,'Дата и время сохранения : '+FrmTetr.Label10.Caption);
 Writeln(fil,'Число очков:  '+FrmTetr.lBall.Caption);
 Writeln(fil,'');
 CloseFile(fil);

то если файл не создан, то пишет ошибку, а если пишу Rewrite(fil)то не дописывает в него


Германн   (2009-12-27 01:12:00) [1]


> Ну так сделай когда уже набраны.
>

В OnClose или в OnCloseQuery.
Тоже хороший вариант, кстати.


Anatoly Podgoretsky   (2009-12-27 01:06:00) [2]

> fen  (27.12.2009 00:19:36)  [36]

Ну так сделай когда уже набраны.


fen   (2009-12-27 00:41:00) [3]

всем спасибо, за мучения со мной )


Sha   (2009-12-27 00:34:00) [4]

Выбери один из двух вариантов и не мучайся:
1. Файл объявлен локально в методе формы.
   Когда надо записать в файл, открываешь его, пишешь и закрываешь.
2. Файл объявлен в protected секции формы.
   Открываешь файл в FormCreate, пишешь в методах формы, закрываешь в FormDestroy.


sniknik   (2009-12-27 00:28:00) [5]

> а если мне нужно записать кол-во очков, набранных непосредственно перед закрытием формы?
неважно когда, принцип один - открываешь → записываешь → закрываешь. для гарантии используешь блок try finally. все. все логично, никакой путаницы, все файловые хендлы для системы доступны (поработал бы в DOS где их было 8 всего вроде по умолчанию, быстрее дошло бы.)


fen   (2009-12-27 00:22:00) [6]


> с чего это? нет таких правил чтобы файл закрывался только
> при закрытии формы.

а если мне нужно записать кол-во очков, набранных непосредственно перед закрытием формы?


fen   (2009-12-27 00:19:00) [7]


> очему нельзя по SpeedButton2 [4] открыть файл, записать
> что надо и закрыть?

да потому что при нажатии на SpeedButton2.Click очки еще не набраны!


Andy BitOff   (2009-12-27 00:15:00) [8]

> fen   (26.12.09 23:59) [32]

Хорошо что пишется, я бы даже сказал - замечательно. А теперь скажи, почему нельзя открыть файл, записать в него очки и закрыть? Почему нельзя по SpeedButton2 [4] открыть файл, записать что надо и закрыть? Объясни, почему нельзя сделать так.


sniknik   (2009-12-27 00:15:00) [9]

> да какое тут извращение?
пока маленькое, но стоит только начать...  

> при нажатии на кнопу SpeedButton2.Click у меня открывается диалог, куда записывается имя игрока ...
логика действий это не то же самое, что исполнение.

> а закрытие может происходить только при закрытии формы
с чего это? нет таких правил чтобы файл закрывался только при закрытии формы. (в отличие от правил работы с ресурсами которые есть)

p.s. вот теперь я понимаю откуда ноги растут у исполнителей длинных транзакций в базах, да еще завязанных на диалог с юзером...
с малого тренируются. т.к. сказать воспитываем кадры на простых примерах. :)))


Германн   (2009-12-27 00:05:00) [10]


> прочти [29] внимательнее

Зачем еще раз читать бредовую "якобы" причину?


fen   (2009-12-26 23:59:00) [11]


> Andy BitOff ©

прочти [29] внимательнее
> закрытие может происходить только при закрытии формы, т.
> к. в файл пишется еще кол-во очков, набранных игроком


Andy BitOff   (2009-12-26 23:54:00) [12]

> fen   (26.12.09 23:17) [29]

Блин, тебе же говорят - sniknik © [17] (первая часть). Открывай его где надо, вноси свои изменения и сразу закрывай. Что непонятно-то?


Германн   (2009-12-26 23:47:00) [13]


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

Это не может являться препятствием для решения [11].


fen   (2009-12-26 23:17:00) [14]


> sniknik ©

да какое тут извращение?
я не мог сделать так, как описано в [11], т.к.
при нажатии на кнопу SpeedButton2.Click у меня открывается диалог, куда записывается имя игрока (вся эта программа - игра "Тетрис"), которое и является именем файла, соответственно я не могу открыть файл до того, как нажал на кнопку, а закрытие может происходить только при закрытии формы, т.к. в файл пишется еще кол-во очков, набранных игроком, как раз поэтому я и спрашивал [4].


fen   (2009-12-26 23:11:00) [15]


> Anatoly Podgoretsky ©

я промолчу...


Anatoly Podgoretsky   (2009-12-26 22:45:00) [16]

> sniknik  (26.12.2009 22:24:26)  [26]

Если не пробьет, то может прибьет.


sniknik   (2009-12-26 22:24:00) [17]

> я вот это добиваюсь уже 20 сообщений
ты получил бы это сразу если бы в вопросе описал причину из-за которой без извращений нельзя... ну и если бы ее признали не надуманной. а так, раз это от непонимания, то пытались наставить на путь истинный. видимо неудачно.

> но можно было и без саарказма это сразу выдать
нельзя. либо так, либо никак. и до сих пор надежда, может тебя "пробьет", ну или хотя бы те кто будет читать это после "внемлют".
(если сразу после вопроса на извращение будет ответ, будет вид как будто так и надо делать...  "кульных хацкеров" в инете и без того хватает чтобы к ним еще искренне заблуждающихся добавлять.)


fen   (2009-12-26 21:12:00) [18]

теперь спасибо, но можно было и без саарказма это сразу выдать


fen   (2009-12-26 21:06:00) [19]


> то проверяй не клик (чего ты с него вообще хотел?) а файловый
> хендл на "открытость", т.е. if TTextRec(fil).Handle <> 0
> then

я вот это добиваюсь уже 20 сообщений


sniknik   (2009-12-26 20:09:00) [20]

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

> лучше по месту с try finally end
а кто спорит (см. [17])? но автор же хочет извращений.


Страницы:   1 2 3

Наверх

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