Страница: 1 |
Страница: 1 |
Вопрос: Люди, косяк или глюк ?
Добавлено: 03.11.04 20:55
Автор вопроса: -=sashOK=-
Имеется класс. У класса есть метод, который выводит инфу непосредственно в
Listbox. Методу передаётся : linklst as listbox (Object уже пробовал).
Теперь вопрос : Почему в одном проэкте (одна форма, здесь этот класс и родился) метод работает, а в дру
гом (множество форм, здесь он просто подключён)? Компилятор выводит : type mismatch.
Ответы
Всего ответов: 13
Номер ответа: 1
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #1
Добавлено: 04.11.04 04:48
Вопрос непонятен. Покажи код.
Номер ответа: 2
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #2
Добавлено: 04.11.04 08:27
Совершенно непонятен. Быть может косяк с Public/Private. Гогда класс
создаешь внутри проекта, все объявления в нем, как и сам класс, проходят как
Private. Для компиляции и подключения к другим проектам тебе понадобятся
паблы. Написал мутновато, но и вопрос не лучше
Номер ответа: 3
Автор ответа:
-=sashOK=-
Вопросов: 10
Ответов: 19
Профиль | | #3
Добавлено: 04.11.04 14:31
Метод :
Public Sub ShowItems(linklst As ListBox)
Open mfile For Input As #1
Do Until EOF(1)
Line Input #1, tmp
If Left(tmp, 3) = "#>>" Then
i = 0
 o While (eSys(i) <> Right(tmp, Len(tmp) - 3))
i = i + 1
If i > UBound(eSys) Then Exit Do
Loop
If i > UBound(eSys) Then linklst.AddItem Right(tmp, Len(tmp) - 3)
End If
Loop
Close #1
End Sub
место где пашет :
Private Sub Form_Load()
lstItem.Clear
cdf.FileName = App.path & "\0inf.cdf"
cdf.TmpFile = App.path & "\tmp.cdf"
cdf.ReDimESys (2)
cdf.SetESys(0) = "str"
Call cdf.ShowItems(lstItem)
End Sub
место где глючит:
Public Sub Form_Load()
lstRead.Clear
If Dir(CDF.FileName) = "" Then Call frmMain.ShowError("Не найден файл:", frmMain.mfile & "|"
CDF.ShowItems (lstRead)
Call AppColor
If frmMain.filBMP.ListCount <> 0 Then imgRec.Picture = LoadPicture(App.path & "\data\0.pic\BMPs\" & frmMain.filBMP.List(Rnd(frmMain.filBMP.ListCount)))
End Sub
(c) 2004 Copyright by -=sashOK=-
Номер ответа: 4
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #4
Добавлено: 04.11.04 18:35
Ты бы хоть написАл, на какой именно строчке ошибка вылазит...
В первом варианте перед вызовом ShowItems у тебя задаются имена файлов и вроде как инициализируется массив; а во втором - при ошибке с именем файла ветка "THEN" выполняется ("Не найден файл"...), но потом всё равно вызывается ShowItems. М.б. в этом дело?
Номер ответа: 5
Автор ответа:
-=sashOK=-
Вопросов: 10
Ответов: 19
Профиль | | #5
Добавлено: 04.11.04 18:39
Извените, люди, забыл!
Именно в строчке :
CDF.ShowItems(lstRead)
где lstread - listbox,
как уже говорил - type mismatch
Номер ответа: 6
Автор ответа:
-=sashOK=-
Вопросов: 10
Ответов: 19
Профиль | | #6
Добавлено: 04.11.04 18:45
А с веткой THEN - я недоделал. Там программа отрубаться должна.
Да и в вопросе я забыл слово "не пашет" написать
Номер ответа: 7
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #7
Добавлено: 04.11.04 18:53
Поставь на этой строчке breakpoint, как остановишься на ней - попробуй сходить дальше по F8: м.б. она тебя всё же пустит внутрь метода и там опять будет "спотыкач" на к.-либо строчке...
Номер ответа: 8
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #8
Добавлено: 05.11.04 07:58
Да, прикольно ты показал код. Из него можно узнать что угодно, но только не то что нужно.
А что такое CDF не подскажешь? Желательно код как и где ты его обявлял. Если я конечно правильно понял и CDF - это и есть твой класс.
Номер ответа: 9
Автор ответа:
-=sashOK=-
Вопросов: 10
Ответов: 19
Профиль | | #9
Добавлено: 05.11.04 13:29
Ну подумаешь немного смудил.
CDF - это экземпляр моего класса.
CDFdevice_fs - это и есть мой класс.
Public CDF As New CDFdevice_fs
Я и сам помудил немного - работает только одной форме.
Добавляешь ещё одну - на ней уже нет. По-разному объявлял
- всёрарвно не пашет.
Номер ответа: 10
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #10
Добавлено: 05.11.04 16:48
Знаешь, вышли лучше мне на мыло. Так будет в конечном итоге быстрее чем я из тебя буду по капле данные выжимать.
Номер ответа: 11
Автор ответа:
-=sashOK=-
Вопросов: 10
Ответов: 19
Профиль | | #11
Добавлено: 05.11.04 19:00
Да ладно. Спасибо всем !
Сам управлюсь.
Фишка с breakpoint'ом не пройдёт,потому что VB сначала компилирует,а потом уже даёт пошагово выполнять программу. Так что он сначала ошибку выдаёт а потом уже типа пытается пошагово что-то сделать.
Номер ответа: 12
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #12
Добавлено: 05.11.04 21:18
Млин, приятель. Извини, если лажу счас спорю, но у меня в этот кусок счас нет времени въезжать толком.
Просто заметил, что у тебя в строчке, где глючит не стоит Call перед вызовом процедуры, а это значит, что аргумент в скобки брать не надо. Собственно только в этом и есть разница между двумя кусками, кажись.
Может в этом проблема?
Номер ответа: 13
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #13
Добавлено: 09.11.04 08:53
Собственно, не в скобках, а просто Call должен присутствовать в этой строчке. У меня такая проблема как-то была когда передавал тип как аргумент. Без Call - ни в какую, зато с ним пашет. 100% в этом проблема. Т.е.
Call CDF.ShowItems(lstRead)