mensch » 06.01.2005 (Чт) 14:28
Да вот, уже давно написал, смотрите:
Dim i As Integer
Dim A(), B(), C(), D() As String
Dim fam(), E(), F() ' fam() - построчное считывание, E(), F() - числа
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''' функция вычисления количества строк в файле '''''''''''''''''''''''''
Open "c:\temp.txt" For Input As #1
Do Until EOF(1)
Line Input #1, txt
allTxt = allTxt + txt + vbCrLf
Loop
Close #1
txtSearch.Text = allTxt + vbCrLf
Dim myParas As Variant
myParas = Split(txtSearch, vbNewLine)
MsgBox "Количество строк = " & ((UBound(myParas) + 1) - 2)
S = ((UBound(myParas) + 1) - 2) 'функция вычисления количества строк в файле
MsgBox "Количество фамилий = " & S / 6
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''' функция вычисления количества строк в файле '''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''ОТКРЫТИЕ ФАЙЛА И ЧТЕНИЕ ПОСТРОЧНО ФАМИЛИЙ В ПЕРЕМЕННУЮ txt'''''''''''''''
ReDim A(i) ' Делаем массивы фамилий динамическими
ReDim A(1 To S / 3) '
ReDim fam(i) ' Делаем массивы строк динамическими (построчное считывание файла temp.txt)
ReDim fam(1 To S)
ReDim B(i) ' Делаем массивы имен динамическими
ReDim B(1 To S)
ReDim C(i) ' Делаем массивы отчеств динамическими
ReDim C(1 To S)
ReDim D(i) ' Делаем массивы классов динамическими
ReDim D(1 To S)
ReDim E(i) ' Делаем массивы оценок1 динамическими
ReDim E(1 To S)
ReDim F(i) ' Делаем массивы оценок2 динамическими
ReDim F(1 To S)
Open "c:\temp.txt" For Input As #1
i = 1
j = 1
Do Until EOF(1)
Line Input #1, txt
fam(i) = txt
i = i + 1
If j = 6 Then
j = 1
Else: j = j + 1
End If
Loop
Close #1
'''''''''''''ОТКРЫТИЕ ФАЙЛА И ЧТЕНИЕ ПОСТРОЧНО ФАМИЛИЙ В ПЕРЕМЕННУЮ txt'''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
n = 1 ' доводим до автоматизма
m = 2
ot = 3
oCl = 4
o1 = 5
o2 = 6
For i = 1 To S / 6 '
A(i) = fam(n)
B(i) = fam(m)
C(i) = fam(ot)
D(i) = fam(oCl)
E(i) = fam(o1)
F(i) = fam(o2)
n = n + 6 '
m = m + 6
ot = ot + 6
oCl = oCl + 6
o1 = o1 + 6
o2 = o2 + 6
Next i ' доводим до автоматизма
'СОРТИРОВКА ФАМИЛИЙ В АЛФАВИТНОМ ПОРЯДКЕ
P = 0
Max = UBound(A): exchange = True
While exchange = True
exchange = False
For i = 2 To Max
If A(i - 1) > A(i) Then
exchange = True
P = A(i - 1) 'меняем местами значение A$(i-1) и A$(i)
A(i - 1) = A(i) 'по правилу 3-х стаканов
A(i) = P '
End If
Next i
Wend
Open "C:\temp1.txt" For Append As #1
For i = 1 To Max
Print #1, A(i)
Next i
Close #1