Оператор Open

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Оператор Open

Сообщение Proxy » 04.12.2007 (Вт) 13:42

Создаю некоторый файл дельфями. Открываю вб6 через оператор open. LOF возвращает в четыре раза меньше, чем на самом деле. Чтение запись осуществляется только в байты кратные 4. Запись в первый приводит на самом деле к записи в 4, во второй - 8 и т.д.
Подскажите где копать? API поможет? (часть файла в юникоде (в начале), в других файлах таких трабл нет)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16489
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 04.12.2007 (Вт) 14:38

Proxy
1) Не существует оператора Open. Существует ключевое слово Open.
2) Показывай код.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 04.12.2007 (Вт) 14:51

по поводу операторов, ключевых слов, функций и других элементов пора FAQ писать.

сдается мне, что открывается файл как Random и некправильно указана длина записи
Весь мир матрица, а мы в нем потоки байтов!

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 04.12.2007 (Вт) 17:24

Viper
Скорее всего именно так.
Proxy
Код в студию.
Подпись проходит рефакторинг

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Сообщение Proxy » 04.12.2007 (Вт) 19:53

в начале:
Код: Выделить всё
Open "C:\Frequency.tmp" For Binary As 2
Put #2, 1, "Frq:"


дальше:
Код: Выделить всё
   For subsri = 4 To 259
    indOfMax = someFunction(subsri-4)

...
Код: Выделить всё
   Put #2, subsri + 1, indOfMax
  Next


И в итоге получается файл не 259b, а ~1kb. (До запуска проги файл весит ~26b). Если C:\Frequency.tmp, который создаётся проектом из дельфи, то всёравно происходит так, однако если C:\Frequency.tmp заменить на C:\Frequency22.tmp (который никогда не создавался), то весит 259kb и всё норм. Мб винды думают, что это юникод всё? Тогда почему после удаления и создания при помощи вб продолжают так думать. Не могу разобраться. Вообще запутался.

ЗЫ. После перезагрузки создаём C:\Frequency.tmp при помощи вб и всё воркит. Создаём дальфями и опять глюки до перезагрузки.[/code]

DKbelRoma
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 282
Зарегистрирован: 13.09.2007 (Чт) 23:32
Откуда: Из Кривого Рога

Сообщение DKbelRoma » 04.12.2007 (Вт) 21:10

Что за оператор Open??? :? Нет такого оператора. Есть (как Хакер говорит) код, ключевое слово Open.
з.ы. НАпишите это в FAQ. Всем полезно будет :lol:
«Не важно, откуда ты. Важно - где ты.»

Captain
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 04.02.2005 (Пт) 21:50
Откуда: Moskau

Сообщение Captain » 04.12.2007 (Вт) 21:18

Proxy писал(а):
Код: Выделить всё
   Put #2, subsri + 1, indOfMax

у тебя indOfMax объявлен как Long? Long имеет размер 4 байта, вот эти 4 байта в файл и пишутся

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16489
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 05.12.2007 (Ср) 1:15

Captain
Я поначалу тоже так думал, но в этом случае вторая запись запишется в 2-5 байт, а не в 8-12.

DKbelRoma
А And это оператор? А End?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

DKbelRoma
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 282
Зарегистрирован: 13.09.2007 (Чт) 23:32
Откуда: Из Кривого Рога

Сообщение DKbelRoma » 05.12.2007 (Ср) 17:58

Хакер помоему End это тоже код, ключевое слово.Означает завершение процедуры или завершение процеса или чего либо. Верно?
А с And я ваще вроде не встречался. Просвети...
«Не важно, откуда ты. Важно - где ты.»

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16489
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 05.12.2007 (Ср) 18:02

Был вопрос, оператор ли это.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 05.12.2007 (Ср) 18:06

DKbelRoma
And - побитовый оператор логического умножения.
Подпись проходит рефакторинг

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16489
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 05.12.2007 (Ср) 18:10

Блин, сказал. Ладно, DKbelRoma: AddressOf и Close. Что из них оператор, а что нет?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

DKbelRoma
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 282
Зарегистрирован: 13.09.2007 (Чт) 23:32
Откуда: Из Кривого Рога

Сообщение DKbelRoma » 05.12.2007 (Ср) 18:10

Lumen
Спасибо буду знать!
Хакер
Ответ: Это оператор. :D

Хакер что за опрос? :o
«Не важно, откуда ты. Важно - где ты.»


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: Yandex-бот и гости: 2

    TopList