powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / MAX функция в VB6
13 сообщений из 13, страница 1 из 1
MAX функция в VB6
    #36184875
h7h2vC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
День добрый.
Подскажите пожлста быстрый алгоритм MAX функции для vb6. Аргументы - целые числа

Спасибо.
...
Рейтинг: 0 / 0
MAX функция в VB6
    #36184885
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: h7h2vC
> День добрый.
> Подскажите пожлста быстрый алгоритм MAX функции для vb6. Аргументы - целые числа

А что старый, добрый IF уже не поддерживается? :-o


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
MAX функция в VB6
    #36185411
h7h2vC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос, требуется функция для произвольного числа аргументов. Если это можно сделать старым добрым IF`ом - подскажите пож-лста как
...
Рейтинг: 0 / 0
MAX функция в VB6
    #36185571
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: h7h2vC
> Игорь Горбонос, требуется функция для произвольного числа аргументов. Если это можно сделать старым добрым
> IF`ом - подскажите пож-лста как

Что значит для произвольного? Или ты умеешь "дописывать" на лету работающую программу?
В любом случае данные будут в массиве/рекордсете/коллекции делаешь полный цикл по набору данных и простым IF'ом находишь
минимум/максимум/среднее( ну что нужно ). Это если набор данных не отсортирован, а если сортирован - тогда в зависимости
от сортировки максимум будет или первое или последнее число в отсортированном наборе.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
MAX функция в VB6
    #36185608
h7h2vC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь ГорбоносЧто значит для произвольного? Или ты умеешь "дописывать" на лету работающую программу?
В любом случае данные будут в массиве/рекордсете/коллекции делаешь полный цикл по набору данных и простым IF'ом находишь
минимум/максимум/среднее( ну что нужно ).Только честно - Вы действительно считаете что сделали доброе (или хотя бы полезное кому-то) дело, написав это сообщение?

"Дописывать на лету" - я задачи себе не ставлю.
"Для произвольного" значит функция должна брать массив аргументов и среди них находить максимальный (MAX=MYFUNC(3,2,5,0))
Нашел такую функцию:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Function Max(ParamArray avValues() As Variant) As Variant
    Dim vThisItem As Variant, vThisElement As Variant
    
    On Error Resume Next
    For Each vThisItem In avValues
        If IsArray(vThisItem) Then
            For Each vThisElement In vThisItem
                Max = Max(vThisElement, Max)
            Next
        Else
            If vThisItem > Max Then
                If Not IsEmpty(vThisItem) Then
                    Max = vThisItem
                End If
            ElseIf IsEmpty(Max) Then
                Max = vThisItem
            End If
        End If
    Next
    On Error GoTo  0 
End Function
В ней повсеместно используются переменные типа Variant. Что мне было интересно - можно ли оптимизировать алгоритм, зная что аргументы - это исключительно целые числа.
...
Рейтинг: 0 / 0
MAX функция в VB6
    #36185659
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
Function Max(ParamArray avValues() As Variant) As Long
dim x as long, vThisItem as long
For x =  0  to ubound(avValues)
    vThisItem = avValues(x)
    If vThisItem > Max Then Max = vThisItem
Next
end Function

Jah loves you.
...
Рейтинг: 0 / 0
MAX функция в VB6
    #36185675
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: h7h2vC
> Игорь Горбонос
> Что значит для произвольного? Или ты умеешь "дописывать" на лету работающую программу?
> В любом случае данные будут в массиве/рекордсете/коллекции делаешь полный цикл по набору данных и простым
> IF'ом находишь
> минимум/максимум/среднее( ну что нужно ).
> Только честно - Вы действительно считаете что сделали доброе (или хотя бы полезное кому-то) дело, написав это
> сообщение?

А разве это не так? Ты нашел функцию, которая берет массив аргуметнов и потом делает полный цикл по
массиву
и простым IF'ом находит максимум Где я ошибся?

> "Для произвольного" значит функция должна брать массив аргументов и среди них находить максимальный
> (MAX=MYFUNC(3,2,5,0))

тогда уж лучше так записывать:
Код: plaintext
MAX=MYFUNC(Array( 3 , 2 , 5 , 0 ))

> Нашел такую функцию:

Хорошая универсальная функция

> Что мне было интересно - можно ли оптимизировать алгоритм, зная что аргументы - это исключительно целые числа.

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


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
MAX функция в VB6
    #36185704
h7h2vC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy, спасибо
...
Рейтинг: 0 / 0
MAX функция в VB6
    #36185738
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос
Хорошая универсальная функция
Узкоспециализированная (для источников разнородных данных, например рекордсетов), тормозная (For Each, Variant и тьма его проверок) и бессмысленная (не представляю, что больше, "кирпич" или второе февраля) функция. Даже ради массива массивов я бы не стал юзать эту жуть.
...
Рейтинг: 0 / 0
MAX функция в VB6
    #36185798
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Antonariy
> Узкоспециализированная (для источников разнородных данных, например рекордсетов), тормозная (For Each, Variant и
> тьма его проверок) и бессмысленная (не представляю, что больше, "кирпич" или второе февраля) функция. Даже ради
> массива массивов я бы не стал юзать эту жуть.

Как раз очень даже универсальная, но из-за этой универсальности, согласен с тобой, жуть


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
MAX функция в VB6
    #37693765
veronicavvl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста.
У меня есть файл CSV (2 колонки). (ConsumerID, ConsumerName)
И таблица данных Consumer.mdb (DB "Card"), где колонок намного больше. Мне надо прочитать данные из файла CSV и занести данные только в две колонки таблицы. Читать и выдавать сообщение с данными (целой строкой и по полям) у меня получается, а как внести информацию в колонки, до меня не доходит. Навроде, в интернете все перерыла на предмет примеров, а "мое" не получается.

Код: vbnet
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.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
Imports System.IO

Public Class Form1

      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim textFileStream As New IO.FileStream("Z:\Control\vb\spisok.csv", IO.FileMode.OpenOrCreate,
                       IO.FileAccess.ReadWrite, IO.FileShare.None)
        Dim myFileWriter As New IO.StreamWriter(textFileStream)
        Dim myFileReader As New IO.StreamReader(textFileStream)
        Dim intCounter As Integer
        Dim strFileContents As String
        Dim separator As String

            While Not myFileReader.EndOfStream()
            strFileContents = myFileReader.ReadLine()
                                  MessageBox.Show(strFileContents)
                ''strFileContents = myFileReader.ReadToEnd()
            End While
                     myFileWriter.Close()
            myFileReader.Close()
            textFileStream.Close()

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim strFileContents As String

        Dim dsNewRow As DataRow = CardDataSet.Tables("Consumer").NewRow()
        'Dim x As DataColumn = CardDataSet.Tables("Consumer").NewRow()


        Using parser As New Microsoft.VisualBasic.FileIO.TextFieldParser("Z:\Control\vb\spisok.csv")
            parser.SetDelimiters(";")
            Dim i As Integer
            i = 0

            While Not parser.EndOfData

                            MessageBox.Show(parser.ReadFields(i + 1))
                dsNewRow("f_ConsumerName") = "fffff"    'не работает
              
            End While
        End Using

    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Dim dsNewRow As DataRow = CardDataSet.Tables("Consumer").NewRow()

        Using MyReader As New Microsoft.VisualBasic.
                             FileIO.TextFieldParser(
                               "Z:\Control\vb\spisok.csv")


            MyReader.TextFieldType = FileIO.FieldType.Delimited
            MyReader.SetDelimiters(";")

            Dim currentRow As String()
            Dim i As Integer
            i = 0
            While Not MyReader.EndOfData
                Try


                    currentRow = MyReader.ReadFields()
                    Dim currentField As String
                    For Each currentField In currentRow
                        i = i + 1
                        If i > 2 Then
                            MsgBox(currentField)
                     
                        End If
                        Next
                Catch ex As Microsoft.VisualBasic.
                            FileIO.MalformedLineException
                    MsgBox("Line " & ex.Message &
                    "is not valid and will be skipped.")
                End Try


            End While
        End Using
    End Sub

    Private Sub ConsumerBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ConsumerBindingNavigatorSaveItem.Click
        Me.Validate()
        Me.ConsumerBindingSource.EndEdit()
        Me.TableAdapterManager.UpdateAll(Me.CardDataSet)

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
               Me.ConsumerTableAdapter.Fill(Me.CardDataSet.Consumer)

    End Sub

    End Class



Т.е., если я избавляюсь от сепараторов, то не знаю, как без них определить, в какой я, вообще, колонне в CSV.
Мне кажется, что проще разбить текущую строку "читать до сепаратора", но не знаю, как ето правильно сделать.

В данном случае оставила три кнопки которые делают чтение из файла и вывод на екран.
Кнопка 3 выводит информацию по полям.
Кнопка 2 выводит информацию по полям без первой колонки в CSV.
Кнопка 1 выводит информацию построчно из CSV, вместе с разделителем.
...
Рейтинг: 0 / 0
MAX функция в VB6
    #37693775
veronicavvl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ой, забыла подправить ету строчку (меняла названия полей для публикации и ето забыла подправить).
Код: vbnet
1.
      dsNewRow("ConsumerName") = "fffff"    'не работает
...
Рейтинг: 0 / 0
MAX функция в VB6
    #37693894
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какое отношение имеет ваш вопрос к теме топика "MAX функция в VB6"???
Прошу создать новую тему, причем там, где нужно, а именно в .NET
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / MAX функция в VB6
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]