Атрибуты

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
vladimirr
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 01.01.2004 (Чт) 22:57
Откуда: Ставрополь

Атрибуты

Сообщение vladimirr » 21.01.2004 (Ср) 12:29

Почему этот код не в какую не хочет устанавливать атрибуты файлов по отдельности (32, 1), суммируя их(33).
Dim a As New FileSystemObject, file As file
Dim fAttr As Long
Private Sub Command1_Click()
cd1.ShowOpen
Set file = a.GetFile(cd1.FileName)
fAttr = file.Attributes
fAttr = Str(fAttr)
If fAttr = 0 Then Text1.Text = fAttr
If fAttr = 1 Then Text1.Text = fAttr + " ," + fAttr
If fAttr = 2 Then Text1.Text = fAttr + " ," + fAttr
If fAttr = 4 Then Text1.Text = fAttr + " ," + fAttr
If fAttr = 16 Then Text1.Text = fAttr + " ," + fAttr
If fAttr = 32 Then Text1.Text = fAttr + " ," + fAttr
Text1.Text = fAttr
End Sub
Человек стремится к знаниям и, как только в нём угасает жажда знания, он перестаёт быть человеком.
Ф. Нансен

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 21.01.2004 (Ср) 12:43

Вообще-то проверка наличия того или иного атрибута делается так:
Код: Выделить всё
If fAttr And 32 <> 0


А не так, как указано в коде.

vladimirr
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 01.01.2004 (Чт) 22:57
Откуда: Ставрополь

Сообщение vladimirr » 21.01.2004 (Ср) 13:56

Т.е я во все строки, где if должен помещать вместо 32 соответственное значение (0 на месте)? В таком случае генерируется ошибка Tipe Mismatch :cry:
Человек стремится к знаниям и, как только в нём угасает жажда знания, он перестаёт быть человеком.
Ф. Нансен

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 21.01.2004 (Ср) 14:03

Блин, ну что за человек! Задаёт вопросы и даже не интересуется ответами. Я уже не говорю о том чтобы отчитаться получилось или нет.

Вот здесь для тебя код написан. Так ты даже его правильно переписать не можешь.
http://bbs.vbstreets.ru/viewtopic.php?p ... ght=#29478

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 21.01.2004 (Ср) 14:07

Так, уважаемый vladimirr, вам это, предупреждение за то, что задаете два раза подряд один и тот же (причем простой как 2.5 копейки) вопрос и, в самом деле, неуважаете труд других участников форума, не следуя полученным от них советам.

vladimirr
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 01.01.2004 (Чт) 22:57
Откуда: Ставрополь

Сообщение vladimirr » 21.01.2004 (Ср) 14:53

О вопросе с GetAttr я прекрасно помню. Я еще раз повторяю, для вас, skiperski, ПРИ ИСПОЛЬЗОВАНИИ ЭТИХ ВАРИАНТОВ ПРОИСХОДИТ ОШИБКА!!! Я не думаю, что если задать вам вопросы о характере движения капитала внутри предприятия или о факторах ценовой конкуренции, то вы сразу дадите на них верный ответ, хотя для кого-то это азы. Когда то, я уверен, и вы начинали с окошка «Привет мир!». Не для всех очевидное сразу становится явным. Вы посвятили этому жизнь, я – начинающий, так чего тут ругаться, доброе дело всегда обернётся тем же, а кажется вопрос глупым (раз уж так), так не надо на него отвечать, другие помогут. Приношу глубокое извинение модераторам сайта, вас тоже можно понять, ну а на счёт высказывания skiperski, что ж, время рассудит и само расставит точки над и.
Человек стремится к знаниям и, как только в нём угасает жажда знания, он перестаёт быть человеком.
Ф. Нансен

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 21.01.2004 (Ср) 15:13

vladimirr писал(а):ПРИ ИСПОЛЬЗОВАНИИ ЭТИХ ВАРИАНТОВ ПРОИСХОДИТ ОШИБКА!!!

Каких этих? Тот, что опубликовал я, работает. Внизу даже результаты теста опубликованы. Т.е., я так понимаю, этот код даже не был замечен, не то чтобы проверен.

Ещё раз
Код: Выделить всё
Public Function GetAttrList(ByVal Attr As VbFileAttribute, Optional ByVal Delimiter As String = ",") As String
   
    Dim s As String
   
    If (Attr = vbNormal) Then
        s = 0
    Else
        If (Attr And vbReadOnly) Then s = s & Delimiter & vbReadOnly  '1
        If (Attr And vbHidden) Then s = s & Delimiter & vbHidden      '2
        If (Attr And vbSystem) Then s = s & Delimiter & vbSystem      '4
        If (Attr And vbVolume) Then s = s & Delimiter & vbVolume      '8
        If (Attr And vbDirectory) Then s = s & Delimiter & vbDirectory '16
        If (Attr And vbArchive) Then s = s & Delimiter & vbArchive    '32
        If (Attr And vbAlias) Then s = s & Delimiter & vbAlias        '64
        If (Len(s)) Then s = Mid$(s, 2)
    End If
   
    GetAttrList = s
   
End Function


Вот это - РАБОТАЕТ!!!

В применении к конкретному коду это будет выглядеть так:
Код: Выделить всё
Dim a As New FileSystemObject, file As File
Dim fAttr As Long

Private Sub Command1_Click()
    cd1.ShowOpen
    Set file = a.GetFile(cd1.FileName)
    fAttr = file.Attributes
    Text1.Text = GetAttrList(fAttr)
End Sub


Что непонятно-то?

vladimirr
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 01.01.2004 (Чт) 22:57
Откуда: Ставрополь

Сообщение vladimirr » 21.01.2004 (Ср) 15:36

Если сей факт особо интересен: нет, вы не правильно понимаете, код бы замечен, причём через нескользко минут после появления.
Человек стремится к знаниям и, как только в нём угасает жажда знания, он перестаёт быть человеком.
Ф. Нансен

vladimirr
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 01.01.2004 (Чт) 22:57
Откуда: Ставрополь

Сообщение vladimirr » 21.01.2004 (Ср) 15:41

Вот в таком варианте работает, спасибо большое. Только не стоит портить нервы ради всего этого. Цель наша грандиозна, но затраты не всегда оправдывают её. Иногда стоит подумать об этом.
Человек стремится к знаниям и, как только в нём угасает жажда знания, он перестаёт быть человеком.
Ф. Нансен

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 21.01.2004 (Ср) 15:44

Ага. Подумать и, скажем, не писать 2 постинга подряд :) А просто отредактировать существующий.

vladimirr
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 01.01.2004 (Чт) 22:57
Откуда: Ставрополь

Сообщение vladimirr » 21.01.2004 (Ср) 16:23

А если заклинило? Неужели не у кого такого не быват? :?:
Человек стремится к знаниям и, как только в нём угасает жажда знания, он перестаёт быть человеком.
Ф. Нансен

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 21.01.2004 (Ср) 16:35

Что то вас всех тут клинит я смотрю... Вот в соседнем топике так прямо и написано...

Может, это все из за високосного года? :?

vladimirr
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 01.01.2004 (Чт) 22:57
Откуда: Ставрополь

Сообщение vladimirr » 21.01.2004 (Ср) 16:45

Ну если целый год… Завяжем узелки потуже.
Человек стремится к знаниям и, как только в нём угасает жажда знания, он перестаёт быть человеком.
Ф. Нансен


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

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

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

    TopList