СРОЧНО! ПОМОГИТЕ, или я сегодня не получу зарплату... (

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Druid-2004
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 08.08.2004 (Вс) 16:20
Откуда: Трехгорный

СРОЧНО! ПОМОГИТЕ, или я сегодня не получу зарплату... (

Сообщение Druid-2004 » 15.10.2004 (Пт) 8:49

С этим исходником символ сепаратора ставится 10 по счету.

Const SeparatorPos = 10
Separator$ = "|"
spaceChar$ = " "
a$ = RandomName
b$ = NameOrg
If Len(a$) > SeparatorPos - 1 Then
a$ = Left$(a$, SeparatorPos - 1)
ElseIf Len(a$) < SeparatorPos - 1 Then
a$ = a$ & String$(SeparatorPos - Len(a$) - 1, spaceChar$)
End If
Print a$ & Separator$ & b$

Но массив b$ печатается на всю оставшуюсю строку

У меня следующий вопрос:
Мне нужно изменить этот исходник таким образом, чтобы было следующее:

значение первое | значение второе | значение третье

первый сепаратор должен стоять 30-м по счету,
второй сепаратор через 10 символов от первого,
третий 15-м от второго.

ОЧЕНЬ НУЖНО! ПОМОГИТЕ, ПЛИЗ.... ИНАЧЕ СЕДНЯ Я НЕ ПОЛУЧУ ЗАРПЛАТУ... ((((
С уважением, Druid

Max!
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 502
Зарегистрирован: 03.04.2003 (Чт) 22:08
Откуда: Литва

Сообщение Max! » 15.10.2004 (Пт) 9:04

Думаю так :
Код: Выделить всё
Const SeparatorPos = 10
Separator$ = "|"
spaceChar$ = " "
a$ = RandomName
b$ = NameOrg
If Len(a$) > SeparatorPos - 1 Then
a$ = Left$(a$, SeparatorPos - 1)
ElseIf Len(a$) < SeparatorPos - 1 Then
a$ = a$ & String$(SeparatorPos - Len(a$) - 1, spaceChar$)
End If

Print a$ & vbCrLf
Print Separator$ & vbCrLf
Print b$ & vbCrLf

:wink:
Max!

Druid-2004
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 08.08.2004 (Вс) 16:20
Откуда: Трехгорный

Сообщение Druid-2004 » 15.10.2004 (Пт) 9:15

Нет, этот примар только для примера

Max! писал(а):Думаю так :
Код: Выделить всё
Const SeparatorPos = 10
Separator$ = "|"
spaceChar$ = " "
a$ = RandomName
b$ = NameOrg
If Len(a$) > SeparatorPos - 1 Then
a$ = Left$(a$, SeparatorPos - 1)
ElseIf Len(a$) < SeparatorPos - 1 Then
a$ = a$ & String$(SeparatorPos - Len(a$) - 1, spaceChar$)
End If

Print a$ & vbCrLf
Print Separator$ & vbCrLf
Print b$ & vbCrLf

:wink:


..хорошо... сепараторов в нужном мне исходнике, нужно 2, которые будут разделять три разных по величине символов значений.
Примерно вот так...
A$ | B$ | C$

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

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 15.10.2004 (Пт) 9:17

Print a$;Tab(30);Separator;b$;Space$(10);Separator;c$;Space$(15);Separator

Только может тебе лучше менять работу?
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 15.10.2004 (Пт) 9:24

Нет, alibek, ты не понял... Наверное, имелось в виду
Код: Выделить всё
Print a$;Tab(29);Separator$;b$;Tab$(39);Separator$;c$;Tab$(44);Separator$


Но я бы сделал так:
Код: Выделить всё
Print Left$(a$ & String$(29, spaceChar$), 29) & Separator$ & Left$(b$ & String$(9, spaceChar$), 9) & Separator$ & Left$(c$ & String$(14, spaceChar$), 14) & Separator$
Изображение

FaKk2
El rebelde gur&#250;
El rebelde gur&#250;
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 15.10.2004 (Пт) 9:32

Код: Выделить всё
Dim SPos(2, 1) As Integer
Dim RandomName$, NameOrg$, Separator$, spaceChar$, Str$

RandomName = "Roman Vladimirovich Royter"
NameOrg = "Royter's Home Incorporated"

SPos(0, 0) = 30
SPos(1, 0) = 40
SPos(2, 0) = 55

Separator = "|"
spaceChar = " "
Str = RandomName & NameOrg
'b$ = NameOrg
For i = 0 To 2
    If Len(Str) > SPos(i, 0) Then SPos(i, 1) = 1 _
    Else SPos(i, 1) = 0
Next i

For i = 0 To 2
    If SPos(i, 1) = 1 Then
        Str = Left(Str, SPos(i, 0)) & _
        spaceChar & Separator & spaceChar & _
        Right(Str, Len(Str) - SPos(i, 0))
    End If
Next i

Print Str


Намутил типа :roll:
Текст есс-но для примера :mrgreen:
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 15.10.2004 (Пт) 23:51

FAKK2, ты имхо во-первых не так понял задачу - дробить одну строку на части не нужно, нужно только разделять разные.
Ну и во-вторых, есть такой тип - Boolean, с которым всё интуитивнее:
Код: Выделить всё
Dim SPos(2) As Integer, SBool(2) As Boolean
Dim RandomName$, NameOrg$, Separator$, spaceChar$, Str$

RandomName = "Roman Vladimirovich Royter"
NameOrg = "Royter's Home Incorporated"

SPos(0) = 30
SPos(1) = 40
SPos(2) = 55

Separator = "|"
spaceChar = " "
Str = RandomName & NameOrg
'b$ = NameOrg
For i = 0 To 2
    SBool(i) = (Len(Str) > SPos(i)) '!!
Next i

For i = 0 To 2
    If SBool(i) Then '!!
        Str = Left(Str, SPos(i)) & _
        spaceChar & Separator & spaceChar & _
        Right(Str, Len(Str) - SPos(i))
    End If
Next i

Print Str
Изображение


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 4

    TopList