Удаление строки

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

Удаление строки

Сообщение Константиин » 19.08.2008 (Вт) 14:20

У меня есть переменная variant, в которую я записываю текст из нескольких строк, например,
"ыорвпа
пвыап
ывап
ваырп".
Как мне удалить определённую строку из этой переменной, зная только номер этой строки???

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Удаление строки

Сообщение Proxy » 19.08.2008 (Вт) 15:05

REPLACE, INSTR и vbCRLF (последнее - константа) в помощь.
Ну или MID (можно слепить 2 куска (До и После искомой строки) с помощью &) вместо Replace, одночёрственно. Скорость только отлична и всё.
А как применить - думаю разберёшься.
Follow the white rabbit.

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Re: Удаление строки

Сообщение dr.MIG » 19.08.2008 (Вт) 16:15

А точно обоснованно хранение данных в вариантной переменной в данном случае? Может в рамках твоей задачи лучше подойдёт массив или коллекция?
Salus populi suprema lex

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Удаление строки

Сообщение Proxy » 19.08.2008 (Вт) 17:53

А точно обоснованно хранение данных в вариантной переменной в данном случае? Может в рамках твоей задачи лучше подойдёт массив или коллекция?

Это же первоначальное условие в этой задаче, заданное самим автором? Нет?
Follow the white rabbit.

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Re: Удаление строки

Сообщение dr.MIG » 19.08.2008 (Вт) 18:09

Да, первоначальное. Но об авторе и его задаче нам ничего не известно, поэтому, возможно, существуют альтернативные способы решения в рамках стоящей перед автором задачи.
Salus populi suprema lex

Константиин
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 09.08.2004 (Пн) 17:33

Re: Удаление строки

Сообщение Константиин » 19.08.2008 (Вт) 20:02

1)Ни INSTR, ни MID не пойдут, т.к. содержание строки неизвестно, известен только её номер.
2)Использование массива тоже не очень хороший вариант, т.к. переменных типа variant будет несколько, и всё это будет съедать очень много ресурсов, хотя так было бы легче =)))

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Удаление строки

Сообщение Хакер » 19.08.2008 (Вт) 20:40

1) Знать содержимое и не нужно. Нужно знать, чем раделяются линии.
2) Автор, что ты знаешь о ресурсах?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Константиин
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 09.08.2004 (Пн) 17:33

Re: Удаление строки

Сообщение Константиин » 19.08.2008 (Вт) 21:33

1)Если знать чем разделяются строки, то придётся делать перибором. Это конечно вариант, но нет ли чего-нибудь более оптимального (т.е. работающего быстрее).
2)Немного перефразирую: несколько переменных типа variant будут занимать меньше памяти, чем столько же массивов. Или я ошибаюсь???

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Удаление строки

Сообщение Хакер » 19.08.2008 (Вт) 21:38

1) Не придётся.
2) Уточняй.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Удаление строки

Сообщение Viper » 20.08.2008 (Ср) 7:23

Кстати, а почему Variant? Почему не String?
Весь мир матрица, а мы в нем потоки байтов!

Константиин
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 09.08.2004 (Пн) 17:33

Re: Удаление строки

Сообщение Константиин » 20.08.2008 (Ср) 8:07

Вообще-то можно использовать и string. Variant - это в общем случае, когда неизвестно какие будут данные в этой переменной и как она будет использоваться.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Удаление строки

Сообщение Viper » 20.08.2008 (Ср) 9:59

Константиин писал(а):Вообще-то можно использовать и string. Variant - это в общем случае, когда неизвестно какие будут данные в этой переменной и как она будет использоваться.
Соответственно возникает вопрос, а что же автор таки хочет сделать изначально?
Весь мир матрица, а мы в нем потоки байтов!

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Удаление строки

Сообщение Viper » 20.08.2008 (Ср) 10:03

Константиин писал(а):2)Немного перефразирую: несколько переменных типа variant будут занимать меньше памяти, чем столько же массивов. Или я ошибаюсь???
Т.е. вопрос звучит так: N переменных типа Variant будут занимать меньше памяти, чем N массивов? Так что ли? Массивов чего? Тоже Variant? Уточняй вопрос.
Весь мир матрица, а мы в нем потоки байтов!

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Удаление строки

Сообщение Денис » 21.08.2008 (Чт) 8:14

На самом деле, как мне кажется, автору нужен адекватный аналог дельфийскому классу TStringList. А что если нам сообща написать такой класс? Выложим его здесь или в проектах, а может даже и в кирпичах.
______________

Вот я тут набросал примерчик. Цепляете класс из архива к проекту и пишете вот такой код
Код: Выделить всё
   Dim A1 As StringList
   Set A1 = New StringList
   A1.CommaText = "апрвер, вапывап, апроапро"
   A1.Remove 2
   Debug.Print A1.CommaText
Вложения
StringList.rar
Пример: Класс StringList
(осторожно, бета-версия!)
(1.2 Кб) Скачиваний: 38
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.


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

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

Сейчас этот форум просматривают: AhrefsBot и гости: 71

    TopList