Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.06;
Скачать: CL | DM;

Вниз

Работа со строками в VBA   Найти похожие ветки 

 
Lamer123   (2005-02-14 13:19) [0]

Подскажите плиз, как на бейсике будет выглядеть такое (абстракный пример, где s - переменная типа String)

for i:=1 to 10 do
if s[i]="A" then s[i]=s[i+1];

Заранее спасибо :)


 
Lamer123   (2005-02-14 15:01) [1]

люди, подскажите, ну неужели никто VB не знает? А то я кроме MID ничего путного не нашел, дак это как то громозко получается...


 
Digitman ©   (2005-02-14 15:29) [2]


> кроме MID ничего путного не нашел


и не найдешь.
string-тип данных в VBA не позволяет обращаться к символам строки как к элементам массива (подобно Паскалю)

если это учебная задача - мотай на ус ..
если практическая - не в тот огород гребешь..


 
vertal ©   (2005-02-14 15:42) [3]

Я тоже всё делал через Mid$.
По-моему, в VBA по-другому и нельзя.
Или можно использовать из kernel32.dll функции работы со строками и памятью (типа RtlMoveMemory, lstrcmpA и другие), но это будет еще более громоздко и менее надежно, к тому же функции типа StrPos или StrScan я там не нашел.


 
vertal ©   (2005-02-14 15:43) [4]

Я тоже всё делал через Mid$.
По-моему, в VBA по-другому и нельзя.
Или можно использовать из kernel32.dll функции работы со строками и памятью (типа RtlMoveMemory, lstrcmpA и другие), но это будет еще более громоздко и менее надежно, к тому же функции типа StrPos или StrScan я там не нашел.


 
Anatoly Podgoretsky ©   (2005-02-14 15:43) [5]

Lamer123   (14.02.05 15:01) [1]
Чем-же громоздко, почти одинаково if Mid() = "a" then


 
Digitman ©   (2005-02-14 16:06) [6]


> Anatoly Podgoretsky ©   (14.02.05 15:43) [5]


там ведь дальше по ходу текста (s[i]=s[i+1]) задница во всю ширину Васика вылазит) ...
хотя автора, чувствуется, это нимало не заботит


 
DimaK   (2005-02-14 18:49) [7]

2Digitman
Задачка рабочая (ну там со строками возня всякая...), а примерчик я так накидал, чтобы понятнее было о чем речь...

хотя автора, чувствуется, это нимало не заботит
заботит, а вдруг мой макрос увидит какой спец по VBA - чтобы стыдно не было.
Ведь согласитесь, смешно на паскале писать s[i]=s[i+1] как s:=copy(s,1,i-1)+copy(s,i+1,1)+copy(s,i+1,length(s)) ... :)


 
Lamer123   (2005-02-14 19:02) [8]

2vertal
к тому же функции типа StrPos или StrScan я там не нашел.
а где не нашел? в kernel32? А то в VBA есть стандартная функция InStr на эту тему..


 
palva ©   (2005-02-14 19:03) [9]

Можно одним оператором выложить строку в байтовый массив, а потом, обработав, положить обратно. Только надо учитывать, что каждый символ занимает два байта. Стоит поэкспериментировать, измеряя время выполнения, чтобы понять стоит ли игра свеч.

Dim s As String
Dim b() As Byte
s = "abcde"
b = s
t = b(0): b(0) = b(8): b(8) = t
s = b
MsgBox s " ebcda


 
palva ©   (2005-02-14 19:12) [10]

> а вдруг мой макрос увидит какой спец

Вообще считается круто использовать регулярные выражения. Они как раз предназначены для хитрой обработки строк и поиска символов. Но для эффективной работы к RegExp надо привыкнуть.



Страницы: 1 вся ветка

Текущий архив: 2005.03.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.025 c
3-1107862956
Mishenka
2005-02-08 14:42
2005.03.06
Как с помощью DBImage просмотреть gif ы из базы?


1-1108739359
DimonNew
2005-02-18 18:09
2005.03.06
Как можно связать обычные компонеты с наборами данных


4-1106283162
Ната
2005-01-21 07:52
2005.03.06
Как программно перегрузить компьютер?


3-1107753321
Усталый
2005-02-07 08:15
2005.03.06
проблема при работе с псевдонимом


6-1104497406
BVV
2004-12-31 15:50
2005.03.06
TIdTCPConnection.WriteStream





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский