Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Математическая задачаа, Вывод списка однофамильцев 
:(
    Опции темы
Voldemar2004
Дата 25.12.2004, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Если кто сможет...
Помогите найти ошибку в программе на Visual Basic:
подпрограмма выводит всех однофамильцев, однако, если я введу:

Иванов
Иванов
Петров
Петров
Сидоров
Сидоров

, то рограмма выведет:

Иванов
Иванов
Петров
Сидоров

а надо чтобы Петров - 2 раза и Сидоров - 2 раза.





Private Sub Command1_Click()
Dim i, j As Long
Dim A$(6)
Dim max As Long

For i = 1 To 6
A(i) = InputBox("")
Next i

P = 0
max = UBound(A$): exchange = True

While exchange = True
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

Cls

For i = 1 To max
Print A$(i)
Print " "
Next i


i = 0
X: i = i + 1

If A$(i) = A$(i + 1) Then
Print "ОДНОФАМИЛЬЦЫ: " + A$(i)
Else: GoTo X
End If

For i = 1 To 6

If A$(i) = A$(i - 1) Then
Print "ОДНОФАМИЛЬЦЫ: " + A$(i)

End If
Next i

End Sub
smile


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Xena
Дата 26.12.2004, 10:40 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Это потому, что у тебя прога неправильно написана. smile
goto тебе зачем?
  Вверх
Voldemar2004
Дата 26.12.2004, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Извиняй, но как без goto ? Я и так и этак, заколбасило, а ты б че сделал без goto?


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
cardinal
Дата 26.12.2004, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Цитата(Voldemar2004 @ 26.12.2004, 14:02)
а ты б че сделал без goto?

цикл?
Цитата(Voldemar2004 @ 25.12.2004, 16:02)
подпрограмма выводит всех однофамильцев, однако, если я введу:

Иванов
Иванов
Петров
Петров
Сидоров
Сидоров

Еще раз напиши, что ты хочешь получить, когда эти данные введешь. Я если честно не очень пока понял...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Gannibal
Дата 26.12.2004, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



как я понял он хочет чтобы прога выводила сколько раз у него в тексте однафамильцев например два сидорова а и три петрова так он хочет выводить чтобы ему три раза написалось петров и два раза сидоров.. просто вот и всё .. так понял я.. а вот код я непонял smile


--------------------
Я родился в этом безумном мире - и Я сделаю всё чтобы в нём выжить!
PM MAIL ICQ   Вверх
Akina
Дата 27.12.2004, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата
exchange = True
exchange = False

smile
Код

x=2 ' Присвоим переменной значение
x=2 ' на случай если первый раз присвоится неправильно



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Voldemar2004
Дата 27.12.2004, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Поясняю код: дело в том, что для вывода однофамильцев следует фамилии отсортировать в алфавитном порядке, что я и сделал, можете пользоваться этим кодом, проверено - работает, короче вопрос: как найти в одномерном массиве повторяющиеся цифры: ввод: 1 2 2 3 4 4 5 и вывод: 2 2, 4 4. В C++ - элементарно - но беда - надо юзать Васик.


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
cardinal
Дата 27.12.2004, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Цитата(Voldemar2004 @ 27.12.2004, 14:55)
В C++ - элементарно

Тогда в VB то уж подавно должно быть элементарно?
Код

Option Explicit

Private Sub Command1_Click()
Dim i As Integer
Dim j As Integer
Dim a(10) As Integer
a(0) = 1
a(1) = 2
a(2) = 2
a(3) = 3
a(4) = 4
a(5) = 4
a(6) = 5
a(7) = 9
a(8) = 9
a(9) = 9

For i = 0 To 9
   If a(i) = a(i + 1) Then
        Debug.Print a(i)
        Do While a(i) = a(i + 1) And i <= 9
           Debug.Print a(i)
           i = i + 1
       Loop
   End If
Next
End Sub




--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Voldemar2004
Дата 28.12.2004, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Большое спасибо, работает. Пришлось только подправить код:

Код

Option Explicit

Private Sub Command1_Click()
Dim i As Integer
Dim a(10) As Integer
a(0) = 1
a(1) = 2
a(2) = 2
a(3) = 3
a(4) = 4
a(5) = 4
a(6) = 5
a(7) = 9
a(8) = 9
a(9) = 9

For i = 0 To 9
   If a(i) = a(i + 1) Then
           Print a(i)
        Do While a(i) = a(i + 1) And i <= 9
           i = i + 1
           Print a(i)
        Loop
   End If
Next

End Sub

у меня ни в какую не работает Debug.Print (или .Assert) - может что-то не так делаю, или VB 6 у меня такой кривой (недавно установил MSDN, так после этого MS Office XP стал спрашивать регистрацию - ни один кряк не работает, пришлось самому №-)).
P.S. может я опять чего-то не понял, но зачем в объявлении переменных стоит Dim j As Integer ? Если j нигде не используется, C++ ругался бы как мой препод по программированию smile.
Все вопросов больше нет.

Это сообщение отредактировал(а) cardinal - 28.12.2004, 14:07


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Akina
Дата 28.12.2004, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(Voldemar2004 @ 28.12.2004, 12:52)
у меня ни в какую не работает Debug.Print

Открой окно отладки - Debug.Print пишет туда.

на будущее - рекомендую вместо
Код
For i = 0 To 9
использовать
Код
For i=Lbound(a) to Ubound(a)





--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
cardinal
Дата 28.12.2004, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Цитата(Akina @ 28.12.2004, 10:26)
на будущее - рекомендую вместо

Так как размер массива особо не известен smile и это правильно.
Цитата(Voldemar2004 @ 28.12.2004, 09:52)
Dim j As Integer

Ну это, конечно, просто мусор оставшийся в процессе выдумывания алгоритма.
Voldemar2004, пользуйся в будущем подсветкой синтаксиса!


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Voldemar2004
Дата 29.12.2004, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Нужна свежая мысль:

Есть программка. Вопрос: требуется, чтобы программа выводила информацию об однофамильцах:
Имя, Отчество, Класс, Оценка1, Оценка2.

Я написал подпрограмму вывода всех фамилий, их сортировку по алфавиту и вывод всех повторяющихся фамилий (благодарю Cardinal'a за помощь).

Вопрос такой: информация хранится в файле *.txt, все записано в один столбец, т.е.
========================================================
Петров
Петр
Петрович
10 А
5
5
Иванов
Иван
Иваныч
10 Б
3
3
Иванов
Иван
Петрович
6 А
4
4
Петров
Аэсп
Михайлович
1 А
5
5
Сидоров
Альт
Линуксович
2 А
3
3

========================================================
как вывести Имена, Отчества, классы, и оценку1, оценку2:

Однофамильцы: Петров

Петр Петрович 10 А 5 5
Аэсп Михайлович 1 А 5 5

Однофамильцы: Иванов

Иван Иваныч 10 Б 3 3
Иван Петрович 6 А 4 4

Написано много подпрограмм (типа поиска заданного слова, количества повторяющихся слов и т.п. манипуляций со словами).
Заранее благодарен.
P.S. Если кто пишет подпрогу сортировки по алфавиту, поиска, поиска по критерию, подсчета слов, то пишите - может помогу чем смогу. smile


--------------------
i_i 
(';') 
(V)

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


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

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



1) Прочитать весь файл в string
Код

Dim File_Name As String
Dim oFSO As New FileSystemObject
Dim sFile As String

File_Name = "c:\temp\1.txt"
sFile = oFSO.OpenTextFile(File_Name).ReadAll


2) Разбить на строки
Код

Dim sLines() as String
sLines = Split(sFile)


3) Вывести данные.
Код

For i=0 to UBound(sLines)/6
  For j = 0 to 5
       debug.print sLines[i=j],
  Next
  debug.print
Next


Это основные блоки которые тебе понадобятся.
Остольное уже сам приведи к нужному виду.


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Voldemar2004
Дата 30.12.2004, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Благодарю, сейчас попорбую. ROL подарила 5 часов бесплатного инета. smile


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Voldemar2004
Дата 30.12.2004, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Проверил, не работает строка:
Dim oFSO As New FileSystemObject[/color]
компилятор: "объявленный пользователем тип не определен".

как я понял

Код

Dim File_Name As String
Dim oFSO As New FileSystemObject
Dim sFile As String

File_Name = "c:\temp\1.txt"
sFile = oFSO.OpenTextFile(File_Name).ReadAll


это то же самое что:

Код

Input(Количество_считываемых_символов, #Номер_файла)


потом это хозяйство разбиваем на строки:

Код

Dim sLines() as String
sLines = Split(sFile)


ну и далее вывод
хотя компилятор ругается, что i,j это внешние переменные и нигде не объявлены.

А не проще было произвести построчное считывание с помощью
Код

Line Input #TxtFile, Str
[color=royalblue]
smile
Добавлено @ 17:59
При вводе

Код

Dim oFSO As New FileSystemObject
[/color][color=royalblue]

не появляется контекстное меню для облегчения жизни программера: может
VB 6 требуется сервис-пак?

И еще, есть ли хорошие учебники по VB 6, такие как C++ Builder (в 2-ух томах)Архангельского.


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
cardinal
Дата 30.12.2004, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Цитата(Voldemar2004 @ 30.12.2004, 15:54)
компилятор: "объявленный пользователем тип не определен".

Добавь scrrun.dll в Refereneces.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Voldemar2004
Дата 30.12.2004, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Библиотеку нашел, извините мое невежество, что такое references (папка)? Просто недавно перешел с C++ на VB 6 и для меня здесь все впервые. smile


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
boevik
Дата 30.12.2004, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

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



В меню Project->References...
Добавляет ActiveX DLL в твой проект.


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Voldemar2004
Дата 31.12.2004, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Все, спасибо Вам, сам доделал сегодня. Подпрога работает. Возвращусь чуть назад:
Код

While exchange = True
    exchange = True
    exchange = False
[/color]

никакой ошибки здесь нет - просто чтобы сравнить слова и выстроить их по алфавиту - их нужно сравнивать парами, например, Яр, Ар. И переменная P, нужна для того, чтобы менять местами их до тех пор, пока конструкция

Код

While exchange = True
exchange = True
exchange = False
[color=royalblue]


не станет верной. smile


--------------------
i_i 
(';') 
(V)

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


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Код

While exchange = True
exchange = True
exchange = False

пишешь так:
Код

While exchange = True
exchange = False

и ничего при этом не изменится.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Voldemar2004
Дата 3.1.2005, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Во всех БД требуется сортировка по алфавиту (для быстрого поиска), как прикрепить
к отсортированным фамилиям еще пять строк ниже:

Петров
Иван
Иванович
3
3
3
Иванов
Иван
Петрович
3
3
3
Рамов
Вован
Иванович
3
3
3

Выстроил:

Иванов
Иван
Петрович
3
3
3
Петров
Иван
Иванович
3
3
3
Рамов
Вован
Иванович
3
3
3

просто не знаю как проще:
через такую функцию
Код

Open "c:\temp.txt" For Input As #1

Do Until EOF(1)
Line Input #1, txt
allTxt = allTxt + txt + vbCrLf
Loop
Close #1

txtText.Text = allTxt

S = txtText.Text
Z = TextClassName.Text

strTungTied = txtText.Text
aryWood = Split(strTungTied, Z)

[color=blue][/color][color=royalblue][/color][color=royalblue][/color][color=royalblue][/color][color=blue][/color][color=blue][/color][color=blue][/color][color=blue][/color]


или как-то еще, просто ради интереса. smile


--------------------
i_i 
(';') 
(V)

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


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Цитата(Voldemar2004 @ 3.1.2005, 17:52)
как прикрепить
к отсортированным фамилиям еще пять строк ниже

Это как? У тебя помоему только три строки ниже?
Цитата(Voldemar2004 @ 3.1.2005, 17:52)
3
3
3

smile


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Voldemar2004
Дата 4.1.2005, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Да не, я ж имел в виду - что первая строка это Иванов, вторая - Иван, третья - число m,
4-ая - число n, 5-ая число f.

Иванов строка 1
Иван строка 2
Иваныч строка 3
число m строка 4
число n строка 5
число f строка 6
Петров строка 7
Петр строка 8
Петрович строка 9
число L строка 10
число k строка 11
число d строка 12

ну и так далее. Главное чтобы к выстроенным в алфавитном порядке фамилиям прикрепить эти пять строк: строка 2-6, строка 8-12. Ведь юзер будет вводить их на форме не в алфавитном порядке и в больших количествах.
Добавлено @ 18:36
Ох, пардон, очепятка, вот правильно:
Да не, я ж имел в виду - что первая строка это Иванов, вторая - Иван, третья Иваныч 4-ая - число m, 5-ая - число n, 6-ая число f.

Иванов строка 1
Иван строка 2
Иваныч строка 3
число m строка 4
число n строка 5
число f строка 6
Петров строка 7
Петр строка 8
Петрович строка 9
число L строка 10
число k строка 11
число d строка 12

ну и так далее. Главное чтобы к выстроенным в алфавитном порядке фамилиям прикрепить эти пять строк: строка 2-6, строка 8-12. Ведь юзер будет вводить их на форме не в алфавитном порядке и в больших количествах.


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
cardinal
Дата 4.1.2005, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



У тебя данные в файле temp.txt сидят? Напиши сюда его содержание...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Voldemar2004
Дата 4.1.2005, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Вот его содержание: просто основную часть БД я выполнил в Access 2000, а отдельные кнопки типа "Вывод инормации об однофамильцах" в виде файла c:\temp.txt, чтоб другие могли обращаться к нему SQL-Запросами - так быстрее. В моем случае это надо сделать в VB 6.

Петров
Иван
Иванович
33
4
6
Иванов
Петр
Геннадьевич
23
4
5
Иван
Владимир
Юрьевич
10
5
5
Рамов
Николай
Игнатьевич
100
3
7
Добавлено @ 19:06
просто мне необходимо, чтобы после сортировки файл temp.txt принял такой вид:

Иван
Владимир
Юрьевич
10
5
5
Иванов
Петр
Геннадьевич
23
4
5
Петров
Иван
Иванович
33
4
6
Рамов
Николай
Игнатьевич
100
3
7


--------------------
i_i 
(';') 
(V)

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


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Voldemar2004, короче делаем так: я даю тебе идею, а ты кумекаешь как ее реализовать smile
Вот идея:
Код

Option Explicit

Private Type member
   strI As String
   strF As String
   strO As String
   iAge As Integer
   iA As Integer
   iB As Integer
End Type

Private Sub Command1_Click()
Dim mmb_massiv(5) As member

mmb_massiv(0) = GetMember(0, filenum)
mmb_massiv(1) = GetMember(1, filenum)
mmb_massiv(2) = GetMember(2, filenum)
mmb_massiv(3) = GetMember(3, filenum)
mmb_massiv(4) = GetMember(4, filenum)

SortMMBMassiv mmb_massiv

' или просто

PutMember mmb_massiv(0), filenum
PutMember mmb_massiv(1), filenum
PutMember mmb_massiv(2), filenum
PutMember mmb_massiv(3), filenum
PutMember mmb_massiv(4), filenum

End Sub

' засовываешь такой-то mmb по алфавиту в такой то файл filenum
Private Function PutMember(mmb As member, filenum As Integer) As Integer
' ...
End Function

' вытаскиваешь такой-то mmb из такого то файла filenum
Private Function GetMember(mmb_num As Integer, filenum As Integer) As member
' ...
End Function

' Сортировка массива
Private Function SortMMBMassiv(ByRef mmb() As member)
' ...
End Function

И жизнь резко упрощается...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Voldemar2004
Дата 4.1.2005, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Попробую скумекать. Спасибо за помощь.
Тут хотел на днях ставить VB .NET - пишет, что система не удовлетворяет требованиям установки. У меня Windows 2000, SP4, RUS.


--------------------
i_i 
(';') 
(V)

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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Не очень понял, просто сделал по-своему, может, исходя из этого кто-то поможет усовершенствовать код:

Код

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

'здесь делаем массивы динамическими

ReDim A(i)
ReDim A(1 To S / 3)

ReDim fam(i)  
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)        
ReDim E(1 To S)

ReDim F(i)      
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


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

'Сортируем в алфавитном порядке и записываем в файл temp1.txt

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) = 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
[/color][color=blue]


--------------------
i_i 
(';') 
(V)

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


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Цитата(Voldemar2004 @ 5.1.2005, 20:10)
Не очень понял, просто сделал по-своему

Не... Никакой структуры в том, что ты написал я не вижу. Один раз сделай хорошо и пользуйся потом, а то что сделал ты это ИМХО smile

В общем я бы посоветовал тебе написать все заново по принципу, который я тебе предложил. Если есть желание понять что я там написал, то я могу поподробней расписать...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Voldemar2004
Дата 6.1.2005, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Да пожалуйста, поподробней. smile


--------------------
i_i 
(';') 
(V)

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


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Код

Private Type member
  strI As String
  strF As String
  strO As String
  iAge As Integer
  iA As Integer
  iB As Integer
End Type

Это тип данных - твой чувак из бд. Таким образом у тебя будет новая переменная типа member, с которой ты можешь будешь делать все что хочешь. Хочешь массивы из member'ов делай, хочешь сортируй эти массивы и т.д.
Код

' засовываешь такой-то mmb по алфавиту в такой то файл filenum
Private Function PutMember(mmb As member, filenum As Integer) As Integer
' ...
End Function

' вытаскиваешь такой-то mmb из такого то файла filenum
Private Function GetMember(mmb_num As Integer, filenum As Integer) As member
' ...
End Function

Ну а это два скелета функции первой необходимости. GetMember получает от тебя номер чувака в бд, а filenum это номер ранее открытого файла. Функция возвращает тебе соответственно нужного тебя чела.
PutMember засовывает тебе чувака в файл. Если сделать так что она будет записывать в алфавитном порядке, то тебе вообще ничего не останется делать как достать всех чуваков, засунуть их в массив и в цикле снова записать уже в другой файл (чтобы не затереть первый случайно по началу). Запишуться они в алвавитном порядке потому, что PutMember за это отвечает smile.

Остальные вопросы должны быть конкретней smile


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Voldemar2004
Дата 7.1.2005, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Как вывести в Text1.text следующее:

Код

For i = 0 To S
   If A(i) = A(i + 1) Then
           Print A(i); " "; B(i); " "; C(i); " "; D(i); " "; E(i); " "; F(i)
        Do While A(i) = A(i + 1) And i <= S
           i = i + 1
           Print A(i); " "; B(i); " "; C(i); " "; D(i); " "; E(i); " "; F(i)
        Loop
   End If
Next
[/color][color=blue]


Добавлено @ 14:43
Просто втыкаю вместо

Код

Debug.Print A(i); " "; B(i)
Text1.text = A(i)


но ничего не выходит


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
cardinal
Дата 7.1.2005, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



A() это что за массив?


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Voldemar2004
Дата 7.1.2005, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Да просто массив, в начале

Код

Dim A() as integer


а потом

Код

ReDim A(i)
ReDim A(1 to 10)

например


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
cardinal
Дата 7.1.2005, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Цитата(Voldemar2004 @ 7.1.2005, 12:41)
но ничего не выходит

Вылазит ошибка? Или ничего не происходит?


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Voldemar2004
Дата 7.1.2005, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Ничего абсолютно не происходит.


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
cardinal
Дата 7.1.2005, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Какое-нибудь значение в A(i) сидит?
Попробуй так
Код

Text1.text = CStr(A(i))



--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Voldemar2004
Дата 7.1.2005, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Ничего не происходит, пробовал
Код

Text1.Text = Str(A(i))


тоже самое. В первый раз с таким случаем сталкиваюсь - сколько раз до этого делал подобную ерунду и все работало.
Добавлено @ 19:35
Не, дело мне кажется не функициях преобразования типов, а в особенности вывода в Text1.text в Visual Basic 6. smile


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
cardinal
Дата 7.1.2005, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Может ты до той строчки вообще не доходишь из за какого нибудь if'a? smile
И еще раз:
Цитата(cardinal @ 7.1.2005, 15:55)
Какое-нибудь значение в A(i) сидит?

А вообще у меня вот это без проблем проходит:
Код

Option Explicit

Private Sub Command1_Click()
Dim a() As Integer
ReDim a(4)
a(0) = 2
a(1) = 4
a(2) = 5
a(3) = 1
a(4) = 7
Text1.Text = a(1)
End Sub

Цитата(Voldemar2004 @ 7.1.2005, 17:33)
Не, дело мне кажется не функициях преобразования типов, а в особенности вывода в Text1.text в Visual Basic 6.

Нет.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Voldemar2004
Дата 8.1.2005, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Вот именно, что не дохожу из-за этого Ифа перед Text1.text, как быть?

Код

For i = 0 To S
   If A(i) = A(i + 1) Then
           Text1.text = CStr(A(i))
        Do While A(i) = A(i + 1) And i <= S
           i = i + 1
           Text1.text = CStr(A(i))
        Loop
   End If
Next



--------------------
i_i 
(';') 
(V)

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


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Ну так чему тогда удивляться?

Код

'For i = 0 To S
'   If A(i) = A(i + 1) Then
          Text1.text = CStr(A(i))
'        Do While A(i) = A(i + 1) And i <= S
'           i = i + 1
'           Text1.text = CStr(A(i))
'        Loop
'   End If
'Next

smile


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Voldemar2004
Дата 8.1.2005, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Такая конструкция не работает

Код

'For i = 0 To S
'   If A(i) = A(i + 1) Then
          Text1.text = CStr(A(i))
'        Do While A(i) = A(i + 1) And i <= S
'           i = i + 1
'           Text1.text = CStr(A(i))
'        Loop
'   End If
'Next


откуда прога будет узнавать что выводить, если For...Next нету и условия If...then smile


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
cardinal
Дата 8.1.2005, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Цитата(Voldemar2004 @ 8.1.2005, 11:06)
Вот именно, что не дохожу из-за этого Ифа перед Text1.text, как быть?

Короче еще раз, ты чего сделать то хочешь? На примере! и причем здесь "не работает Text1.text = CStr(A(i))"?



--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Voldemar2004
Дата 9.1.2005, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Вот пример, максимально упростил:

Код

Dim i As Integer
Dim A(10) As Integer

For i = 1 To 10
   A(i) = InputBox("")
Next i

For i = 0 To 10
   If A(i) = A(i + 1) Then
           Print A(i)
        Do While A(i) = A(i + 1) And i <= 10
           i = i + 1
           Print A(i)
        Loop
   End If
Next


Мне надо только чтобы результат выводился не на главную форму а в Text1.Text, просто как-то более цивилизованно. У Text1.text включены свойства Multiline и Scrollbars - both (монитор не резиновый). smile


--------------------
i_i 
(';') 
(V)

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


Опытный
**


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

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



Text1.Text = A(i) vmesto Print A(i) ... ?


--------------------
Я родился в этом безумном мире - и Я сделаю всё чтобы в нём выжить!
PM MAIL ICQ   Вверх
Voldemar2004
Дата 9.1.2005, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Вот именно. Не работает проверял. smile


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Gannibal
Дата 9.1.2005, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а у меня счас проверит некде.. чёрт ... я бы подсказал ...
а если вот так А(и) у тебя какого параметра? стринг или как // пишет чё нибудь когда пытаешся в текстбокс выводить?

Это сообщение отредактировал(а) M.E.G.U.S - 9.1.2005, 18:38


--------------------
Я родился в этом безумном мире - и Я сделаю всё чтобы в нём выжить!
PM MAIL ICQ   Вверх
Voldemar2004
Дата 9.1.2005, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Да без разницы что Интегер, что Стринг, и потом Интегер я всегда могу преобразовать с помощью Cstr или Str.
Добавлено @ 18:42
Ничего не пришет, а

[/quote]
стринг или как // пишет чё нибудь когда пытаешся в текстбокс выводить?
[quote]

// это типа что? Вообще ничего не выводит.


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Gannibal
Дата 9.1.2005, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата
// это типа что?
это типо вместо точки... конец предложения


--------------------
Я родился в этом безумном мире - и Я сделаю всё чтобы в нём выжить!
PM MAIL ICQ   Вверх
Voldemar2004
Дата 9.1.2005, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Ну да, я все, если кто.


--------------------
i_i 
(';') 
(V)

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


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Код

Option Explicit

Private Sub Command1_Click()
Dim i As Integer
Dim A(10) As Integer

For i = 1 To 10
  A(i) = 3
Next i

For i = 0 To 9
  If A(i) = A(i + 1) Then
          Print A(i)
  End If
Next
End Sub

Код

Option Explicit

Private Sub Command1_Click()
Dim i As Integer
Dim A(10) As Integer

For i = 1 To 10
  A(i) = 3
Next i

For i = 0 To 9
  If A(i) = A(i + 1) Then
          Text1.Text = Text1.Text & " " & A(i)
  End If
Next
End Sub

А почему троек только девять думай сам...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Voldemar2004
Дата 10.1.2005, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Троек только девять ;=) в этой строке по-моейму дело:

Код

If A(i) = A(i + 1) Then
'...
End If


А вообще ошибку 9 - выход за пределы допустимых значений массива я обошел.


--------------------
i_i 
(';') 
(V)

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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Код

A(1) = "Слово Слово Слово Слово x x"


Где x x просто числа Integer.
Можете не отвечать на вопрос, буду сам думать (щас делишки), если пробел после слова, то переносим на новую строку слово после пробела:

Слово
Слово
Слово
Слово
x
x

Да и вот еще что, вот в чем гемморрой был:
Код

For i = 0 To S / 6
   If a(i) = a(i + 1) Then
       Text1.Text = Text1.Text & vbNewLine & " " & a(i)
   Do While a(i) = a(i + 1) And i <= S
       i = i + 1
       Text1.Text = Text1.Text & vbNewLine & " " & a(i)
       Loop
   End If
Next
smile


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Voldemar2004
Дата 20.1.2005, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Помните я писал о том, что в БД надо сохранять инфу в алфавитном порядке, Cardinal мне объяснил, как с помощью своего типа сделать это, но я сделал вот так:
в файле c:\temp.txt лежат записи типа

Романов
Имя1
Отчество1
Число1
Число1
Число1
Петров
Имя2
Отчество2
Число2
Число2
Число2
Сидоров
Имя3
Отчество3
Число3
Число3
Число3

Ну а на выходе получаем файл c:\temp1.txt с содержимым:
Петров Имя2 Отчество2 Число2 Число2 Число2
Романов Имя1 Отчество1 Число1 Число1 Число1
Сидоров Имя3 Отчество3 Число3 Число3 Число3


Код

Private Sub Command1_Click()
Dim fam(), a(), B(), C(), D(), E(), F() As String
Dim v() As String

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)

 s = ((UBound(myParas) + 1) - 2)
 
ReDim fam(i)
ReDim fam(1 To s)

ReDim a(i)
ReDim a(1 To s / 6)

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)
ReDim E(1 To s)

ReDim F(i)
ReDim F(1 To s)

ReDim v(i)
ReDim v(1 To s / 6)
 

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

n = 1
m = 2
ot = 3
ocl = 4
ocl1 = 5
ocl2 = 6

On Error GoTo MassivError
For i = 1 To S
a(i) = fam(n)
B(i) = fam(m)
C(i) = fam(ot)
D(i) = fam(ocl)
E(i) = fam(ocl1)
F(i) = fam(ocl2)

n = n + 6
m = m + 6
ot = ot + 6
ocl = ocl + 6
ocl1 = ocl1 + 6
ocl2 = ocl2 + 6
Next i

MassivError:
If Err.Number = 9 Then
End If

   For i = 1 To s / 6
   v(i) = a(i) + " " + B(i) + " " + C(i) + " " + D(i) + " " + E(i) + " " + F(i)
   Next i
   

P = 0
Max = UBound(v): exchange = True

While exchange = True
exchange = False


For i = 2 To Max
       If v(i - 1) > v(i) Then
               exchange = True

               P = v(i - 1)      
               v(i - 1) = v(i)  
               v(i) = P          

       End If
Next i
Wend

   Open "c:\temp1.txt" For Append As #1
   For i = 1 To Max
   Print #1, v(i)
   Next i
   Close #1

End Sub


Короче, спрашиваю у Вас как сделать так, чтоб прога, если встретит в первой строке первый пробел, переносит на новую строчку второе слово; встретит второй пробел, переносит на новую строку третье слово ну и так далее.

P.S. Хотел спросить: в чем разница между vbCrLf и vbNewLine ?
P.P.S. Извиняйте за On Error GoTo MassivError просто времени нет этим заниматься. smile


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
cardinal
Дата 21.1.2005, 03:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Цитата(Voldemar2004 @ 20.1.2005, 16:06)
Хотел спросить: в чем разница между vbCrLf и vbNewLine ?

Каждый файл это большое кол-во битиков, в восемь раз меньшее количество байтиков, эти байтики можно представить в виде hex. vbCrLf это одно значение, а vbNewLine это "другое" smile На самом деле возможно, что разницы нет (как я понял из таблицы). Чтобы это уточнить запиши в файл vbCrLf, а потом vbNewLine и посмотри в Norton Commander на ascii символы. Если четыре символа (две одинаковые пары), то разницы в vbCrLf и vbNewLine в твоем случае нет. А вообще должно зависить от platform (см. таблица).
Цитата

Constant_______Value__________________Description
-----------------------------------------------------------------------------------------------------------------
vbCr__________Chr(13)_________________Carriage return
vbCrLf_____Chr(13) & Chr(10)_____________Carriage return–linefeed combination
vbFormFeed____Chr(12)__________________Form feed; not useful in Microsoft Windows
vbLf___________Chr(10)_________________Line feed
vbNewLine__Chr(13) & Chr(10) or Chr(10)____Platform-specific newline character; whatever is appropriate for the platform
vbNullChar_______Chr(0)_________________Character having the value 0
vbNullString String having value 0 Not the same as a zero-length string (""); used for calling external procedures
vbTab__________Chr(9)__________________Horizontal tab
vbVerticalTab____Chr(11)_________________Vertical tab; not useful in Microsoft Windows



--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Impulse
Дата 21.1.2005, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Voldemar2004 @ 21.1.2005, 00:06)
Короче, спрашиваю у Вас как сделать так, чтоб прога, если встретит в первой строке первый пробел, переносит на новую строчку второе слово; встретит второй пробел, переносит на новую строку третье слово ну и так далее.

Разбиение строки FIO где-то здесь видел, cardinal подскажет.
А вообще код о...й - о...й. Страшно читать.
PM MAIL ICQ   Вверх
cardinal
Дата 21.1.2005, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Цитата(Impulse @ 21.1.2005, 17:42)
Разбиение строки FIO где-то здесь видел

Попробуй Replace или читай тут:
http://forum.vingrad.ru/index.php?showtopi...=findpost&p=733
Цитата(Impulse @ 21.1.2005, 17:42)
А вообще код о...й - о...й. Страшно читать.

Я предупреждал smile



--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Voldemar2005
Дата 5.3.2005, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да сделал я это разбиение, сам. Все проще ок-сь.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


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

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


 




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


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

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