Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Сохранение и загрузка текста в TextBox


Автор: Guest 19.4.2005, 07:08
На форме имеется окно TextBox и 2 кнопки.
1-я для сохранения содержимого TextBox в файл с расширением .txt
2-я для загрузки текста из файла с расширением .txt в окно TextBox

Как это сделать?

Автор: Akina 19.4.2005, 07:13
Код
'draft
sub button1_click
open "filename.txt" for output as #1
print #1, textbox.text
close #1
end sub

sub button2_click
open "filename.txt" for intput as #1
textbox.text=""
while not oef(1)
line input #1,temp$
textbox.text=textbox.text & vbNL & temp$
wend
close #1
end sub


Автор: amt 19.4.2005, 08:18
Небольшое дополнение (на всякий случай)
Код

sub button1_click
open "filename.txt" for append as #1
print #1, textbox.text
close #1
end sub

Если файл filename.txt существует, то данные в него добавляются, в противном случае - создается новый.
А для кода
Код

sub button1_click
open "filename.txt" for output as #1
print #1, textbox.text
close #1
end sub
файл переписывается заново.

Автор: Black_Star 19.4.2005, 15:50
Код

sub button2_click
open "filename.txt" for intput as #1
textbox.text=""
while not oef(1)
line input #1,temp$
textbox.text=textbox.text & vbNL & temp$
wend
close #1

Эдакий старенький метод чтения smile)))
Код

Dim buff As String, fr As Long
fr = FreeFile
Open "d:\install.log" For Binary As fr
buff = Space(LOF(fr))
Get #fr, , buff
Close #fr
Text1 = buff

Ентот пошустрее будет smile

Автор: Akina 19.4.2005, 15:53
Цитата(Black_Star @ 19.4.2005, 16:50)
Ентот пошустрее будет

Вообще - да. Но такой файл, на котором это заметно, в TextBox просто не влезет smile

Автор: Black_Star 19.4.2005, 16:17
Хм... можно кусками вставлять...

Автор: Anhost 19.4.2005, 19:40
Я себе один раз написал функцию, и всю жизнь ею пользуюсь.

Код

Function F_Load(ByVal PATH As String, ByVal Position, ByVal Leng As Double) As String
  Dim Buf As String * 65500
  Dim EnS, a As Long
  Dim Channel As Integer
  If Position = 0 Then Position = 0
  If Leng = 0 Then Leng = FileLen(PATH) - (Position - 1)
  EnS = Position + (Leng - 1)
  If EnS > FileLen(PATH) Then EnS = FileLen(PATH)
  Channel = FreeFile
  Open PATH For Binary As Channel
  F_Load = ""
  '----------------------
  For a = Position To EnS Step 65500
    Get #Channel, a, Buf
    If EnS - a < 65500 Then
      F_Load = F_Load & Left$(Buf, EnS - (a - 1))
      GoTo 20
    End If
    F_Load = F_Load & Buf
  Next a
20
Close #Channel
End Function

Автор: Guest 19.4.2005, 20:08
' сохранение
Private Sub Command1_Click()
Open "D:\FUCKER.txt" For Output As #1
Print #1, Text1
Close #1
End Sub

' загрузка
Private Sub Command2_Click()
Dim buff As String, fr As Long
fr = FreeFile
Open "D:\FUCKER.txt" For Binary As fr
buff = Space(LOF(fr))
Get #fr, , buff
Close #fr
Text1 = buff
End Sub

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


Автор: Black_Star 20.4.2005, 00:31
Anhost, код до ужаса безобразный.
1. Загрузка работает только для текста
2. Зачем читать блоками??
3. 5я строка вообще не имеет смысла.
4. есть наличие Go to
5. если ф-я универсальная, то нету проверки на наличие файла.
.... smile

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

1. Для дописывания юзай Open "Fucker.txt" for append as #1
2. Юзай CommandDialog

Автор: Anhost 20.4.2005, 08:44
Цитата
3. 5я строка вообще не имеет смысла.

Здесь, имелось ввиду: If Position = 0 Then Position = 1 smile Обшибся немного...
Цитата
1. Загрузка работает только для текста

Нет, не только для текста. Я всё подряд ею загружаю.
Цитата
4. есть наличие Go to

Может мне кто-нибудь объяснит, что в Goto плохого?? А то все говорят "Фу, Goto!!", и на этом все объяснения заканчиваются!

С уважением, Anhost.

Автор: Exception 20.4.2005, 11:56
Цитата(Anhost @ 20.4.2005, 09:44)
Может мне кто-нибудь объяснит, что в Goto плохого??

Это называется "код-спагетти". Если есть другие выходы, пользоваться GoTo не стоит, т.к. это затрудняет чтение программы и считается плохим стилем программирования. smile

Автор: Akina 20.4.2005, 12:41
Цитата(Anhost @ 20.4.2005, 09:44)
что в Goto плохого

В нем нет логики. В нем нет системы. Анахронизм линейно-безпроцедурного программирования. Любая конструкция, созданная с помощью Goto, при правильном алгоритмическом подходе преобразуется в конструкцию, которая Goto не требует.

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