Страница: 1 |
Есть форма, на ней куча всего: text1(0), text1(1), (2) ... text2(0), text2(1), (2) ... label итп... Надо перебрать их всех в цикле и сохранять то что в них в файл. Незнаю как мне сделать умный перебор, что в одном цикле все элементы массива и немасива и не только какого-то одного элемента, а все подряд перебирались. Хто поможет????
Можно так. Перечислит все контролы. Даже массивы. For Each Control In Form1 MsgBox Control.Name Next Вот только как узнать является ли контрол массивом неизвестно. IsArray не помог. Можно поставить On Error на Control.Index. Лучшего в голову не приходит. А пробовать можно вот так: On Error GoTo er If Element.Index + &H1 Then isArray = True er: End Function Вообще то isArray - это VB-шная ф-я. Может ругнуться что зарезервирована. Да и 1 не нужно прибавлять. Он и так скажет что объект не массив. PS: Не путай юного хакера. единичка - на случай если эллемент нулевой, в этом случае индекс = нулю, и условие не срабатывает... так что единица - всегда пригодится )) Условие сработает только в одном случе: если объект - массив. Хотя может я тебя не понял? Ну да ладно. Хватит с него и этого на первых порах. Для проверки на ошибку много знаний не нужно. хм... неподумал сразу. Как бы мне потом возобновлять данные, т.е. я где-то в файле пишу (сохраняю точнее)... Label1(0).Caption = "ВАСЯ" Label1(1).Caption = "Ещё шо нибуть" ну короче сохранил. А как же потом это назад вставить, как узнать чего надо изменять. Считал строку с "Label1(0).Caption = "ВАСЯ"" и.... хр-н его знает как сказать чтобы именно этот лабел принял такой капшин. Само капшин "Вася" я то могу оторвать, как да этого элемента достучатся. Есть там пример у меня, умеет из текста код программы делать, но он работает только пока в VB, а компилируешь, уже неработает. А почему бы не считывать тем же способом что и запись? Или не получается? ну и как ты себе это представляешь? Line Input #1,stroka$ dim a as Control stroka$ = a Такого небывает, или я тебя не так понял? Нет, почему же... теперь перечисляешь все эллементы на форме, а потом радостно проверяешь, есть-ли для них строка, тоолтип, или еще что... совсем хрень! их даже перечислить неполучается: Dim Control As Control Open App.Path & "\options.ini" For Output As #1 For Each Control In Me короче, как создать цикл по массву контрола Програмеры, Ты что внатуре две процедуры связать не можешь или прикалываешся? Private Sub Form_Load() For AllControls = 0 To Controls.Count - 1 Function Ctl_IsArray(ByVal Ctl As Object) As Boolean > кто знает язык проще VB? Киньте пожалуйста здесь ссылку Робик проще. Фокал еще. 2 Sharp Это я от досады. Нахрена вообще програмированию учится если за тебя всё другие делают? Страница: 1 |
Вопрос: Массив элементов, их сохранение
Добавлено: 08.05.04 23:22
Автор вопроса: HACKER
Ответы
Всего ответов: 15
Номер ответа: 1
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #1
Добавлено: 09.05.04 00:37
Номер ответа: 2
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #2
Добавлено: 09.05.04 00:39
Private Function isArray(Element As Object) As Boolean
Номер ответа: 3
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #3
Добавлено: 09.05.04 00:57
Номер ответа: 4
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 09.05.04 01:03
Номер ответа: 5
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #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
Номер ответа: 8
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #8
Добавлено: 09.05.04 17:05
Номер ответа: 9
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #9
Добавлено: 09.05.04 20:29
Номер ответа: 10
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #10
Добавлено: 09.05.04 21:15
Номер ответа: 11
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #11
Добавлено: 09.05.04 21:34
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-сайт:
Профиль | | #12
Добавлено: 10.05.04 01:39
кто знает язык проще VB? Киньте пожалуйста здесь ссылку.
Dim AllControls As Integer
If Ctl_IsArray(Controls(AllControls)) Then
MsgBox Controls(AllControls).Name & "(" & Controls(AllControls).Index & ")"
Else
MsgBox Controls(AllControls).Name
End If
Next AllControls
End Sub
Ctl_IsArray = True
 im 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-сайт:
Профиль | | #13
Добавлено: 10.05.04 03:07
Номер ответа: 14
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #14
Добавлено: 10.05.04 03:15
Номер ответа: 15
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #15
Добавлено: 10.05.04 22:24
Народ! я за VB примерно год, может я бы и сам это сделал, правда потратив несколько дней, у вас это заняло несколько минут, а когда пишешь что-то большое, как то нехочется тормозить на несколько дней, тока из за того что налепил на форму кучу массивов. А две процедуры связать то могу, я вот только думал что вторая вовсе непонадобится. Вообщем тебе @CyRax PTR я выражаю благодарность, но тока ненадо меня такими вопросами озадачивать, мол могу ли я 2 процедуры связать, могу! (наверное)