Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [VB6] Как изменить содержимое файла?


Автор: Fruks 11.9.2013, 12:32
Добрый день уважаемые форумчане! Столкнулся с такой проблемой:
В общем у меня такая задача: Открыть текстовый файл программой (пусть это будет C:\1.txt)
в нем есть 3 строки:
1. AllowEfect = 1
2. FreeEfect = 2
3. Premium Effect = 3
И мне нужно с помощью программы изменить FreeEfect = 2 На FreeEfect = 5
В чем проблема? В том что вместо "=2" может стоять любое число и я не знаю какое именно!
Мне нужно что бы в этом файле он удалял не только FreeEfect = а всю строчку вместе с неизвестным числом и заменял на FreeEfect = 5!
Не подскажете как сделать? Я пока только добился успеха путем удаления всего файла и заменой на другой ! Но мне нужно сохранить исходную информацию пользователя данного файла!
Спасибо за внимание.

Автор: TheTrick 11.9.2013, 13:21
Считывай построчно (Line Input) и анализируй, также записывай в файл.

Автор: Fruks 11.9.2013, 13:32
Можно подробнее ?  Я не очень силен  в вб:)

Автор: Akina 11.9.2013, 13:56
http://msdn.microsoft.com/en-us/library/aa266177(v=vs.60).aspx
http://msdn.microsoft.com/en-us/library/aa243392(v=vs.60).aspx
http://msdn.microsoft.com/en-us/library/aa266187(v=vs.60).aspx
http://msdn.microsoft.com/en-us/library/aa243283(v=vs.60).aspx

Автор: Fruks 11.9.2013, 14:16
А вы не могли бы мне просто код написать с помощью которого это можно осуществить? Пожалуйста smile

Автор: Akina 11.9.2013, 14:24
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Автор: Fruks 11.9.2013, 14:45
Я в принципе понял как перезаписать текст и все такое но как удалить строку и перезаписать ее вот этого яне понял :(

Автор: Akina 11.9.2013, 14:54
Цитата(Fruks @  11.9.2013,  15:45 Найти цитируемый пост)
как удалить строку и перезаписать ее 

Никак. 
Ты просто читаешь из одного файла и пишешь в другой. Потом первый прибиваешь, второй переименовываешь. Например...

Автор: Fruks 14.9.2013, 13:42
Нужно чтобы программа читала информацию файла, к примеру, (C:\1.txt), записывала всю информацию в переменную s
Потом находила в этих записях определенную строку, и заменяла ее на другую!
 
Напишите код пожалуйста ) Никак не могу сделать smile
Спасибо за внимание

Автор: Sanaff 15.9.2013, 15:57
Лучше считывать не в одну переменную, а в массив строк, потом из них создать файл легче.
Вам тут уже подсказали, Line Input считывание, Print запись
В чём конкретно непонятка?

Автор: Fruks 18.9.2013, 11:43
в том что я  не знаю как код написать

Автор: Hralain 1.11.2013, 19:02
Извиняюсь что так поздно, только заметил. Если всё еще нужно, то с мотри. (если т конечно это увидишь)

На форму добавь такую штучку, называется CommonDialog, 3 кнопки и 2 текстовых поля.

Private Sub Command1_Click() ' Подпрограмма диалог открытия файла на чтение
CommonDialog.FileName = ""
CommonDialog.Filter = "Файлы (*.txt) |*.txt"
CommonDialog.ShowOpen ' В этой строчке задается, что файл открывается на чтение
Text1.Text = Dlog.FileName ' Сохраняем имя файла в текстовом окне
End Sub

Private Sub Command2_Click() ' Подпрограмма диалог открытия файла на запись
CommonDialog.FileName = ""
CommonDialog.Filter = "Файлы (*.txt) |*.txt"
CommonDialog.ShowSave ' В этой строчке задается, что файл открывается на запись
Text2.Text = Dlog.FileName ' Сохраняем имя файла в текстовом окне
End Sub

Private_Sub Command3_Click()
Dim file1ToOpen As String, file2ToOpen As String, Mes As String ' задаем типы переменных

file1ToOpen = Text1.Text ' Задаем имя входного файла
Open file1ToOpen For Input As #1 ' открываем файл на чтение
x = Input$(LOF(1), 1) ' считываем весь файл в переменную
A = Split(x, vbCrLf): n = UBound(A) ' делим по строчкам
Close ' закрываем файл

For i = 1 to n ' задаем цикл, мы же не знаем сколько будет строчек
If Left(A(i),10 ) = FreeEffect then A(i) = "FreeEffect = 5" ' Если первые 10 символов этой строки равны "FreeEffect" то эта строка заменяется на  "FreeEffect = 5"
Esle A(i) = A(i) ' в других случаях она не меняется
Mes = Mes & A(i) & vbCrLf 'ну тут мы задаем переменную, которая будет строчкой (на конце это --> vbCrLf означает enter)
Next i ' закончили цикл


file2ToOpen = Text2.Text ' Задаем имя выходного файла
Open file2ToOpen For Output As #1 ' Открываем его на запись
Print #1, Mes ' Выводим весь текст в файл
Close ' Закрываем файл

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)