Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получит коллекцию без расширения 
V
    Опции темы
DENSHER
Дата 3.10.2010, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 3.3.2010

Репутация: нет
Всего: нет



Приветствую люди.
Помогите пожалуйста получить коллекцию в ListView1 без расширения.
Вот код:
Код

Private Function MapsMethod2(ByVal data As String) As Object
            If data IsNot Nothing Then
                Dim filter() As String = data.Split(New String() {"PENDING:   (fs) "}, System.StringSplitOptions.RemoveEmptyEntries)
                For Each Line As String In filter
                    ListViewMap1.Items.Add(Line)
                Next
            End If
            ListViewMap1.Items.RemoveAt(0)
            Return Nothing
        End Function

к которому нужно пририсовать Syste.IO.Path.GetFileNameWithoutExtension(".bsp"). Для более понятной картины, список берется из data. 
Видел много примеров где скрываю расширения , но там все примеры с путями к локальному диску. У меня же , берется список от сторонней программы - из консоли ее. Сам пытался но ничего так и не получилось. Видно моих знаний еще не хватает для этого.
Очень рассчитываю на вашу помощь.
PM MAIL   Вверх
Pilger
Дата 3.10.2010, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 10.5.2008
Где: Германия

Репутация: нет
Всего: нет



Syste.IO.Path.GetFileNameWithoutExtension принимает параметр String, где указан путь файлу и возвращает имя файла без расширения. То есть:
Код

Syste.IO.Path.GetFileNameWithoutExtension(".bsp")

явно не верно. Тебе надо убирать расширение перед добавлением. А если у тебя кроме .bsp ничего больше нет, то можно сразу вырезать через split.

Это сообщение отредактировал(а) Pilger - 4.10.2010, 16:10


--------------------
Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert.
PM MAIL ICQ   Вверх
DENSHER
Дата 3.10.2010, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 3.3.2010

Репутация: нет
Всего: нет



Pilger , а можешь показать пример с моим кодом smile ?

Это сообщение отредактировал(а) DENSHER - 3.10.2010, 20:10
PM MAIL   Вверх
Heinzz
Дата 3.10.2010, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 12.12.2008
Где: .net

Репутация: нет
Всего: 9



Код

    Private Function MapsMethod2(ByVal data As String) As Object
        If data IsNot Nothing Then

            Dim filter() As String = data.Split(New String() {"PENDING:   (fs) "}, System.StringSplitOptions.RemoveEmptyEntries)

            For Each Line As String In filter
                ListView1.Items.Add(System.IO.Path.GetFileNameWithoutExtension(Line))
            Next
        End If
        ListView1.Items.RemoveAt(0)
        Return Nothing
    End Function

End Class

если я правильно понял формат данных

Добавлено через 10 минут и 41 секунду
Нашел что имелось в виду
Код

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MapsMethod2("file fs name01.exe file fs name02.gif file fs name03.txt file fs name04.pdf file fs name05.exe")

    End Sub

    Private Function MapsMethod2(ByVal data As String) As Object
        If data IsNot Nothing Then

            Dim filter() As String = data.Split(New String() {"file fs"}, System.StringSplitOptions.RemoveEmptyEntries)

            For Each Line As String In filter
                ListView1.Items.Add(System.IO.Path.GetFileNameWithoutExtension(Line))
            Next
        End If
        'Зачем это?
        'ListView1.Items.RemoveAt(0)
        Return Nothing
    End Function

End Class

Все добавляет без расширений


--------------------
user posted image
PM MAIL   Вверх
DENSHER
Дата 3.10.2010, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 3.3.2010

Репутация: нет
Всего: нет



Цитата(Heinzz @  3.10.2010,  21:58 Найти цитируемый пост)

    
        'Зачем это?
        'ListView1.Items.RemoveAt(0)
 


Просто при добавлении списка , первая строчка (index) не нужна она состоит из ------------------- символов.

Получается не то что я хотел. Мне нужно чтобы в MapsMethod2 > ListViewMap1.Items.Add(Line)  уже получать список без расширения , поскольку ListViewMap1.Items.Add(Line) сразу отправляет коллекцию в ListViewMap1 , без нажатия на Button1. 
Если разложить все по полочкам , то получается вот такая картинка:
Идет оправка команды
Код

ListViewMap1.Items.Clear()
sr.ServerCommand("maps *")

через sr.ServerCommand("maps *") идет процесс (его не описываю) и доходит до метода MapsMethod2  отправка коллекции в ListViewMap1.

Это сообщение отредактировал(а) DENSHER - 3.10.2010, 22:43
PM MAIL   Вверх
Heinzz
Дата 3.10.2010, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 12.12.2008
Где: .net

Репутация: нет
Всего: 9



а причем здесь Button? вставляйте метод куда угодно


--------------------
user posted image
PM MAIL   Вверх
DENSHER
Дата 3.10.2010, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 3.3.2010

Репутация: нет
Всего: нет



Цитата(Heinzz @  3.10.2010,  22:58 Найти цитируемый пост)
а причем здесь Button? вставляйте метод куда угодно 

Я попытался , но не получилось. При попытке вот этого кода:
Код

Public Class Form1
    Private Function MapsMethod2(ByVal data As String) As Object
        If data IsNot Nothing Then
            Dim filter() As String = data.Split(New String() {"file fs"}, System.StringSplitOptions.RemoveEmptyEntries)
            For Each Line As String In filter
                ListViewMap1.Items.Add(System.IO.Path.GetFileNameWithoutExtension(Line))
            Next
        End If
        ListViewMap1.Items.RemoveAt(0)
        Return Nothing
    End Function
End Class

Идет опрос сторонней программы и при получение ответа проходящего через MapsMethod2 пишет: Путь содержит недопустимые знаки.
Извини , если я что-то не понял.Я не вижу где сюда вписать фильтр расширения .bsp! Просто я уже битую неделю мучаюсь и уже вынес себе голову и ничего не соображаю - чего , где ,куда и зачем(прочитав немерено информации и просмотрев примеров).

Дополню:
Я просто не понял чуток вот этого кода:
Код

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MapsMethod2("file fs name01.exe file fs name02.gif file fs name03.txt file fs name04.pdf file fs name05.exe")
    End Sub

Поскольку я получаю список не всегда одинаковый (количество). Он может быть от 3 и до XXX.
Извиняю если что-то не правильно объясняю , поскольку уже просто сам запутался.

Это сообщение отредактировал(а) DENSHER - 4.10.2010, 18:42
PM MAIL   Вверх
Heinzz
Дата 4.10.2010, 06:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 12.12.2008
Где: .net

Репутация: нет
Всего: 9



Цитата(DENSHER @  3.10.2010,  23:22 Найти цитируемый пост)

Код

Public Class Form1
    Private Function MapsMethod2(ByVal data As String) As Object
        If data IsNot Nothing Then
            Dim filter() As String = data.Split(New String() {"file fs"}, System.StringSplitOptions.RemoveEmptyEntries)
            For Each Line As String In filter
                ListViewMap1.Items.Add(System.IO.Path.GetFileNameWithoutExtension(Line))
            Next
        End If
        ListViewMap1.Items.RemoveAt(0)
        Return Nothing
    End Function
End Class




Идет опрос сторонней программы и при получение ответа проходящего через MapsMethod2 пишет: Путь содержит недопустимые знаки.
Извини , если я что-то не понял.Я не вижу где сюда вписать фильтр расширения .bsp! Просто я уже битую неделю мучаюсь и уже вынес себе голову и ничего не соображаю - чего , где ,куда и зачем(прочитав немерено информации и просмотрев примеров).


Значит там есть знаки которые не могут быть использованы в файловой системе. Лучший вариант это для начала удостовериться что ТОЧНО приходит как аргумент data (вывести в текстовый файл например или в окошко какое-нибудь) Может иногда абракадабра заходит?
фильтр bsp вписывать зачем? ведь System.IO.Path.GetFileNameWithoutExtension(Line) убирает все расширения.
 Или нужно на выходе иметь имена файлов только с расширением bsp? тогда надо маленько изменить:
Код

For Each Line As String In filter
                Dim str As String = System.IO.Path.GetExtension(Line)
                If (str = ".bsp ") Then
                    ListView1.Items.Add(System.IO.Path.GetFileNameWithoutExtension(Line))
                End If
            Next



--------------------
user posted image
PM MAIL   Вверх
DENSHER
Дата 4.10.2010, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 3.3.2010

Репутация: нет
Всего: нет



Цитата(Heinzz @  4.10.2010,  06:11 Найти цитируемый пост)
Значит там есть знаки которые не могут быть использованы в файловой системе

В том-то и проблема что там нет никаких знаков лишних которые не могла бы использовать файловая системе. 
Я попробовал сохранить в текстовой документ дату:
Код

Private Function MapsMethod2(ByVal data As String) As Object
            If data IsNot Nothing Then
                Dim savef As New System.IO.StreamWriter("C:\test.txt")
                savef.Write(data)
                savef.Close()
            End If
            Return Nothing
        End Function

и получил в тестовом документе:
-------------
PENDING:   (fs) 35hp_beta3.bsp
PENDING:   (fs) aim_deagle7k.bsp
PENDING:   (fs) awp_india_v2.bsp
PENDING:   (fs) awp_lego.bsp
PENDING:   (fs) awp_zonesportsgaming.bsp
PENDING:   (fs) cs_assault.bsp
PENDING:   (fs) cs_compound.bsp
PENDING:   (fs) cs_havana.bsp
PENDING:   (fs) cs_italy.bsp
PENDING:   (fs) cs_militia.bsp
PENDING:   (fs) cs_office.bsp
PENDING:   (fs) de_aztec.bsp
PENDING:   (fs) de_cbble.bsp
PENDING:   (fs) de_chateau.bsp
PENDING:   (fs) de_dust.bsp
PENDING:   (fs) de_dust2.bsp
PENDING:   (fs) de_inferno.bsp
PENDING:   (fs) de_nuke.bsp
PENDING:   (fs) de_piranesi.bsp
PENDING:   (fs) de_port.bsp
PENDING:   (fs) de_prodigy.bsp
PENDING:   (fs) de_tides.bsp
PENDING:   (fs) de_train.bsp
PENDING:   (fs) ka_behindyou.bsp
PENDING:   (fs) wc3_dust2.bsp

и я не вижу здесь недопустимых знаков , да и текстовой документ сохранился нормально и не на что не ругался.
Получается у меня , что я могу исключить только PENDING:   (fs) , а .bsp не как не получается (
Хочется все же получить вот такой список:
35hp_beta3
aim_deagle7k
awp_india_v2
awp_lego
ит.д.

Это сообщение отредактировал(а) DENSHER - 4.10.2010, 15:54
PM MAIL   Вверх
diadiavova
Дата 4.10.2010, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(DENSHER @  4.10.2010,  16:48 Найти цитируемый пост)
В том-то и проблема что там нет никаких знаков лишних которые не могла бы использовать файловая системе. 

В том то и дело, что есть: переводов строк ты не видишь, но это тоже символы и в именах файлов их использовать нельзя. 
Решение: к строке-разделителю вначале добавь vbNewLine
Код

vbNewLine & "PENDING:   (fs) "



--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
DENSHER
Дата 4.10.2010, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 3.3.2010

Репутация: нет
Всего: нет



Цитата(diadiavova @  4.10.2010,  15:57 Найти цитируемый пост)
Решение: к строке-разделителю вначале добавь vbNewLine
Выделить всёкод VB.NET
1:
    
vbNewLine & "PENDING:   (fs) "

Все равно ругается ((( на знаки.

Это сообщение отредактировал(а) DENSHER - 4.10.2010, 18:43
PM MAIL   Вверх
diadiavova
Дата 4.10.2010, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Код

        Private Function MapsMethod2(ByVal data As String) As Object
            If data IsNot Nothing Then
                Dim filter() As String = data.Split(New String() {vbCr, vbLf, "-", "PENDING:   (fs) "}, System.StringSplitOptions.RemoveEmptyEntries)
                For Each Line As String In filter
                    ListViewMap1.Items.Add(System.IO.Path.GetFileNameWithoutExtension(Line))
                Next
            End If
            ListViewMap1.Items.RemoveAt(0)
            Return Nothing
        End Function



--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
DENSHER
Дата 4.10.2010, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 3.3.2010

Репутация: нет
Всего: нет



diadiavova , спасибо огромное за помощь.
PM MAIL   Вверх
Pilger
Дата 5.10.2010, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 10.5.2008
Где: Германия

Репутация: нет
Всего: нет



Цитата

Просто при добавлении списка , первая строчка (index) не нужна она состоит из ------------------- символов.


Имей в виду, что теперь этого не будет.


--------------------
Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert.
PM MAIL ICQ   Вверх
DENSHER
Дата 6.10.2010, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 3.3.2010

Репутация: нет
Всего: нет



Pilger , спасибо я это заметил.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0603 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.