Text1.Text = "" не очищает Text1

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
BazaroffAM
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 31.05.2013 (Пт) 19:18

Text1.Text = "" не очищает Text1

Сообщение BazaroffAM » 18.06.2013 (Вт) 0:05

Пример из учебника. Обычное считывание текстового файла. Автор демонстрирует выполнение одного и того же действия двумя различающимися кодами.

Код: Выделить всё
Dim f As Long
Dim mytext As String
Dim allmytext As String

Private Sub Command1_Click()
Text1.Text = ""
f = FreeFile
Open App.Path & "\sun.txt" For Input As #f
Do Until EOF(f)
Line Input #f, mytext
Text1.Text = Text1.Text & mytext & vbCrLf
Loop
Close #f
End Sub

Private Sub Command2_Click()
f = FreeFile
Open App.Path & "\sun.txt" For Input As #f
Do Until EOF(f)
mytext = Input(1, #f)
allmytext = allmytext & mytext
Loop
Close #f
Text1.Text = allmytext
End Sub


Автор обращает внимание на строку

Код: Выделить всё
Text1.Text = ""


как необходимую для очистки Text1. Действительно, так и работает! При многократном нажатии на Command1, текст отображен без повторений.
Любопытства ради я вставил эту строку и в Command2_click. И глухо!
Сколько раз мы ткнем в Command2 - столько же раз текст добавится в Text1! То есть, очистки не происходит!
В чем дело? Растолкуйте тупорылой обезьяне!)

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 18.06.2013 (Вт) 0:14

Ну очевидно же... Даже не знаю что сказать...
А что вообще непонятно?

BazaroffAM
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 31.05.2013 (Пт) 19:18

Re: Text1.Text = "" не очищает Text1

Сообщение BazaroffAM » 18.06.2013 (Вт) 0:21

Qwertiy писал(а):А что вообще непонятно?


Как так "что"? :cyclops:
Строка исправно работает в коде Command1_click, и никак себя не проявляет в Command2_click (при ее добавлении).

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Text1.Text = "" не очищает Text1

Сообщение iGrok » 18.06.2013 (Вт) 0:34

А она и не должна себя проявлять. Как бы так попроще...

В первом случае содержимое текстбокса заменяется строкой, составленной из "старого" содержимого текстобкса и нового считанного из файла текста: Text1.Text = Text1.Text & mytext & vbCrLf

Т.е. считанный текст mytext таким образом добавляется (&) к старому содержимому текстбокса (Text1.Text).

Во втором - содержимое заменяется строкой, содержащийся в переменной allmytext: Text1.Text = allmytext.
Считанный же текст всегда добавляется к этой переменной: allmytext = allmytext & mytext.

Т.е. старое содержимое текстбокса не участвует в составлении нового, и бесполезно пытаться на него влиять.
Вместо этого нужно работать с переменной allmytext.
label:
cli
jmp label

BazaroffAM
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 31.05.2013 (Пт) 19:18

Re: Text1.Text = "" не очищает Text1

Сообщение BazaroffAM » 18.06.2013 (Вт) 0:44

Спасибо! В принципе понятно, но на практике сам навряд ли до этого додумаюсь: allmytext = "".
Вот ведь!.. Ну какого фига авторы подобных учебников обходят стороной такие вещи!!? У несчастного меня ну просто винегрет в голове из кусочковой информации!(((

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Text1.Text = "" не очищает Text1

Сообщение iGrok » 18.06.2013 (Вт) 0:59

Плохой учебник, значит. Но хорошего, к сожалению, не посоветую.
label:
cli
jmp label

deScriptor
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 14.05.2013 (Вт) 20:52

Re: Text1.Text = "" не очищает Text1

Сообщение deScriptor » 18.06.2013 (Вт) 22:20

На мой взгляд, неплохой учебник - А.Ананьев, А.Федоров "Самоучитель Visual Basic 6.0", "БХВ-Петербург", 2000. А если нужен код, который бы считывал содержимое текстового файла и отображал его в элементе "TextBox", то могу помочь.

deScriptor
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 14.05.2013 (Вт) 20:52

Re: Text1.Text = "" не очищает Text1

Сообщение deScriptor » 18.06.2013 (Вт) 23:47

Код: Выделить всё
Private Function LoadTextFromFile(strFileName As String) As String
   
    Dim intFreeFile As Integer
    intFreeFile = FreeFile()
   
    Open strFileName For Input As intFreeFile
   
    ' Можно так:
    LoadTextFromFile = Input(FileLen(strFileName), #intFreeFile)
   
    ' А можно вот так:
    'LoadTextFromFile = Input(LOF(intFreeFile), #intFreeFile)
   
    Close intFreeFile
   
End Function


И не надо никаких циклов и построчного чтения из файла, если нет нужды анализировать содержимое каждой строки.

BazaroffAM
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 31.05.2013 (Пт) 19:18

Re: Text1.Text = "" не очищает Text1

Сообщение BazaroffAM » 23.06.2013 (Вс) 10:46

deScriptor писал(а):А.Ананьев, А.Федоров "Самоучитель Visual Basic 6.0"


Облазил нэт! Ссыль не подкинешь?

ЗЫ Ничего, что на ты?

deScriptor
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 14.05.2013 (Вт) 20:52

Re: Text1.Text = "" не очищает Text1

Сообщение deScriptor » 02.07.2013 (Вт) 23:41

Извини, только сегодня зашел. У меня книга. Но, если надо, то я могу дать примеры кода с комментариями. Ссылки у меня, естественно, нет.

aleksmir
Обычный пользователь
Обычный пользователь
 
Сообщения: 88
Зарегистрирован: 10.08.2009 (Пн) 13:17

Re: Text1.Text = "" не очищает Text1

Сообщение aleksmir » 06.07.2013 (Сб) 21:01

Не советую щас VB учить... в эпоху планшетников и смартфонов теперь больше уместны WEB-приложения.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 35

    TopList