Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634

Сортировка элементов типа String

03.06.2018, 09:40. Показов 1885. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Подскажите (алгоритм) как отсортировать списки вида
Code
1
2
3
4
5
6
7
8
116.230.100.235:21915
117.82.219.125:2471
112.122.81.202:21513
117.82.218.125:2471
177.44.244.221:6339
117.66.140.164:6881
222.77.42.29:5137
117.82.219.129:2471
конечная цель привести к виду:
Code
1
2
3
4
5
6
7
8
112.122.81.202:21513
116.230.100.235:21915
117.66.140.164:6881
117.82.218.125:2471
117.82.219.125:2471
117.82.219.129:2471
177.44.244.221:6339
222.77.42.29:5137
Т.е сортировка по всем регистрам списка
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.06.2018, 09:40
Ответы с готовыми решениями:

как присвоить имена файлов массмву типа aa(n) as string
спасибо

Сортировка элементов класса в списке по полю типа string
Ребята, прошу помощи. 3й день не могу реализовать. Есть список выражений, по числам и по алфавиту сортирую. Но как отсортировать по знакам...

Из элементов массива типа integer в -> строку типа string
Вначале я перевожу из строки в массив, а затем мне необходимо сделать компиляцию обратно из массива в строку. Вопрос как же это сделать? ...

21
Модератор
10045 / 3891 / 883
Регистрация: 22.02.2013
Сообщений: 5,840
Записей в блоге: 79
03.06.2018, 11:38
Перевести в Long и отсортировать по возрастанию.
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
03.06.2018, 14:22  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Перевести в Long и отсортировать по возрастанию.
Спасибо..
Выдает ошибку..Несоответствие типов

Visual Basic
1
2
3
4
5
6
7
8
Private Sub Form_Load()
    Dim a     As String
    Dim aL    As Long
    
    a = "116.230.100.235:21915"
    Debug.Print CLng(a)
 
End Sub
Миниатюры
Сортировка элементов типа String   Сортировка элементов типа String  
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
03.06.2018, 14:35  [ТС]
попробовал с помощью ListBox... на УРА!)))
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
03.06.2018, 15:01  [ТС]
Но увы не идеально....(((
Миниатюры
Сортировка элементов типа String  
0
Модератор
10045 / 3891 / 883
Регистрация: 22.02.2013
Сообщений: 5,840
Записей в блоге: 79
03.06.2018, 16:32
kreotodr, у тебя только v4?
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
03.06.2018, 17:27  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
у тебя только v4?
не понял, что v4?
Миниатюры
Сортировка элементов типа String  
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
03.06.2018, 17:30
Цитата Сообщение от kreotodr Посмотреть сообщение
v4
IPv4
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
03.06.2018, 17:37  [ТС]
Цитата Сообщение от SoftIce Посмотреть сообщение
IPv4
Какое отношение имеет протокол передачи данных к теме вопроса?
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
03.06.2018, 18:33
Цитата Сообщение от kreotodr Посмотреть сообщение
Какое отношение имеет протокол передачи данных к теме вопроса?
Вы же пытаетесь сортировать IP адреса и номера портов?
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
03.06.2018, 18:58  [ТС]
Цитата Сообщение от SoftIce Посмотреть сообщение
Вы же пытаетесь сортировать IP адреса и номера портов?
а, да... абсолютно верно...
0
Модератор
10045 / 3891 / 883
Регистрация: 22.02.2013
Сообщений: 5,840
Записей в блоге: 79
03.06.2018, 19:32
kreotodr, RtlIpv4StringToAddress
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
04.06.2018, 11:52  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
RtlIpv4StringToAddress
что не так?
Миниатюры
Сортировка элементов типа String  
0
Модератор
10045 / 3891 / 883
Регистрация: 22.02.2013
Сообщений: 5,840
Записей в блоге: 79
04.06.2018, 12:38
Цитата Сообщение от kreotodr Посмотреть сообщение
что не так?
Там же написано.
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
04.06.2018, 12:41  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Там же написано.
Спасибо, помогли.
Ответ увы не о чем
0
Модератор
10045 / 3891 / 883
Регистрация: 22.02.2013
Сообщений: 5,840
Записей в блоге: 79
04.06.2018, 12:49
kreotodr, внимательно прочитай что я написал, а потом посмотри на ошибку - все станет понятно.
Когда человеку говоришь используй к примеру функцию GetModuleHandle, а он использует функцию GetModuleFileName и недоумевает почему что-то не работает + среда дает ему сообщение об ошибке где прямым текстом указано в чем ошибка. Что тут можно ответить кроме как:
Цитата Сообщение от The trick Посмотреть сообщение
Там же написано.
1
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
04.06.2018, 14:48  [ТС]
Решил задачу иным путем...

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Public Function CodesIP(IpAddress As String) As String
    Dim varCells() As String
    varCells = Split(IpAddress, ".")
    CodesIP = String(3 - Len(varCells(0)), "0") & varCells(0) & "." & String(3 - Len(varCells(1)), "0") & varCells(1) & "." & String(3 - Len(varCells(2)), "0") & varCells(2) & "." & String(3 - Len(varCells(3)), "0") & varCells(3)
End Function
 
Public Function deCodesIP(IpAddress As String) As String
    Dim varCells() As String
    varCells = Split(IpAddress, ".")
    deCodesIP = Val(varCells(0)) & "." & Val(varCells(1)) & "." & Val(varCells(2)) & "." & Val(varCells(3))
End Function
Огромное спасибо всем за дельные советы))

Добавлено через 11 минут
Цитата Сообщение от The trick Посмотреть сообщение
внимательно прочитай что я написал, а потом посмотри на ошибку - все станет понятно
Анатолий, без обид в листинге API данной функции не селен. Посему и дергаю...
Если есть желание и возможность набросай корректный текст использования данной функции
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
05.12.2018, 18:51  [ТС]
В продолжении темы.
Возможно кому то пригодится....

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Public Type myBytes
    B1 As Byte
    B2 As Byte
    B3 As Byte
    B4 As Byte
End Type
 
Public Type myLong
    Val As Long
End Type
 
Public Function IP2Long(IP As String) As Long
    ReDim parse(0 To 3) As String
    Dim B As myBytes
    Dim L As myLong
    parse = Split(IP, ".")
    B.B1 = Val(parse(0))
    B.B2 = Val(parse(1))
    B.B3 = Val(parse(2))
    B.B4 = Val(parse(3))
    LSet L = B
    IP2Long = L.Val
End Function
 
Public Function Long2IP(ByVal IP As Long) As String
    Dim L As myLong
    Dim B As myBytes
    L.Val = IP
    LSet B = L
    Long2IP = Trim(Str$(B.B1)) + "." + Trim(Str$(B.B2)) + "." + Trim(Str$(B.B3)) + "." + Trim(Str$(B.B4))
End Function
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
12.12.2018, 16:57
kreotodr, правильное название функции указано жирными буквами: https://docs.microsoft.com/en-... toaddressa

Добавлено через 2 минуты
Можно ещё использовать такую функцию:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Public Function ConvertVersionToNumber(sVersion As String) As Long  '"1.1.1.1" -> 1 number
    On Error GoTo ErrorHandler:
    Dim Ver() As String
    
    If 0 = Len(sVersion) Then Exit Function
    
    Ver = SplitSafe(sVersion, ".")
    If UBound(Ver) = 3 Then
        ConvertVersionToNumber = cMath.Shl(Val(Ver(0)), 24) + cMath.Shl(Val(Ver(1)), 16) + cMath.Shl(Val(Ver(2)), 8) + Val(Ver(3))
    End If
    
    Exit Function
ErrorHandler:
    ErrorMsg Err, "ConvertVersionToNumber"
    If inIDE Then Stop: Resume Next
End Function
Зависимость: класс битовых операций Готовые решения и полезные коды на Visual Basic 6.0

Добавлено через 5 минут
Затем берешь такую функцию:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
' Сортировка по Хоару. На вход - массив j(), на выходе массив k() с индексами массива j в отсортированном порядке + отсортированный массив.
' Алгоритм особо отлично подходит для сортировки User type arrays по любому из полей.
Public Sub QuickSortSpecial(j() As String, k() As Variant, ByVal low As Long, ByVal high As Long)
    On Error GoTo ErrorHandler:
    Dim i As Long, L As Long, M As String, wsp As String
    i = low: L = high: M = j((i + L) \ 2)
    Do Until i > L: Do While j(i) < M: i = i + 1: Loop: Do While j(L) > M: L = L - 1: Loop
        If (i <= L) Then wsp = j(i): j(i) = j(L): j(L) = wsp: wsp = k(i): k(i) = k(L): k(L) = wsp: i = i + 1: L = L - 1
    Loop
    If low < L Then QuickSortSpecial j, k, low, L
    If i < high Then QuickSortSpecial j, k, i, high
    Exit Sub
ErrorHandler:
    ErrorMsg Err, "QuickSortSpecial"
    If inIDE Then Stop: Resume Next
End Sub
И передаешь ей массив-ключ, и массив позиций.
Массив-ключ - это твой массив типа Long IP-шников (тип данных в функции сортировки нужно сменить на Long).
А массив позиций создаешь сам и после сортировки выводишь массив строковых IP по полученной последовательности позиций:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
        ReDim aPos(UBound(aIP))
        
        For i = 0 To UBound(aPos)
            aPos(i) = i
        Next
        
        QuickSortSpecial aIP, aPos, 0, UBound(aIP)
        
        For i = 0 To UBound(aPos)
            Debug.Print aStringIP(aPos(i))
        Next
3
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
13.12.2018, 11:41  [ТС]
Цитата Сообщение от Dragokas Посмотреть сообщение
И передаешь ей массив-ключ, и массив позиций.
Спасибо, но не актуально..
Кстати! При конвертации в Long, последующая сортировка идет не на 100% корректно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.12.2018, 11:41
Помогаю со студенческими работами здесь

Сортировка массива типа String
Здравствуйте! Подскажите, пожалуйста, как решить проблему. Имеется пять переменных типа String: a = &quot;Будильник установлен на...

Сортировка списка типа string по размеру
Надо отсортировать строки типа string по размеру, но к сожалению сортируется все по буквам, и в результате вместо ответа: &quot;cab&quot;,...

Сортировка массива типа string через указатели
Итак, пытаюсь реализовать сортировку строкового массива. Почти все сделал, но встал на одном месте и никак не могу понять, как её решить. ...

Сортировка массива классов по полю типа string
Дан массив объектов класса, одним из полей которого является переменная name типа string. Как можно отсортировать объекты этого массива в...

Присвоение объекту типа string рандомный элемент из массива типа string
Добрый вечер, дорогие форумчане. Я столкнулся с проблемой. Как присвоить объекту типа string рандомный элемент из массива типа string? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru