| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Object Pascal: кроссплатформенные технологии > Добавление в фаил |
| Автор: SinSoul 7.6.2007, 01:56 |
| Добрый день или вечер! Я сделал игру на Паскале(курсовая), но появилась маленькая проблема. При завершении игры, лучшие 15 результатов добавляются в фаил. Проблема в том, что мне надо добавлять до или после лучшего результата, в зависимости от нового результата. Было несколько идей, но так ни одну и не смог воплотить. Сперва думал попробовать с функцией StrReplace() - не вышло, даже начать не смог. Второй вариант - считывать каждую линию, ввести в массив и потом сравнивать, но результат не далеко ушёл, т.к в файле не только integer типа данные. Пример: 1. Игрок1 - 152 2. Игрок2 - 131 3. Игрок3 - 111 Новый игрок набрал 122, нужно вставить между 2 и 3 результатами. Заранее благодарю. _____ С уважением, Дмитрий. |
| Автор: Poseidon 7.6.2007, 02:45 | ||
Сделай формат файла такой:
Загоняй весь файл в массив построчно (одна строка - один элемент массива), а так же добавляй новый результат. А потом сортируй массив и сохраняй заново. PS. Результат обязательно хранить в текстовом файле? |
| Автор: SinSoul 7.6.2007, 02:58 | ||||
А есть другой выбор? Существует ли функция сортировки массива? В php есть, может и в паскале тоже есть? Или мне создать функцию проверки(сравнивания) каждого элемента массива? И ещё,
эти данные можно получить только string типа, возможно сравнивание числовых значений после этого? Или я что-то не догоняю? Благодарю за помощь! |
| Автор: _Dargin_ 7.6.2007, 09:59 | ||||
| Либо использовать записи - не подойдет, если файл должен кто-то видеть, или брать кусок файла после 2 строчки-> загонять его в TMemoryStream-> очистить содержимое файла Truncate(как-то так)-> добавлять строку-> обратно вписывать содержимое TMemoryStream Изврат конечно. Поиск чисел в тексте Идя по каждой букве str:string проверяем
Учитывая что пользователь может в нике указать цифры меняем код вот так:
Считывается последние число, если в конце нет никаких символов. Кстати в TurboPascal 7 могут быть проблемы с функцией StrToInt, поэтому советую использовать компиляторы типа TMTPascal. Таким образом получаем число, а потом сортируем. и записываем в файл, если не устраивает первый вариант. Надеюсь помог |
| Автор: SinSoul 7.6.2007, 17:38 | ||||||||
Да! Конечно помогли! Спасибо большое! А насчёт TMemoryStream, ну я не настолько хороший "Паскалист", первый раз в жизни слышу о таком P.S. пользователь не сможет ввести цифры в име, т.к. я сделал проверку на нажатые клавиши Выглядит приблизительно вот так:
|