Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/30: Рейтинг темы: голосов - 30, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 16.01.2008
Сообщений: 178

Ошибка 'Invalid procedure call or argument'

05.06.2008, 17:36. Показов 5869. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот я сделал что по отправки кода на сервер с директорией сервак отправляет мне с помощью цикла имена всех файлов с кодом (file>123.txt) клиент получает их в виде одной строки (может кто объяснит почему), я с помощью MID'ов RIGHT'ов добовляю это всё в ListView, но в середине всей операции (всегда примерно на 525 пункте, а пересылается 1800 пунктов) выскакивает ошибка 'Invalid procedure call or argument' если вы подумаете что на ListView ограничение пунктов, то это не так (я проверил полазив по нескольким путям не отчищая список поместилось даже 2500 пунктов) и строка в типе STRING получается полная (Проверил), а чуть не забыл при нажатии на кнопку 'DEBUG'(на сообщении об ошибке) жёлтым выделяется строка добавления пункта(LsV_file.ListItems.Add , , Mid(strData, 5, a - 5))
Кто мне объяснит в чём ошибка и как её избежать???
Кто не понял о чём я вам сюда-> http://www.relib.com/forums/topic.asp?id=745079
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.06.2008, 17:36
Ответы с готовыми решениями:

Ошибка "invalid procedure call or argument"
Sub Тонколистовая_прокатка() 'объявление переменных Dim i As Integer 'номер сечения Dim ii As Integer 'номер нейтрального сечения ...

run-time error 5 Invalid procedure or argument
Sub fgh() x = InputBox("Ââåäèòå x") Dim b1 As Single For i = 1 To 6 c = Log(b1) + x * Log(b2) b1 = b1 + 0.225 b2 = b2 - 0.231 ...

Ошибка: "wrong number of argument or invalid property assignment"
For i = 1 To ASize A(i - 1) = Text1.Text(i) Next i почему ругается на данную конструкцию. ASize = 255, ввожу в текстовое поле...

12
1 / 1 / 0
Регистрация: 24.07.2007
Сообщений: 178
05.06.2008, 19:31
Во-первых лучше используй не Mid и Right, а Mid$ и Right$ - возращает строку, а не Variant и быстрее в три раза.
Попробуй смотреть чему равно (a - 5) или сделай отсев автоматически, то есть не
Visual Basic
1
LsV_file.ListItems.Add , , Mid(strData, 5, a - 5)
а
Visual Basic
1
2
3
If a > 5 Then
 LsV_file.ListItems.Add , , Mid(strData, 5, a - 5)
End If
и попытайся в пустом проекте и форме сделать то же самое. Если ошибки не будет, значит либо косяки с памятью, либо с переменными. Так, по крайней мере, можно будет четче представлять себе ошибку.
0
0 / 0 / 0
Регистрация: 16.01.2008
Сообщений: 178
06.06.2008, 10:20  [ТС]
С условием он вообще зависает:
Visual Basic
1
2
3
4
5
6
7
8
9
        LsV_file.ListItems.Clear
        Do
            a = InStr(strData, '`')
            If a > 5 Then
                str = Mid$(strData, 5, a - 5)
                LsV_file.ListItems.Add , , str
            End If
            strData = Mid$(strData, a + 1, Len(strData) - a)
        Loop Until strData = '' Or strData = ' '
0
0 / 0 / 0
Регистрация: 16.01.2008
Сообщений: 178
06.06.2008, 14:15  [ТС]
Я что-то нашёл оказывается он передаёт (или клиент получает) из цикла не одним целым (я спрашивал почему) а ровно 8192 символа, т. е. если разделить на 1024 то получится 8 (чего-то), а нельзя ли передовать (или получать)больше???
0
0 / 0 / 0
Регистрация: 16.01.2008
Сообщений: 178
06.06.2008, 14:16  [ТС]
8 чего-то - это наверное 1 байт
0
0 / 0 / 0
Регистрация: 16.01.2008
Сообщений: 178
06.06.2008, 15:25  [ТС]
Хотя наверное больше пересылать не получится...
А как пересылать так чтобы клиент получал не один кусок, а одну короткую строку с командой???
0
0 / 0 / 0
Регистрация: 20.02.2008
Сообщений: 181
06.06.2008, 19:19
Буффер 8192 байт - стоит по умолчанию. Если я правильно помню то max - 32768 байт.
0
0 / 0 / 0
Регистрация: 16.01.2008
Сообщений: 178
06.06.2008, 19:40  [ТС]
А как использовать 32768
0
0 / 0 / 0
Регистрация: 20.02.2008
Сообщений: 181
06.06.2008, 19:45
О проблеме получения не 'сплошного куска'.

Протокол TCP/IP (другие не будем трогать) - потоковый. Это значит что посланное копится в буффере до момента взятия данных (или переполнения). т.е. если послано 'a', потом 'b' то получим 'ab'.
Поэтому надо придумывать свой 'протокол' - надстройку для разделения данных, обозначения начала/завершения послания и.т.д. и.т.п.

Короче, сам протокол с данными ничего не делает и о содержимом тоже сказать не умеет - он просто их доставляет куда надо. Как автобус - ему нет дела что в нём едет и как оно одето-покрашено )
К примеру, 'почтовый' протокол
0
0 / 0 / 0
Регистрация: 20.02.2008
Сообщений: 181
06.06.2008, 19:53
RE: Изменение буффера.
Если в Winsock контроле, то не знаю - практически им не пользовался.
Если в WinsockAPI - setsockopt/getsockopt

Если точно надо, говори - напишу.
0
0 / 0 / 0
Регистрация: 16.01.2008
Сообщений: 178
07.06.2008, 20:20  [ТС]
Решил я это так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim filetrue As Boolean 'глобальные переменные
Dim filedat As String
 
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim strData As String ' Строка которую получает клиент
    Winsock1.GetData strData
    If bytesTotal = 8192 Then ' если кол-во байт = 8192 (т.е. максимально)
        filedat = filedat & strData 'глобальная переменная filedat принимает значение первого куска, затем первого и второго и т.д.
        filetrue = True 'думаю понятно
        Exit Sub завершение САБА
    End If
    If filetrue = True Then 'получается так, если первый, второй, третий куски это часть одного большого куска который должен был отправится... а четвёрты длиной не 8192, но он завершает большой кусок, то чтобы на клиент получить целый кусок мы объединяем первый кусок, второй, третий (которые уже объеденены в переменной filedat) с последним четвёртым он и становится конечной полученной строкой которая посылается на обработку...
        strData = filedat & strData
        filetrue = False
    End If
...
0
0 / 0 / 0
Регистрация: 16.01.2008
Сообщений: 178
07.06.2008, 20:21  [ТС]
Ну как вам идея???
0
1 / 1 / 1
Регистрация: 13.06.2008
Сообщений: 32
19.06.2008, 17:32
==>> SLTK ! Неплохо придумано, я и сам чего только не придумывал, чтобы передавать списки, но теперь ты мне дал идейку, если все получится поделюсь!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.06.2008, 17:32
Помогаю со студенческими работами здесь

Книга не работает на другом ПК "Invalid outside procedure"
Всем, доброго дня. Подскажите пожалуйста в чем может быть проблема. Вот отсюда:...

Ошибка: Invalid procedure call or argument. Что не так?
Имеется код. Он вроде считает, а вроде и нет. Выдает ошибку: Invalid procedure call or argument. Private Sub CommandButton1_Click() ...

Ошибка: Run-time error '5', Invalid procedure call or argument
Вообщем сделал программу всё работала пока не дописал выражение до конца и тут бах ошибочка. Вот код: Private Sub CommandButton1_Click() ...

Ошибка при создании файла Error: 'Invalid procedure call or argument'
var fso = new ActiveXObject('Scripting.FileSystemObject'); var sFile='C:/...'; var fsoFile = fso.CreateTextFile(sFile, true);почему то...

Invalid procedure call or argument! ошибка при создании запроса с помощью мастера, в момент его сохранения
Помогите!!! В базе данных ACCESS 2007 ни стого ни с сего при попытке создания запроса при помощи мастера в момент сохранения выдается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru