Страница: 1 |
Страница: 1 |
Вопрос: Сортировка содержимого текстового файла
Добавлено: 23.12.07 20:21
Автор вопроса: Semicolon
Который час бьюсь над решением задачи...
Надо отсортировать содержимое txt-файла. Желательно до третьего символа (но не обязательно). Структура в файле одно слово = одна строка.
По идее, надо считать данные в массив, отсортировать его, и внести данные обратно в файл. Но как это на VB осуществить - не соображу.
Дошёл только до:
Private Sub Form_Load()
Open App.Path & "\data.txt" For Input As #1
Do Until EOF(1)
Line Input #1, txt
alltxt = alltxt + txt + vbCrLf
Loop
Close #1
txtText.Text = alltxt
End Sub
Собираем из файла строки и оформляем их в TextBox. Далее, как мне кажется, надо это всё поместить в массив и отсортировать.
Можно и в ListBox (Sorted = True) поместить напрямую из файла, но сейчас немножко другая ситуация.
Помогите пожалуйста!
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #1
Добавлено: 23.12.07 21:40
Из книжки VB6 Шаг за шагом:
[файл xxe, в нем архив 7z]
begin 644 sort_text.7z
hBrewfmQQ++6szcJyFEg++++++++X+++++++++Aap+Qc+67ogt4YlfH2xwGtY
hRXntQrg2VJswqmNTSJ6jDBtexW5lhqh7cadTPTGUPsFeKgg0lyzA5DfdOwaT
h1YwdMegdhrdVpP8EmMbyQZmXAsvNG1er1XdhZbtHEp6rCvg2f66K7ttXbwWl
hCVGydNubfgDfvQYUEOYwGcli6MgomqQwf0HeJyeYKowtfbVjGxTgku-eYQkU
hUOrBgNdj9XCQnnvDYe3qC+sUQi-Um4mn-RDWO1UJFleJOWXlLBx37pNJMuGy
hAxbk1oOEU41rcTu2aNM7Pgd3RnQ6dWD23J1O-4A+RbqlgTIp9PCWS+vunKmh
hMJtcteWv+reKNc6qaAM25JWIbkqKBg6cmdcgrw43zuVRn50buiMtBNLwzXPC
hg11-+RBn6ekUsZe6Lvnbw3DoEGRZUAIr-jah2byiju4xvDcVSA53bEU3qRSd
h3EUtsvOUFiYEoM0LIlSNqF+FJxkwqIsCHXU4D7-TAWr-vJzbTUVcI1K1Kpaq
hHqOKXIwCPF17f6kzbmeK2OPdwbwJ4St1ER0R2awURwHgWtDLWZ6aGsEh7H40
hpIMuuNyiQfkjW8FZ6cDjBOYRNL0AFrllvT63cDsqZ-CB37S2gKTWIjpTPPZm
h4lQRr8ssbLqQRLfuzW+FbJs4t+tiReavSbwOtsx9Xkdk05dZda3gNO-K92gz
hxgMXnF7ONEW85U1fJcLfAb2eAVlZf9Ix2rArwjbvr2fzeO98u6DO91I9gPaJ
h-BZ7BHFxX3uSphJOTll0z6OS8OiJd0ee1ertoAawRxtFTafeBl+heBH8eF0A
h1Y-StdrZjy7wyOeK30L83dnE3rILGU6ZfXSZiaUt0qF4XNFVVjSXq-iIrw9j
h4nWiiWumdWzra7vWNOgHbvtfrrJ7DFwHDs7Rb6isdy96sMuAfDn91rYWlJ8Z
hpM41qZch+UBpG4IKl5EsMXjQJ+pdBfS080hzB58j9HtuWaAGMbczr4CjW-8o
h9WpA0oPtt3MHrTunksV1fB+x8ybIn-kUnx87arwgMMr+5cAVxbHrwtD53Tkh
hso0r4gw3oMQphVBR7a3dVh7b0QOQccl0T2k2ClJVYmdHNEeNucVuythllBOy
hITy1ORYshflp6pCmgEzUvvDgvzFhECOXjG03vMFe9EJ9EU-3mjoDxa3nCRZT
hftd6iMFR45hIcBCM5NFIl-svmvdkfvgdEcmQxiTqvW4BiGUQx1CCHGmGo+Ba
hYuciPN-G-vg0OL5MzdFEOxXcHGkwe5Gi5MQCubUVe108yqNM4OLRIAZbIDvv
hzFxDdze2M3cdnAV7IPfv1I4s61r97QgN7PbUSAlR+4Ge8AY3LH-Cvb+DZFHS
h4bpYoXvxfwPuv+YagjW2yLLFXjdDCD--2cECHdAzrAWja2GrGUdflVLESr99
hFd+2-7soaz02Lnde1n1ln0Kzu38t3v2MG5SKpZvChSSs7SKnikelrxjN9L7P
hbSrr5Wmz34gVa0vfiLS9N72WMzRWQYBCodQi+AaGuDvAP7cYFeBikx8vMBOv
hQnerSDmeYetzQ8vw4epCPcvB0jRj3MrbBWh7lmhOjJo6+jZ0iRZXcGUPlXX8
hbS2YwKW3JchOm4zdVC70lHPY7M0R3NBT+E+kkgVXnh2kHz6PGLnjUMDrR2aI
hmtiR5BWdZAR5PqtDc95BscLknepBXLQxO+J0KNq7NAEJKuIDh+xk+E24z4FA
hKjYTKgVLyWFLT6HrBUnqZRxLHbzQ6pPU5mxmYvp1k2YYHrL+9cbnTZF7waPA
hu39HGqirl47wQIvUb78D1-rDYRkHhyVeZKvyjKDR8zOmM6UvXvrA4Hwe10ef
hTC5eL7V2cfZYCq+za6xY5qggLvXbH8aqKWucKKRkPRn906MaFfAkVqKBYZaG
h3CRXWvOkN1dqDfGybwCCZzYng9jXgHlUJo9gV58AFOxT7hc3k5CkoRCCrvDQ
hS82OhXunH7nQdTWa70-2XiUTqL+G7n7n7xmVAYJpVgPkhK6XTmtKw151mPye
hRkMzUpgX3cKy6yE-hEU0LNH22ah0-5iGqminO9JSg9qP79KE7AFNb8sbaViF
hU8iLObUtQJ0LPldlola9YQ++fdcVbkgJonqWZx5VFkFt+wHiB0rES1FexsJZ
hNAbL4cvDtUztNUGRQXSiVbkEoCAOrxWjOlKa-dY6FpnnxYREPGXPU3gC5mwE
hCoaaIh6G9bx2+Atu8f-5fmWtWg+J-PYMmZFXVGYuGnrD2k6jTO4GlLQcUGHH
hL0fAW6yDjeqw+OOOGYamKBIV21vqI2zB71Ub68S+F3nWYF7TZOcdc3IGqUJ5
hWr9cHRAbtHquyB-M1EJU1C1POXGiU5qlILKKcrfEhICMgF17Kz89hALwTsuG
hS6D+u3jYAL-Ko9jZdmHWNcEtV-kY9JjFpr6ttmIqhfugK-SATeDgHLs3AXFF
hvvCQ2hnga5ngPxnOl29vMPR-2yPukUMLJJGPlqpmjCjLY09rUdWCeeSUE4sG
hR3zQhu68PdLfpDQ8oZfhmQc6qk2N2nGR8e375qq2OlTq4-GQEjNzwNMLfho6
hsudnB1AZ+cavJA5HK4B29uio7uP1yudJqCYXGmt50LTEte3kybIYMn-r3MxA
hcfFg1cOhSF6sVx-MpRa2oO86d8OpzAVTfqG2PkQb2qliO7+5d5h-I4edb9KQ
hP+9VoLPCTv9MHhy8HIROqjulxmXvPPoqsYcZ6J5gRMcwvDal5TmOXvx-6Lub
hDNmSZyYpMy+C-VlxAKH9Uial3uvbGYr33j1tgzuLt23PdaSMdO6Vr6jTisic
hL18y3ODYvCN8KyfmSvIyqIkbTAorVTqwjNnk3Okm6aTqiYnLWB7O8h8isjrK
hbxC8V+82SlZyPt9jFdq5sXzjfk+VWJ+xWzeh3OL5e8DBginf5l5AcB5A+UxW
h5ii0pqfsjNPIddyBaXr55A1PqaqTP+6cQ3YjG-4wCjsMAk-0q032DsMORB69
hk+7QrngMxWwgkRI4cFJ8jfEmEaDAckYLpIOg0qUwvBXjeB+7k8dZXtVKy4w4
hXTtZsWQYjc+ZsVx723pt+LxipISHhJj80391FCacQMVCIEZt7ie73N7eI8OF
h78AaSVCmgj5sIMrulJd-kUTR3BoNaOMVDIImcIXF6qRvCvPtpUxdCBI1BTs9
hUn-HoBlEojhn4GBnv3bPGwqKMKEthNo6ckA8bda+9YscZLKYT8p3nHlueAn0
hZfGEM2zXA5p4qo1vn+l9ml1AuLRiZEzbys4EUc0MwEG-qstMuel1Ai7gRHjv
hILkklm620uZtR620XH3fh7Pfdsu0r+5qXpwfH5v42ZGqq+vS5mmxYausi4JQ
hzNjaxAnQui7VdusvLiCQs3Yuoo1Y-AVvr-HCNw+rfwDPbFV7hxC4oOBWY0DF
h-cxifb9oLAiaKfyHFKV6UCnQ0o+79CFmWgkBgYYKkfTQdDdOwrUc0447odo0
hwnKx-vxEpQ1J2sWiPE5yiimEfvrqR35sZWVMvzmTQeFmUpUgQXDLHIBQo61t
hd8bp+Wrgc6yyy0kS61EZ1WDsNwntAobpdNZq6xIc-dMHDEHBCX9J0xP4ZSwU
hvG3ICdJvRiwci+8gEZfGjJL6pV0yCAmCjw7LeuHFeNNuDp-e7uPXKv5+Bbrm
h7p6NM3MPt8k1dnA+hn2yAYxZAvXwo4+++62n-usDpNuwjFQYozunTWy7Yfuy
hDEelY97eKxViywirMUWTfKHm5eiRCPiFn6DE8bHgq2gTYL4YKn4rId3bVR7q
h58pV7fG0G-MssZCgqmFDw+xwiinoJ6QuZAH2F5nD6ligSfrcYqAIl1KG0Io7
htgoZlf5oBWja4Gu0qwNH8BrQNFLCUmmlCvRohYZcVaBevWHM9-Q4Wf+-0M0J
P++Q9+E+-6kA-+EJR++E+++m+sEc-pkD7FU++
+
end
2952 bytes
Номер ответа: 2
Автор ответа:
intel-DX
ICQ: 445091742
Вопросов: 4
Ответов: 169
Профиль | | #2
Добавлено: 23.12.07 22:05
Две кнопки - два метода
Option Explicit
'******************************************************
'Y Z H A A A A S
'******************************************************
Private Sub Command1_Click()
Dim TXT As String
Dim i As Integer
Open App.Path & "\1.txt" For Input As #1
Do Until EOF(1)
Line Input #1, TXT
List1.AddItem TXT
Loop
Close #1
Open App.Path & "\2.txt" For Output As #1
For i = 0 To List1.ListCount - 1
List1.ListIndex = i
Print #1, List1.Text
Next i
Close #1
End Sub
'*******************************************************
'T E R P I M O O O O O O O O
'*******************************************************
Private Sub Command2_Click()
Dim TXT As String
Dim i As Integer
Dim Mas() As String
Dim Mas2() As String
Dim sort As Boolean
Open App.Path & "\1.txt" For Input As #1
'reading
Do Until EOF(1)
i = i + 1
ReDim Preserve Mas(i)
Line Input #1, Mas(i)
Loop
Close #1
'sorting
Do Until sort = True
sort = True
For i = 1 To UBound(Mas) - 1
DoEvents
If StrComp(Mas(i), Mas(i + 1), vbBinaryCompare) = -1 Then
TXT = Mas(i)
Mas(i) = Mas(i + 1)
Mas(i + 1) = TXT
sort = False
End If
Next i
Loop
'printing
Open App.Path & "\3.txt" For Output As #1
For i = UBound(Mas) To 1 Step -1
Print #1, Mas(i)
Next i
Close #1
End Sub
Номер ответа: 3
Автор ответа:
Semicolon
Вопросов: 2
Ответов: 5
Профиль | | #3
Добавлено: 23.12.07 22:57
intel-DX, спасибо! Очень выручили.
Взял второй вариант, очень хорошо работает. В первом, кажется, не хватает кусочка кода. Там вывод из файла и ввод назад : )
Номер ответа: 4
Автор ответа:
intel-DX
ICQ: 445091742
Вопросов: 4
Ответов: 169
Профиль | | #4
Добавлено: 23.12.07 23:39
Там все есть, просто в List1 свойство Sorted в True установи
Номер ответа: 5
Автор ответа:
Semicolon
Вопросов: 2
Ответов: 5
Профиль | | #5
Добавлено: 23.12.07 23:43
Окей. Но я в заглавном посте указал, что надо обойтись без List1.Sorted = True. Обошлись : )
Номер ответа: 6
Автор ответа:
intel-DX
ICQ: 445091742
Вопросов: 4
Ответов: 169
Профиль | | #6
Добавлено: 24.12.07 01:47
потомуи метод c контролом подписан
'******************************************************
'Y Z H A A A A S
'******************************************************