powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите найти ошибку при записи в текстовый файл
17 сообщений из 17, страница 1 из 1
Помогите найти ошибку при записи в текстовый файл
    #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
Помогите найти ошибку при записи в текстовый файл
    #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
Помогите найти ошибку при записи в текстовый файл
    #37533470
Жентос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One, не помогло.

P.S. это vbscript
...
Рейтинг: 0 / 0
Помогите найти ошибку при записи в текстовый файл
    #37533521
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделайте полнофункциональный пример и выложите в виде *.vbs
...
Рейтинг: 0 / 0
Помогите найти ошибку при записи в текстовый файл
    #37533592
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЖентосПри вызове FileInstance.WriteLine(strResult) стала появляться ошибка: "Invalid procedure call or argument".То есть когда-то раньше работало нормально, а тут вдруг стала выскакивать ошибка, так, что ли?
...
Рейтинг: 0 / 0
Помогите найти ошибку при записи в текстовый файл
    #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
Помогите найти ошибку при записи в текстовый файл
    #37533654
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По тексту претензий нет.
Единственное, что могу предположить - что есть какие-то проблемы с FileInstance... создаётся ли он? что с правами у юзера в каталоге? и так далее...
...
Рейтинг: 0 / 0
Помогите найти ошибку при записи в текстовый файл
    #37533770
Жентос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina, я локально имею права администратора. Перенес в другую директорию -- не помогло.

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

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

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

Заодно попробуйте добавить проверочный код - а существует ли в момент вызова метода этот FileInstance? а какой тип собсно у него в этот момент? А возможно ли обращение к его свойствам и другим методам?
...
Рейтинг: 0 / 0
Помогите найти ошибку при записи в текстовый файл
    #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
Помогите найти ошибку при записи в текстовый файл
    #37534471
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда... и так вертел, и эдак, и дебаггер ставил, и сносил, и на системе со студией, и на виртуалке без студии - работает скрипт как часы...
...
Рейтинг: 0 / 0
Помогите найти ошибку при записи в текстовый файл
    #37540071
Жентос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разобрался: не пишутся в файл строки с использованием кирилицы...
...
Рейтинг: 0 / 0
Помогите найти ошибку при записи в текстовый файл
    #37540168
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЖентосРазобрался: не пишутся в файл строки с использованием кирилицы...
Серьёзно? литералы (в т.ч. из переменной) с кириллицей пишутся на счёт "раз"...
...
Рейтинг: 0 / 0
Помогите найти ошибку при записи в текстовый файл
    #37540193
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно там английская винда без языковых пакетов. В этом случае нужно fso.CreateTextFile(strFilePath, True, True ), чтобы сохраняло в юникоде.
...
Рейтинг: 0 / 0
Помогите найти ошибку при записи в текстовый файл
    #37540450
Жентос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyВозможно там английская винда без языковых пакетов. В этом случае нужно fso.CreateTextFile(strFilePath, True, True ), чтобы сохраняло в юникоде.
В точку!!!!

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


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