Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Массив элементов, их сохранение Добавлено: 08.05.04 23:22  

Автор вопроса:  HACKER

Есть форма, на ней куча всего:

text1(0), text1(1), (2) ... text2(0), text2(1), (2) ... label итп...

Надо перебрать их всех в цикле и сохранять то что в них в файл. Незнаю как мне сделать умный перебор, что в одном цикле все элементы массива и немасива и не только какого-то одного элемента, а все подряд перебирались. Хто поможет????

Ответить

  Ответы Всего ответов: 15  

Номер ответа: 1
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #1
Добавлено: 09.05.04 00:37

Можно так. Перечислит все контролы. Даже массивы.

For Each Control In Form1

MsgBox Control.Name

Next

Вот только как узнать является ли контрол массивом неизвестно.

IsArray не помог. Можно поставить On Error на Control.Index.

Лучшего в голову не приходит.

Ответить

Номер ответа: 2
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #2
Добавлено: 09.05.04 00:39

А пробовать можно вот так:

Private Function isArray(Element As Object) As Boolean

On Error GoTo er

If Element.Index + &H1 Then isArray = True

er:

End Function

Ответить

Номер ответа: 3
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #3
Добавлено: 09.05.04 00:57

Вообще то isArray - это VB-шная ф-я. Может ругнуться что зарезервирована.

Да и 1 не нужно прибавлять. Он и так скажет что объект не массив.

PS: Не путай юного хакера. :)

Ответить

Номер ответа: 4
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #4
Добавлено: 09.05.04 01:03

единичка - на случай если эллемент нулевой, в этом случае индекс = нулю, и условие не срабатывает... так что единица - всегда пригодится :)))

Ответить

Номер ответа: 5
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #5
Добавлено: 09.05.04 01:19

Условие сработает только в одном случе: если объект - массив. Хотя может я тебя не понял? Ну да ладно. Хватит с него и этого на первых порах. Для проверки на ошибку много знаний не нужно.

Ответить

Номер ответа: 6
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #6 Добавлено: 09.05.04 15:54
блин, точно что запутали юного хакера :) Хотя первые 2 сообщение впринципе всё объесняют, вообщем усем спасибо.

Ответить

Номер ответа: 7
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #7 Добавлено: 09.05.04 16:06

хм... неподумал сразу. Как бы мне потом возобновлять данные, т.е. я где-то в файле пишу (сохраняю точнее)...

Label1(0).Caption = "ВАСЯ"

Label1(1).Caption = "Ещё шо нибуть"

ну короче сохранил. А как же потом это назад вставить, как узнать чего надо изменять. Считал строку с "Label1(0).Caption = "ВАСЯ"" и.... хр-н его знает как сказать чтобы именно этот лабел принял такой капшин. Само капшин "Вася" я то могу оторвать, как да этого элемента достучатся. Есть там пример у меня, умеет из текста код программы делать, но он работает только пока в VB, а компилируешь, уже неработает.

Ответить

Номер ответа: 8
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #8
Добавлено: 09.05.04 17:05

А почему бы не считывать тем же способом что и запись?

Или не получается?

Ответить

Номер ответа: 9
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #9 Добавлено: 09.05.04 20:29

ну и как ты себе это представляешь?

Line Input #1,stroka$

dim a as Control

stroka$ = a

Такого небывает, или я тебя не так понял?

Ответить

Номер ответа: 10
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #10
Добавлено: 09.05.04 21:15

Нет, почему же... теперь перечисляешь все эллементы на форме, а потом радостно проверяешь, есть-ли для них строка, тоолтип, или еще что...

Ответить

Номер ответа: 11
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #11 Добавлено: 09.05.04 21:34

совсем хрень! их даже перечислить неполучается:

Dim Control As Control

Open App.Path & "\options.ini" For Output As #1

For Each Control In Me
   
On Error GoTo noIndex
For W = 0 To UBound(Control)
  Print #1, Control(i).Name & "(" & Str$(i) & ") = " & Control(i).Text
Next W
If W <> UBound(Control) Then Print #1, Control(i).Name & " = " & Control(i).Text
noIndex:


i = 0
Next

короче, как создать цикл по массву контрола

Ответить

Номер ответа: 12
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #12
Добавлено: 10.05.04 01:39

Програмеры,
 кто знает язык проще VB? Киньте пожалуйста здесь ссылку.

 Ты что внатуре две процедуры связать не можешь или прикалываешся?

Private Sub Form_Load()
Dim AllControls As Integer

For AllControls = 0 To Controls.Count - 1
 If Ctl_IsArray(Controls(AllControls)) Then
    MsgBox Controls(AllControls).Name & "(" & Controls(AllControls).Index & ")"
 Else
     MsgBox Controls(AllControls).Name
 End If
Next AllControls
End Sub

Function Ctl_IsArray(ByVal Ctl As Object) As Boolean
 Ctl_IsArray = True
 ;Dim tmp_Dest As Integer
 On Error Resume Next
 tmp_Dest = Ctl.Index
 If Err > 0 Then Debug.Print Error$(Err); " ="; Err: Ctl_IsArray = False
End Function

Ответить

Номер ответа: 13
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #13
Добавлено: 10.05.04 03:07

> кто знает язык проще VB? Киньте пожалуйста здесь ссылку

Робик проще. Фокал еще.

Ответить

Номер ответа: 14
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #14
Добавлено: 10.05.04 03:15

2 Sharp

Это я от досады. Нахрена вообще програмированию учится если за тебя всё другие делают?

Ответить

Номер ответа: 15
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #15 Добавлено: 10.05.04 22:24
Народ! я за VB примерно год, может я бы и сам это сделал, правда потратив несколько дней, у вас это заняло несколько минут, а когда пишешь что-то большое, как то нехочется тормозить на несколько дней, тока из за того что налепил на форму кучу массивов. А две процедуры связать то могу, я вот только думал что вторая вовсе непонадобится. Вообщем тебе @CyRax PTR  я выражаю благодарность, но тока ненадо меня такими вопросами озадачивать, мол могу ли я 2 процедуры связать, могу! (наверное) :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам