PDA

Показать полную графическую версию : Visual Basic 2008


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 [13] 14 15 16 17 18

Uzvern
20-08-2008, 23:54
В чем различие Next и Next(x) в цикле For(Each)(x)
Например,
For FEE As Integer = 0 To DisplayOfValues - 1
SB.Append(Args(FEE))
Next
For FEE As Integer = 0 To DisplayOfValues - 1
SB.Append(Args(FEE))
Next FEE

Delirium
21-08-2008, 01:07
НИКАКОГО :) просто в старых версия basic'a необходимо было писать next FEE, а потом упростили и сделали без FEE. Можно писать обоими способами :)

Uzvern
21-08-2008, 01:19
А можно как-то по быстрому заполнить ListBox значение из алфавита?
чтобы не писать вот так
ListBox1.Items.Add("A")
ListBox1.Items.Add("B")
ListBox1.Items.Add("C")
ListBox1.Items.Add("D")
ListBox1.Items.Add("E")
ListBox1.Items.Add("F")
ListBox1.Items.Add("G")
или так
With ListBox1.Items
.Add("A")
.Add("B")
.Add("C")
.Add("D")
.Add("E")
.Add("F")
.Add("G")
End With
а как-то побыстрей. там вроде как-то можно через For или чет типо того, но точно не уверен...

Delirium
21-08-2008, 01:31
Смотрите в сторону CHR - то есть это функция, возвращающая символ по коду. К примеру chr(65) - "а" - по моему. chr(66) - "б".
О, нашел в MSDN:

Dim associatedChar As Char
' Returns "A".
associatedChar = Chr(65)
' Returns "a".
associatedChar = Chr(97)
' Returns ">".
associatedChar = Chr(62)
' Returns "%".
associatedChar = Chr(37)

Соотв-но, надо найти коды русских букв и запулить их через for-next

Parameters
CharCode
Type: System..::.Int32

Required. An Integer expression representing the code point, or character code, for the character. If CharCode is outside the valid range, an ArgumentException error occurs. The valid range for Chr is 0 through 255, and the valid range for ChrW is -32768 through 65535.

______

Uzvern
21-08-2008, 01:37
ЗАчем их искать, если можно тупо самому их узнать

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim RB As New RichTextBox
RB.Dock = DockStyle.Fill
Controls.Add(RB)
For Chars As Integer = 0 To 255
If Chars <> 255 Then
RB.Text &= Chr(Chars) & " - " & Asc(Chr(Chars)) & Chr(13)
Else
RB.Text &= Chr(Chars) & " - " & Asc(Chr(Chars))
End If
Next
End Sub
End Class


Об этом я знал, просто думал, что можно как-то ещё...

Delirium
21-08-2008, 01:46
Коды всех символов всего 255 »
valid range for ChrW is -32768 through 65535. »
ну и не 255 их, а чутка побольше :)
Об этом я знал, просто думал, что можно как-то ещё... »
а зачем изобретать велосипед, если все уже есть :)

Uzvern
21-08-2008, 01:49
Скажем так : я любознательный и хочу знать больше :biggrin:

valid range for ChrW is -32768 through 65535.»
ухух...надо бы как то их тоже достать

Uzvern
26-08-2008, 20:45
Почему данный код не срабатывает?
Me.Controls.AddRange(New Object() {L, TB, B, C})

Delirium
27-08-2008, 01:09
Почему данный код не срабатывает? »
Дык вы приведите хотя бы часть кода и описание ошибки, тогда и видно будет, почему не срабатывает :)

Uzvern
27-08-2008, 01:26
Хочу добавить на форму объекты


Не удалось привести тип объекта "System.Object[]" к типу "System.Windows.Forms.Control[]".


Вот так все прекрасно добавляется

With Controls
.Add(L)
.Add(B)
.Add(TB)
.Add(C)
End With

А вот так не хочет
Dim L As New Label
Dim B As New Button
Dim TB As New TextBox
Dim C As New CheckBox

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
Me.Controls.AddRange(New Object() {L, B, TB, C})
Catch ex As Exception
MsgBox(ex.Message)
Clipboard.SetText(ex.Message)
End Try
End Sub


Исходя из ошибки пробовал заменить Object на Control, но тогда вообще никакой ошибки не выскакивает, но и объекты тоже не добавляются!

Delirium
27-08-2008, 01:34
В смысле добавить объекты? ПРограммно, чтобы при загрузке формы добавлялись объекты эти? А сразу нарисовать их не проще? Вы же добавляете дефолтные объекты.
А вообще, вот цитата с MSDN
The following code example adds two Control objects to the Control..::.ControlCollection of the derived class Panel. The example requires that you have created a Panel control and a Button control on a Form. When the button is clicked, two RadioButton controls are added to the panel's Control..::.ControlCollection.

Visual Basic Copy Code
' Create two RadioButtons to add to the Panel.
Dim RadioAddButton As RadioButton = New RadioButton()
Dim RadioAddRangeButton As RadioButton = New RadioButton()

' Add controls to the Panel using the AddRange method.
Private Sub AddRangeButton_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles AddRangeButton.Click
' Set the Text the RadioButtons will display.
RadioAddButton.Text = "RadioAddButton"
RadioAddRangeButton.Text = "RadioAddRangeButton"

' Set the appropriate location of RadioAddRangeButton.
RadioAddRangeButton.Location = New System.Drawing.Point( _
RadioAddButton.Location.X, _
RadioAddButton.Location.Y + RadioAddButton.Height)

' Add the controls to the Panel.
Panel1.Controls.AddRange(New Control() {RadioAddButton, RadioAddRangeButton})
End Sub



ДОбавляют 2 элемента, НО: объявляют их как Dim RadioAddButton As RadioButton = New RadioButton() и потом задают им свойства. Без этого, скорее всего, они не добавятся.

Delirium
27-08-2008, 02:16
Получилось?

Uzvern
27-08-2008, 12:22
Delirium, ну вроде бы да :)

Uzvern
04-09-2008, 15:51
Как в For Each можно перейти на следующий элемент? Наример мне ненужно записывать какое-то значение, и если оно обнаружено, то переходит на следующий.
вот например пытаюсь сделать обход System Volume Information, но она все-равно проскакивает

Function GetFilesAndFolders(ByVal Folder As String) As String
Dim StringBuilder As New System.Text.StringBuilder
Dim FolderName As IO.DirectoryInfo

StringBuilder.AppendLine(Folder)

For Each Path As String In IO.Directory.GetDirectories(Folder)

Try
FolderName = My.Computer.FileSystem.GetDirectoryInfo(Folder)

If FolderName.Name = "System Volume Information" Then
ChDir("..")
Continue For
End If

ChDir(Path)

StringBuilder.AppendLine(GetFilesAndFolders(Path))
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Ошибка")
End Try

Next

For Each File As String In IO.Directory.GetFiles(Folder)
StringBuilder.AppendLine(File)
Next

Return StringBuilder.ToString
End Function

Delirium
05-09-2008, 01:53
В смысле обход? Нужно именно поймать "System Volume Information" или пропустить его в обходе?
Протестировал код... Когда в качестве параметра функции пишу "C:\", начинается обход с корня диска и подвисает, точнее очень долго делает обход всех папок.
ЧТобы цикл зашел в нужную папку, прописал вот так:

If Path = Folder & "System Volume Information" then

вместо If FolderName.Name = "System Volume Information" Then »

Только я не пойму, что дальше то сделать надо вам :)

Uzvern
05-09-2008, 13:52
Мне необходимо его наоборот пропустить!

Admiral
06-09-2008, 14:52
Uzvern, оно и будет пропускать если подкорректировать условия, как подсказал Delirium. Проверяется это очень просто добавлением строчки Print.Debug("FolderName.Name") после условия, что б видеть что оно сработало. Можно и до, будут отображаться все пути пройденные программой, это ещё наглядно будет показывать что программа не висит.
Очень хорошо что была найдена (http://forum.oszone.net/post-878011.html#post878011) возможность добавлять свой пункт в контекстное меню. :up:
Delirium по дефолту к данной папке (при условии использовании NTFS) доступ заказан даже админу вот по этому Uzvern потребовалось обойти эту папку.

Uzvern
10-09-2008, 16:16
Как можно открыть папку и выделить неоходимый файл?

Admiral
10-09-2008, 22:03
Что бы выделить файл, например boot.ini в корне диска C, необходим код следующего вида
Call Shell("Explorer.exe /n,/e,/select, C:\boot.ini", vbNormalFocus)
>> (http://support.microsoft.com/kb/130510/ru)

Uzvern
10-09-2008, 22:07
Call
Что означает? Не первый раз уже вижу это слово в кодах, но так и не понял для чего же оно :dont-know




© OSzone.net 2001-2012