Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите найти ошибку при записи в текстовый файл / 17 сообщений из 17, страница 1 из 1
18.11.2011, 13:29
    #37533392
Жентос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку при записи в текстовый файл
Есть класс логгера:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Option Explicit

Class  SimpleTextLogger
	
	Private FileInstance
	Private strFilePath
	
	Private Sub Class_Initialize
		Dim fso
        strFilePath = DataTable("LogFilePath", dtGlobalSheet) &_
						DataTable("LogFileName", dtGlobalSheet) & ".txt"
		Set fso = CreateObject("Scripting.FileSystemObject")
		Set FileInstance = fso.CreateTextFile(strFilePath, True)

	End Sub

	Private Sub Class_Terminate
		FileInstance.Close
		AboutLogger

	End Sub

	Public Sub WriteLogLine(strLogInfo)
	Dim strResult
		strResult = Trim( Now() ) & vbTab & strLogInfo
		FileInstance.WriteLine(strResult)

	End Sub

	Private Sub AboutLogger
		MsgBox("Your log is saved in """ & strFilePath & """")

	End Sub

End Class

При вызове FileInstance.WriteLine(strResult) стала появляться ошибка: "Invalid procedure call or argument". strResult имеет тип String.
Объект создается вот так: Set objTextLogger = New SimpleTextLogger. На момент вызова еще не разрушен.
Уже смотрю часа 2, подскажите, что еще может быть.
...
Рейтинг: 0 / 0
18.11.2011, 13:47
    #37533435
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку при записи в текстовый файл
Код: plaintext
1.
2.
3.
	Public Sub WriteLogLine(ByVal strLogInfo as String)
	Dim strResult as String = Trim( Now() ) & vbTab & strLogInfo
		FileInstance.WriteLine(strResult)
	End Sub
...
Рейтинг: 0 / 0
18.11.2011, 14:00
    #37533470
Жентос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку при записи в текстовый файл
Konst_One, не помогло.

P.S. это vbscript
...
Рейтинг: 0 / 0
18.11.2011, 14:20
    #37533521
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку при записи в текстовый файл
Сделайте полнофункциональный пример и выложите в виде *.vbs
...
Рейтинг: 0 / 0
18.11.2011, 14:49
    #37533592
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку при записи в текстовый файл
ЖентосПри вызове FileInstance.WriteLine(strResult) стала появляться ошибка: "Invalid procedure call or argument".То есть когда-то раньше работало нормально, а тут вдруг стала выскакивать ошибка, так, что ли?
...
Рейтинг: 0 / 0
18.11.2011, 15:02
    #37533623
Жентос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку при записи в текстовый файл
Akina, так и есть. Я его набросал позавчера, он нормально работал. Вчера вечером поломался, хотя я его не трогал

Antonariy, он работает в связке с QTP, потому выложу кратко:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
Option Explicit

Class  SimpleTextLogger
	
	Private FileInstance
	Private strFilePath
	
	Private Sub Class_Initialize
		Dim fso
        strFilePath = DataTable("LogFilePath", dtGlobalSheet) &_
						DataTable("LogFileName", dtGlobalSheet) & ".txt"
		Set fso = CreateObject("Scripting.FileSystemObject")
		Set FileInstance = fso.CreateTextFile(strFilePath, True)

	End Sub

	Private Sub Class_Terminate
		FileInstance.Close
		AboutLogger

	End Sub

'	Public Sub WriteLogLine(strLogInfo)
'	Dim strResult
'		strResult = Trim( Now() ) & vbTab & strLogInfo
'		FileInstance.WriteLine(strResult)
'
'	End Sub

	Public Sub WriteLogLine(ByVal strLogInfo )
	Dim strResult
		strResult = Trim( Now() ) & vbTab & strLogInfo
		FileInstance.WriteLine(strResult)

	End Sub

	Private Sub AboutLogger
		MsgBox("Your log is saved in """ & strFilePath & """")

	End Sub

End Class

Class TotalReporter
	Private objTextLogger
	Private objExcelLogger

	Private Sub Class_Initialize
		Set objExcelLogger = New SimpleExcelLogger
		Set objTextLogger = New SimpleTextLogger

	End Sub

	Public Sub Report(micState, strEventName, strEventLog)
                Reporter.ReportEvent micState, strEventName, strEventLog
		objExcelLogger.AddLogRecord(strEventLog)
		objTextLogger.WriteLogLine(strEventLog)

	End Sub

	Private Sub Class_Terminate
		'Do something

	End Sub

End Class


Dim objTotalReporter, intDelaySeconds

DataTable.Import ("..\..\Data\Tutorial_Onliner.xls")
intDelaySeconds =  60 	' Delay in seconds
Set objTotalReporter = New TotalReporter

bAvailable = False
bAvailable = objSomeQtpObject.Exist
If bAvailable Then
	objTotalReporter.Report micPass, "AVAILABILITY_CHECK", sobjectToFind & " found succesfully"

Else
	objTotalReporter.Report micFail, "AVAILABILITY_CHECK", sobjectToFind & " not found"
	ExitAction

End If
...
Рейтинг: 0 / 0
18.11.2011, 15:17
    #37533654
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку при записи в текстовый файл
По тексту претензий нет.
Единственное, что могу предположить - что есть какие-то проблемы с FileInstance... создаётся ли он? что с правами у юзера в каталоге? и так далее...
...
Рейтинг: 0 / 0
18.11.2011, 15:58
    #37533770
Жентос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку при записи в текстовый файл
Akina, я локально имею права администратора. Перенес в другую директорию -- не помогло.

Единственно: установил вчера Microsoft Script Debugger часа в 4 пополудни. До этого глюков не было с логгером, сел в 6 проверять код -- полезли ошибки
...
Рейтинг: 0 / 0
18.11.2011, 16:09
    #37533795
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку при записи в текстовый файл
ЖентосAkina, я локально имею права администратора. Перенес в другую директорию -- не помогло.
Есть возможность опробовать скрипт на другом компе?

ЖентосЕдинственно: установил вчера Microsoft Script Debugger часа в 4 пополудни. До этого глюков не было с логгером, сел в 6 проверять код -- полезли ошибки
Ну "после того" - не значит "вследствие того". Хотя, несомненно, подозрительно.

Предлагаю сделать следующее:
1) Кастрировать код по максимуму (оставить только два класса и тупое создание инстанса с обращением к методу, всё позаменять литералами) - останется ли проблема?
2) Деинсталлировать MSD (или ещё лучше - откатиться на "до установки") и проверить, работает ли... если заработает - снова установить MSD и проверить, кривит ли...
...
Рейтинг: 0 / 0
18.11.2011, 16:51
    #37533915
Жентос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку при записи в текстовый файл
Akina,
1) кастрированный код не работает (ошибка та же)
2) снес дебаггер -- не работает (ошибка та же)
3) проверил у чела на другом компе -- работает без нареканий
...
Рейтинг: 0 / 0
18.11.2011, 18:31
    #37534087
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку при записи в текстовый файл
А точка отката на "до установки дебаггера" - есть? тоже не помогает?
Покажите полный "кастрированный" код - он должен быть коротким и без внешних ссылок... или приложите к сообщению в ZIP... покрутим.

Заодно попробуйте добавить проверочный код - а существует ли в момент вызова метода этот FileInstance? а какой тип собсно у него в этот момент? А возможно ли обращение к его свойствам и другим методам?
...
Рейтинг: 0 / 0
18.11.2011, 19:30
    #37534193
Жентос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку при записи в текстовый файл
Akina, вот он:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
Class  SimpleTextLogger
	
	Private FileInstance
	Private strFilePath
	
	Private Sub Class_Initialize
		Dim fso
                strFilePath = "C:\1.txt"
		Set fso = CreateObject("Scripting.FileSystemObject")
		Set FileInstance = fso.CreateTextFile(strFilePath, True)

	End Sub

	Private Sub Class_Terminate
		FileInstance.Close
		AboutLogger

	End Sub

	Public Sub WriteLogLine(strLogInfo)
	Dim strResult
		strResult = Trim( Now() ) & vbTab & strLogInfo
		FileInstance.WriteLine(strResult)

	End Sub

	Private Sub AboutLogger
		MsgBox("Your log is saved in """ & strFilePath & """")

	End Sub

End Class

Dim objTextLog
Set objTextLog = New SimpleTextLogger
objTextLog.WriteLogLine("Hello")

Сам объект FileInstance существует: у него есть какие-то свойства. Тип дебаггер определяет, как Object. К другим свойствам сейчас попробую обратиться.
...
Рейтинг: 0 / 0
18.11.2011, 23:28
    #37534471
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку при записи в текстовый файл
Мда... и так вертел, и эдак, и дебаггер ставил, и сносил, и на системе со студией, и на виртуалке без студии - работает скрипт как часы...
...
Рейтинг: 0 / 0
23.11.2011, 12:19
    #37540071
Жентос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку при записи в текстовый файл
Разобрался: не пишутся в файл строки с использованием кирилицы...
...
Рейтинг: 0 / 0
23.11.2011, 13:01
    #37540168
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку при записи в текстовый файл
ЖентосРазобрался: не пишутся в файл строки с использованием кирилицы...
Серьёзно? литералы (в т.ч. из переменной) с кириллицей пишутся на счёт "раз"...
...
Рейтинг: 0 / 0
23.11.2011, 13:10
    #37540193
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку при записи в текстовый файл
Возможно там английская винда без языковых пакетов. В этом случае нужно fso.CreateTextFile(strFilePath, True, True ), чтобы сохраняло в юникоде.
...
Рейтинг: 0 / 0
23.11.2011, 14:47
    #37540450
Жентос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку при записи в текстовый файл
AntonariyВозможно там английская винда без языковых пакетов. В этом случае нужно fso.CreateTextFile(strFilePath, True, True ), чтобы сохраняло в юникоде.
В точку!!!!

Спасибо
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите найти ошибку при записи в текстовый файл / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]