Приветствую.
Впал в жуткое недоразумение вот по какому вопросу:
Сразу говорю: Вижуал бейсик:
На сервере лежит текстовый файл, который я извлекаю в переменную и пытаюсь записать на диск.
Система выдаёт: Invalid procedure call or argument на Write объекта FileSystemObject.
Хм.... Теперь пишу посимвольно. Реакция: слетает на символе "?", указывая его код 63 (программно повотчил)
Смотрю оригинал на сервере и что записалось локально: мы запоролись на символе с кодом 178. Прога его не видит, признавая за "?" Причём, попытка сравнить с самим "?" или его кодом,или даже с кодом 178 ни к чему не привела...
Всякие S = Replace(S, Chr(178), "²") и S = Replace(S, Chr(63), "?") не делают погоду вообще.
For i = 1 To Len(S)
w = Mid(S, i, 1)
q = Asc(w)
If q = 63 Then
' Сюдым мы в условии попали
w = Replace(w, Chr(63), "?") ' не заменилось!!!
If w <> Chr(Asc(w)) Then MsgBox "НЕ РАВНО!!!"
End If
ToSave.Write w ' тут мы стопоримся на ошибке "Invalid procedure call or argument".
Next
Символ не равен самому себе, преобразованному в его код и обратно в символ!!!
причём: Asc(w) выдаёт 63...
Копипаст влоб символа из оригинала при сравнении даёт положительный результат...
Причём Asc утверждает, что это символ с кодом 95 (подчёркивание)...
Где грабли?
P.S. Мне пора в дурку.... Первый раз с таким глюкалом встретился....
Кстати, такого бзика нет, если извлечть данные из файла локально, а не сервера....