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

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

03.06.2018, 09:40. Показов 2019. Ответов 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
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 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
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 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
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 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
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
04.06.2018, 12:38
Цитата Сообщение от kreotodr Посмотреть сообщение
что не так?
Там же написано.
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
04.06.2018, 12:41  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Там же написано.
Спасибо, помогли.
Ответ увы не о чем
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 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
18031 / 7734 / 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru