On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение



Сообщение: 28
Зарегистрирован: 25.06.08
Репутация: 0
ссылка на сообщение  Отправлено: 27.10.08 19:23. Заголовок: Чтение файлов.


Помогите разобраться с чтением файлов. Создается и записывается все корректно, а прочитать не могу.
Напишите, как правильно зацепить файл. Использую SetFilename, но работает что-то некорректно:
var SomeFile;
SomeFile.SetFileName ([путь до файла]);
SomeFile.OpenAsText(1);

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 19 [только новые]







Сообщение: 38
Зарегистрирован: 23.10.07
Репутация: 1
ссылка на сообщение  Отправлено: 27.10.08 19:48. Заголовок: Как проявляется неко..


Как проявляется некорректная работа?

_________________________

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 29
Зарегистрирован: 25.06.08
Репутация: 0
ссылка на сообщение  Отправлено: 27.10.08 22:13. Заголовок: В логи ошибки пишет ..


В логи ошибки пишет на строчки.

Просто напишите последовательность скриптов, как должно выглядеть.
Я примеры нигде не могу найти. поэтому и туплю.

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 40
Зарегистрирован: 23.10.07
Репутация: 1
ссылка на сообщение  Отправлено: 27.10.08 22:32. Заголовок: Если строчки кода в ..


Если строчки кода в твоем первом посте взяты прямо из скрипта, то у тебя там синтаксическая ошибка - вместо SetFileName надо писать SetFilename.

Далее, вот код который создает файл

var SomeFile = new File("test.txt");
SomeFile.OpenAsText(2);
SomeFile.WriteText("Test");
SomeFile.Close();

Вот код, который из этого файла читает

SomeFile.SetFilename("test.txt");
SomeFile.OpenAsText(1);
Game.Msg(SomeFile.ReadText(4));
SomeFile.Close();

Все работает. Не забываем про основное правило работы с файлами. Каждый открытый файл в последствии должен быть закрыт. Перед каждой сменой режима работы с файлом (чтение/запись) его нужно закрыть, если он был открыт

_________________________

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 30
Зарегистрирован: 25.06.08
Репутация: 0
ссылка на сообщение  Отправлено: 27.10.08 23:07. Заголовок: Вот мой скрипт. Не р..


Вот мой скрипт. Не работает. В чем отличие не понимаю.

(считаем, что проверка на существование Game.FileExist сделана выше, с ней никаких проблем)

var SomeFile;
SomeFile.SetFilename("test.txt"); Хотя полный вариант выглядит, как SomeFile.SetFilename(Game.SaveDirectory + "\test.txt");
SomeFile.OpenAsText(1);
Game.Msg(SomeFile.ReadText(4));
SomeFile.Close();

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 41
Зарегистрирован: 23.10.07
Репутация: 1
ссылка на сообщение  Отправлено: 27.10.08 23:16. Заголовок: И отрывок из лога, е..


Вот где ошибка
var SomeFile;

Должно быть
var SomeFile = new File("test.txt");
даже при условии, что файл существует. Этой командой ты не создаешь новый файл, а создаешь объект "файл" в игре, через который общаешься с физическим файлом. Теперь, если ты его откроешь для записи, он перезапишится, а чтобы изменять его содержимое нужен режим append

_________________________

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 32
Зарегистрирован: 25.06.08
Репутация: 0
ссылка на сообщение  Отправлено: 28.10.08 07:59. Заголовок: А зачем тогда нужно ..


А что тогда делает SomeFile.SetFilename("test.txt"); и зачем это нужно ?


Еще такая проблема пояявилась, когда использую Game.FileExists(Game.SaveDirectory + "\test.txt"); )то в логе пишится ошибка WARNING: Referencing absolute path 'C:\Documents and Settings\USER\My Documents\GAME'. The game will NOT work on another computer.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Сообщение: 114
Зарегистрирован: 10.07.07
Откуда: Россия, Новосибирск
Репутация: 0
ссылка на сообщение  Отправлено: 28.10.08 08:26. Заголовок: SomeFile.SetFilename..


SomeFile.SetFilename("test.txt") можно использовать когда ты создаешь объект без указания конкретного файла var SomeFile = new File()
Потом ты можешь привязать к этому объекту другой файл.

А на WARNING просто не обращай внимания.

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 35
Зарегистрирован: 25.06.08
Репутация: 0
ссылка на сообщение  Отправлено: 05.12.08 15:35. Заголовок: Обнаружилась странна..


Обнаружилась странная проблема

var SomeFile = new File(Game.SaveDirectory + "\save.game");
SomeFile.OpenAsText(2);
SomeFile.WriteText("Text");
SomeFile.Close ();

Ругается на строчку SomeFile.WriteText("Text");
Runtime error. File.WriteText: File must be open for writing in text mode.

Раньше все (вроде бы) было нормально, т.е. я эти скрипты уже давно не трогал, потому что все работало корректно.
Т.е. проблема в том, что не создается папка (с названием игры) в My Documents. Если я сам ее создаю, то все работает нормально.

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 36
Зарегистрирован: 25.06.08
Репутация: 0
ссылка на сообщение  Отправлено: 05.12.08 16:43. Заголовок: Вопрос снимается. Уп..


Вопрос снимается.
Упустил из виду Directory object

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 2
Настроение: Всегда отличное :)
Зарегистрирован: 06.12.08
Откуда: Россия, Иркутск
Репутация: 0
ссылка на сообщение  Отправлено: 08.02.09 17:12. Заголовок: Вопрос: var SomeFil..


Вопрос:
var SomeFile = new File("Text\ProfilesNames.txt");
SomeFile.OpenAsText(1);
for (var j = 0; j<5;j=j+1)
{
ProfileList[j] = SomeFile.ReadLine();
}
SomeFile.Close();
SomeFile.OpenAsText(2);
for (var i = 0; i<5;i=i+1)
{
SomeFile.WriteLine(ProfileList);
}
SomeFile.Close();

Выдаёт:

22:05: Runtime error. Script 'Window\ProfileNameWin.script', line 46(SomeFile.WriteLine(ProfileList);)
22:05: File.WriteLine: File must be open for writing in text mode.

Из файла читает нормально, а записывать почему то не хочет :(

Если же путь прописывать как (Directory.CurrentDirectory + "\ProfilesNames.txt")
то ошибки нет, но тогда файл валяеться рядом с екзешником, что есть не очень красиво)

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 76
Зарегистрирован: 23.10.07
Репутация: 4
ссылка на сообщение  Отправлено: 08.02.09 19:39. Заголовок: Проверь, возвращает ..


Проверь, возвращает ли SomeFile.OpenAsText(2); значение true
Скрипт проверил - у меня работает. SomeFile.WriteLine(ProfileList) нужно заменить на SomeFile.WriteLine(ProfileList[і]). Опечатка наверное

_________________________

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Сообщение: 150
Зарегистрирован: 10.07.07
Откуда: Россия, Новосибирск
Репутация: 0
ссылка на сообщение  Отправлено: 09.02.09 06:25. Заголовок: Опечатка наверное Я..



 цитата:
Опечатка наверное


Я сперва тоже так подумал. Это просто движок форума скрыл квадратные скобочки в сообщении. Видимо, принял их за BB-код.

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 3
Настроение: Всегда отличное :)
Зарегистрирован: 06.12.08
Откуда: Россия, Иркутск
Репутация: 0
ссылка на сообщение  Отправлено: 09.02.09 18:59. Заголовок: Да, опечатки не было..


Да, опечатки не было, форум захавал скобки, и пол текста стало курсивом

SomeFile.OpenAsText(2) Возвращает False, в то время как SomeFile.OpenAsText(1) успешно возвращает true, accessmode переменной SomeFile при попытке открыть в режиме writing соответственно не меняеться :(
Пробовал открывать в режиме appending, и не закрывать файл, не помогает :(
Пока помогает только переписать путь как (Directory.CurrentDirectory + "\ProfilesNames.txt").


Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 77
Зарегистрирован: 23.10.07
Репутация: 4
ссылка на сообщение  Отправлено: 09.02.09 20:56. Заголовок: Странно. У меня все ..


Странно. У меня все фурычит. У теба какая версия движка? У меня последняя бета V.1.8.009
Ты с файлом еще какие-то действия прежде выполняешь? И еще на всякий случай, покажи лог целиком

_________________________

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 5
Настроение: Всегда отличное :)
Зарегистрирован: 06.12.08
Откуда: Россия, Иркутск
Репутация: 0
ссылка на сообщение  Отправлено: 10.02.09 19:08. Заголовок: Версия движка: V.1...


Версия движка: V.1.8.009.
Прежде с файлом действий никаких(
Код:

var SomeFile = new File("Text\ProfilesNames.txt");

SomeFile.OpenAsText(2);
for (i = 0; i<5;i=i+1)
{
SomeFile.WriteLine(ProfileList" i в квадратных скобочках");
}


Лог:

00:06: ********** DEBUG LOG OPENED 11-02-2009 (Release Build) *****************
00:06: Wintermute Engine ver 1.8.9beta, Compiled on Dec 20 2008, 13:01:44
00:06: Platform: Windows XP Service Pack 2 (Build 2600)
00:06: DirectX version: 9.0
00:06:
00:06: Scanning packages...
00:06: Registered 0 files in 0 package(s)
00:06: Initializing scripting engine...
00:06: Script compiler bound successfuly
00:06: Loading plugins...
00:06: wme_sample_pixel.dll
00:06: wme_snow.dll
00:06: Loading string table...
00:06: 49 strings loaded
00:06: Enumerating Direct3D devices...
00:06: Enumerating DirectSound devices...
00:06: Game aspect ratio: 1.333333
00:06: Monitor aspect ratio: 1.333333
00:06: Game aspect ratio is the same as monitor aspect ratio.
00:06: Backup resolution: 1024 x 768
00:06:
00:06: Available video devices:
00:06: NVIDIA GeForce 6600 (accelerated)
00:06: Driver: nv4_disp.dll 6.14.10.9131
00:06: Monitor: 0
00:06: Available audio devices:
00:06: Первичный звуковой драйвер
00:06: SB Live! звуковое устройство
00:06: [no sound]
00:06:
00:06: User selected:
00:06: Using requested resolution (1024 x 768)
00:06: Video: NVIDIA GeForce 6600 (accelerated)
00:06: Windowed:no Colors:32bit T&L:no Multisample:0
00:06: Audio: Первичный звуковой драйвер
00:06: Maximum texture size: 4096x4096
00:06: Engine initialized in 58 ms
00:06:
00:06: Runtime error. Script 'Window\ProfileNameWin.script', line 67
00:06: File.WriteLine: File must be open for writing in text mode.
00:06: Runtime error. Script 'Window\ProfileNameWin.script', line 67
00:06: File.WriteLine: File must be open for writing in text mode.
00:06: Runtime error. Script 'Window\ProfileNameWin.script', line 67
00:06: File.WriteLine: File must be open for writing in text mode.
00:06: Runtime error. Script 'Window\ProfileNameWin.script', line 67
00:06: File.WriteLine: File must be open for writing in text mode.
00:06: Runtime error. Script 'Window\ProfileNameWin.script', line 67
00:06: File.WriteLine: File must be open for writing in text mode.
00:07:
00:07: Shutting down...
00:07: Shutting down scripting engine
00:07: ********** DEBUG LOG CLOSED ********************************************


Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 78
Зарегистрирован: 23.10.07
Репутация: 4
ссылка на сообщение  Отправлено: 10.02.09 21:30. Заголовок: Поставил на txt файл..


Поставил на txt файл атрибут "только чтение" и получил твою ошибку. Может в этом проблема? Проверь

_________________________

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 7
Настроение: Всегда отличное :)
Зарегистрирован: 06.12.08
Откуда: Россия, Иркутск
Репутация: 0
ссылка на сообщение  Отправлено: 11.02.09 17:49. Заголовок: Это я проверил в пер..


Это я проверил в первую очередь, перепроверил всё ещё раз, всё как прежде

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 79
Зарегистрирован: 23.10.07
Репутация: 4
ссылка на сообщение  Отправлено: 11.02.09 21:50. Заголовок: Вот wme проект: http..


Вот wme проект:
http://rapidshare.com/files/196888059/1.zip.html
Это пустой проект на основе шаблона. В файле scenes\Room\scr\scene_init.script в самом начале находится твой код
В Text\ProfilesNames.txt файле пять строк с цифрами от 1 до 5. Запусти проект на исполнение и сразу выходи. Если все ок, то в файле Text\ProfilesNames.txt строки будут в обратном порядке от 5 до 1. Т.е. файл открывается для чтения, читается в массив, а потом перезаписывается в обратном порядке. У меня все работает (смотри лог). Проверь, что получается у тебя.

_________________________

Спасибо: 1 
ПрофильЦитата Ответить





Сообщение: 8
Настроение: Всегда отличное :)
Зарегистрирован: 06.12.08
Откуда: Россия, Иркутск
Репутация: 0
ссылка на сообщение  Отправлено: 12.02.09 18:57. Заголовок: Всё, сработало!:) И ..


Всё, сработало!:) И я сразу понял в чёс проблема у меня была:
У меня папка Техт лежала в папке Data, хоть при этом и функция Copy Filename и даёт тот же самый путь, если файлы лежат в папке проекта:) Перенёс папку, и всё заработало!) Огромное Спасибо!!! :))))
Правда теперь если скомпилить проект, то тогда игра отказываеться работать с файлами вообще, так что всё равно придёться делать их "внешними" -_-

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 0
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет