Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/26: Рейтинг темы: голосов - 26, средняя оценка - 4.62
2 / 2 / 0
Регистрация: 09.11.2011
Сообщений: 85

Передача строки в качестве параметра функции

31.03.2013, 00:52. Показов 5088. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте , помогите ,пожалуйста , с некоторыми вопросами по VBA.
Есть 2 строки , нужно проверить некие условия и вернуть адрес символа первой строки ,что подходит под них, и всё это обязательно в отдельной функции.
Я сделал так:
Visual Basic
1
2
3
4
5
6
Function temp(a As String, b As String) As Object
 
' Выполнение проверок
 
temp = VarPtr(a(i))
End Function
Но выдается ошибка expected array на первую строчку, из чего вопрос - как передавать строки-параметры.
И ещё вопрос , корректна ли строка:
Visual Basic
1
temp = VarPtr(a(i))
В с++ я бы сделал :
C++
1
temp=a+sizeof(char)*i;
а здесь туманно всё как то для меня.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.03.2013, 00:52
Ответы с готовыми решениями:

Передача RefEdit1.Value в качестве параметра функции
Добрый вечер! Записываю функцию в ячейку. Функция принимает в качестве параметра диапазон ячеек, который вводит пользователь через...

Передача строки в качестве параметра
#include <iostream> #include <string> void test(const std::string& str) { std::cout << str; } int main() ...

Передача функции в качестве параметра
Все привет. Помогите в решении следующей проблемы: есть класс XXX, один из методов которого принимает в качестве параметра указатель на...

10
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
31.03.2013, 01:26
Функция возвращает указатель на первый символ передаваемой ей в качестве параметра строки(Возвращает данные типа Long, содержащие указатель на объект)
Visual Basic
1
2
3
Function temp(a As String) As Long
    temp = VarPtr(Split(a)(0))
End Function
Добавлено через 9 минут
Блин, какой Split (спать надо по ночам)
Split в этом случае будет работать, если символы в строке разделены пробелами.

А если нет, то эта функция вернёт указатель на первую группу символов до пробела
1
2 / 2 / 0
Регистрация: 09.11.2011
Сообщений: 85
31.03.2013, 01:28  [ТС]
SoftIce, насколько я понял ,идея в том,чтобы разделить строку так ,чтобы i-тый символ был в начале какой-либо подстроки?
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
31.03.2013, 01:31
Категорически НЕТ!!!
Visual Basic
1
2
3
4
5
6
Function temp(a As String, b As String) As Long
 
' Выполнение проверок
 
temp = StrPtr(a)+2*i 'Адрес i-го символа строки (если для первого символа i=0)
End Function
А зачем Вам адрес символа строки в VBA?
1
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
31.03.2013, 01:35
Вот функцию
Получает на вход строку и номер символа в строке, возвращает указатель.
Visual Basic
1
2
3
Function temp(a As String, n As Integer) As Long
    temp = VarPtr(Mid(a, n, 1))
End Function
А на кой Вам эти указатели?
1
2 / 2 / 0
Регистрация: 09.11.2011
Сообщений: 85
31.03.2013, 01:46  [ТС]
Цитата Сообщение от Казанский Посмотреть сообщение
А зачем Вам адрес символа строки в VBA?
Задание такое. Так то мы с++ изучаем ,но несколько лаб в VBA зачем-то нужно сдать.
С указателями то ,бог с ними , Excel ругается постоянно на строки в параметрах у этой функции.
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
31.03.2013, 01:52
Цитата Сообщение от серофим Посмотреть сообщение
Excel ругается постоянно на строки в параметрах у этой функции
А на что там можно ругаться? Функция простая, как валенок
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
31.03.2013, 01:54
Со строками в параметрах функции проблем нет. Но в VB/VBA к строке нельзя обращаться как к массиву a(i).
Для выделения подстроки надо использовать функцию Mid, как показал SoftIce, а для замены подстроки - оператор Mid.
Я сам иногда балуюсь указателями, когда надо написать быструю процедуру Но для лаб это совершенно не нужно
1
2 / 2 / 0
Регистрация: 09.11.2011
Сообщений: 85
31.03.2013, 01:58  [ТС]
Цитата Сообщение от SoftIce Посмотреть сообщение
А на что там можно ругаться? Функция простая, как валенок
Еxpected array , видимо не считает фактические параметры ,что я передаю за строки О_О.
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
31.03.2013, 02:03
Как вызываете функцию? Как выглядит строка?
1
2 / 2 / 0
Регистрация: 09.11.2011
Сообщений: 85
31.03.2013, 02:06  [ТС]
Казанский, точно , совсем забыл про это. А указатель ,потому что так в задании так и сказано "Написать и протестировать функцию .... ,которая возвращает указатель ...." .

Казанский, SoftIce спасибо , разобрался ,работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.03.2013, 02:06
Помогаю со студенческими работами здесь

Передача функции в качестве параметра
Как передать функцию с параметрами в transform? Т.е., например, мне надо из каждого числа вектора вычесть число k с помощью transform'а,...

Передача функции в качестве параметра
Может кто помочь объяснить следующую часть кода: double MyMethod(Func<double, double> f, double a, double b, double c) { ...

Передача функции в качестве параметра
#include <iostream> #include <math.h> using namespace std; double f(double x) { return (2*x*x)-(exp(x)); double...

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

Передача функции в качестве параметра
Есть ф-я для отправки формы аяксом function ajaxFormRequest(form_id, url, dataT, some_func) { $.ajax({ url: ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru