Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2008, 12:04   #1
Starscream
Пользователь
 
Аватар для Starscream
 
Регистрация: 17.02.2008
Сообщений: 18
По умолчанию Delphi Редактирование текстового файла

Привет.
Есть такая задачка по редактированию текстового файла.
Например есть файл Attribute.txt в котором записано следующее:

Сила = 70;
Ловкость = 50;
Жизнь = 100;
Мана = 90;
Умение пользоваться магией = True;

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

Второй вопрос: как добавить новую строку с новыми данными между строками 'Сила = 70;' и 'Ловкость = 50;'.
Starscream вне форума Ответить с цитированием
Старый 17.02.2008, 15:52   #2
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Переименовываешь файл, например, Attribute_old.txt, создаешь новый Attribute.txt, читаешь из старого строки, меняешь что надо и пишешь в новый, удаляешь старый.
_Dmitry вне форума Ответить с цитированием
Старый 17.02.2008, 16:24   #3
Starscream
Пользователь
 
Аватар для Starscream
 
Регистрация: 17.02.2008
Сообщений: 18
По умолчанию

Спасибо, но нельзя ли подробней об операции считывания из файла, и каким образом будут меняться те элементы что нада, то есть сами цифры и значение True.
Starscream вне форума Ответить с цитированием
Старый 17.02.2008, 16:43   #4
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Откройте любую книжку по Паскалю или Дельфи, вот основные процедуры и функции
Код:
F: TextFile; //файловая переменная
S: string;  //текстовая строка

AssignFile(F,'Attribute.txt'); //связывает F с именем файла
ReWrite(F); //создает новый файл и открывает его
Reset(F); //открывает существующий файл
CloseFile(F); //закрывает файл
WriteLn(F,S); //пишет в файл строку
ReadLn(F,S); //читает из файла строку и переводит указатель на следующую
eof(F) = true //если указатель достиг конца файла
Rename(F,'Новое имя'); //переименовывает файл
Erase(F); //удаляет файл

Последний раз редактировалось _Dmitry; 17.02.2008 в 16:50.
_Dmitry вне форума Ответить с цитированием
Старый 17.02.2008, 17:56   #5
Starscream
Пользователь
 
Аватар для Starscream
 
Регистрация: 17.02.2008
Сообщений: 18
По умолчанию

Возможно я неправильно поставил вопрос но ситуация следующая

Читаем строки из файла с помощью TStringList и получим что-то типа массива где Strings[i] будет содержать в себе строки файла. Допустим Strings[0] содержит в себа строку 'Сила = 70;'. Потом какойто переменной х присваиваем значение с TEdit, то есть x:=Edit1.Text; Далее как сделать так чтобы эта переменная х заменила значение 70 в Strings[0];
Starscream вне форума Ответить с цитированием
Старый 17.02.2008, 18:12   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Например Strings[0] :='Сила ='+Edit1.Text;
puporev вне форума Ответить с цитированием
Старый 17.02.2008, 19:24   #7
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Зачем это все... формат записи данных типа "Параметр=Значение" напоминает мне ini файлы... Но вы уже выдумали типа "Сила=.."
BOBAH13 вне форума Ответить с цитированием
Старый 17.02.2008, 19:32   #8
Starscream
Пользователь
 
Аватар для Starscream
 
Регистрация: 17.02.2008
Сообщений: 18
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
Например Strings[0] :='Сила ='+Edit1.Text;
Оно правильно, но в том случае если мы пишем типа
string[0]:='Сила = ';
string[1]:='Ловкость = ';
string[2]:='Жизнь = ';
................
string[n]:='Мана = ';

в самой программе, а я имею ввиду, что есть файл ???.txt программа его читает и значения 70 присваивает одной переменной, значение 50 другой и т. д. для дальнейшей работы с ними.

BOBAH13 еслибы все параметры, или данные хранились только в INI файлах, то я не просил бы о помощи.

Последний раз редактировалось Starscream; 17.02.2008 в 19:36.
Starscream вне форума Ответить с цитированием
Старый 17.02.2008, 23:30   #9
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Замена:
String[i]:=Copy(String[i],1, Pos('=',String[i])+1)+x;
Чтение:
x:=Copy(String[i],Pos('=',String[i])+1,Length(String[i])-Pos('=',String[i]));
ЗЫ не проверял, но принцип таков
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 18.02.2008, 10:25   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
еслибы все параметры, или данные хранились только в INI файлах, то я не просил бы о помощи.
Что мешает хранить все данные в ИНИ или рассматривать этот файл как ИНИ?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие текстового файла Victor Microsoft Office Excel 2 16.01.2008 03:42
Можно программно создать dll из текстового файла? hamann-2006 Помощь студентам 2 29.10.2007 10:41
Печать текстового файла на сетевой принтер VAbramyak Общие вопросы Delphi 3 06.04.2007 20:16