Страдает запись в файл :-(

Программирование на Visual Basic for Applications
Eugene
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 08.01.2005 (Сб) 12:06

Страдает запись в файл :-(

Сообщение Eugene » 17.01.2005 (Пн) 20:13

Люди. Помогите разобраться.
Есть переменная(String), к-я принимает какое-либо значение.
и это значение нормально присваевается в процессе работы макроса, что видно во время отладки, НО! после записывания этой переменной в файл - файл принимает какие-то левые значения... причем если эти значения скопировать в буфер и вставить в ворд, то все нормально, за исключением того, что ВБА в начало файла запихивает разные символы (напр - скобку и квадрат... :cry:)
У кого какие соображения :?:
И второй вопрос: У меня ВБА ругается, если я сразу записывает строчку длинной больше 126 символов. Это можно как-нить исправить, т.к. во избежание ошибок в другой проге - очень нужно, чтоб инфа в файл записывалась единовременно и вся - а там строка варьируется примерно от 140 - 220 - т.е. меньше 256

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 17.01.2005 (Пн) 22:04

Код давай. Так не разберешься.

Eugene
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 08.01.2005 (Сб) 12:06

Сообщение Eugene » 18.01.2005 (Вт) 11:02

Full_Enquiry = "ClassCode=" + ClassCode + "; ACCOUNT=" + Account + "; ClientCode=" + ClientCode + _
"; TRANS_ID=" & S1.Trans_ID & "; SECCODE=" & S1.SecCode & "; ACTION=" & S1.Action & _
"; OPERATION=" & S1.Operation & "; PRICE=" & S1.Price + & "; QUANTITY=" & S1.MMLot
If Dir(TRIFileName) <> "" Then Kill TRIFileName
Open TRIFileName For Random Shared As #5
Put #5, 1, Full_Enquiry
Close #5

вот кусок кода

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 18.01.2005 (Вт) 11:44

Читай хелп по Put про Random Access. Вкратце:
Если записываемая переменная имеет тип String, put пишет перед ней двух-байтовый дескриптор с длиной строки (в шестнадцатиричном виде). А если ты переменную Full_Enquiry не объявлял, она у тебя имеет тип Variant, он пишет еще два байта, говорящих, что это String. В любом случае, если пишешь в Random Mode, ты не получишь просто текстовый файл.

Eugene
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 08.01.2005 (Сб) 12:06

Сообщение Eugene » 18.01.2005 (Вт) 12:01

Open TRIFileName For Binary Shared As #5
Put #5, 1, Full_Enquiry
Close #5

вот так вроде - никаких проблем (по крайней мере - сейчас :-))
Спасибо.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 18.01.2005 (Вт) 12:22

Option Explicit есть?
И как объявлена Full_Enquiry?
Lasciate ogni speranza, voi ch'entrate.

Eugene
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 08.01.2005 (Сб) 12:06

Сообщение Eugene » 18.01.2005 (Вт) 16:37

Option Explicit - нет
Full_Enquiry объявлена как String


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Mail.ru [бот] и гости: 59

    TopList