Как установить длину Long переменой?

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

Как установить длину Long переменой?

Сообщение BDSoft » 10.08.2006 (Чт) 15:35

Как установить длину Long переменой?

Код: Выделить всё
DIM SizeFile AS LONG
Open "E:\Games\GTA San Andreas MultuPlayar\data\maps\1bb_mod\bb_mod.img" For Binary As #1
Get #1, 11, SizeFile
Close #1


Чтоб считалось только 4 байта.

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

Сообщение alibek » 10.08.2006 (Чт) 15:41

Длина переменной Long всегда четыре байта, независимо от твоих желаний.
Lasciate ogni speranza, voi ch'entrate.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 10.08.2006 (Чт) 18:28

MultiPlayer с двумя ошибками написано...

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 10.08.2006 (Чт) 18:50

(мысли)
Может, автор про значение переменной?
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

BDSoft
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 25.07.2006 (Вт) 21:24

Сообщение BDSoft » 11.08.2006 (Пт) 17:39

Код: Выделить всё
DIM SizeFile AS LONG
Open "E:\Games\GTA San Andreas\data\maps\1bb_mod\bb_mod.img" For Binary As #1
Get #1, 11, SizeFile
Close #1

Считывается &H480000, а должно быть &H4800

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 11.08.2006 (Пт) 17:51

Эээ. Трехбайтовое поле?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

BDSoft
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 25.07.2006 (Вт) 21:24

Сообщение BDSoft » 11.08.2006 (Пт) 17:55

Код: Выделить всё
DIM SizeFile AS LONG
Open "E:\Games\GTA San Andreas\data\maps\1bb_mod\bb_mod.img" For Binary As #1
Get #1, 11, SizeFile
Close #1
Text2 = Mid(Hex(SizeFile * 2048), 1, Len(Hex(SizeFile * 2048)) - 2)
Вот так два нолика убрал.
Но так, когда SizeFile стаёт большим, выдаёт ошибку Переполнение

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

Сообщение Viper » 11.08.2006 (Пт) 17:59

BDSoft писал(а):
Код: Выделить всё
Text2 = Mid(Hex(SizeFile * 2048), 1, Len(Hex(SizeFile * 2048)) - 2)


в чем смысл этого действа?
Весь мир матрица, а мы в нем потоки байтов!

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 11.08.2006 (Пт) 18:04

Вот так два нолика убрал

LOL
BDSoft
Изычал ли ты в школе деление нацело?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

BDSoft
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 25.07.2006 (Вт) 21:24

Сообщение BDSoft » 11.08.2006 (Пт) 18:22

Изычал ли ты в школе деление нацело?

Код: Выделить всё
text2=Hex(SizeFile * 2048) / 100

Делил на сто, ошибка несоответствие типа.
И темболее там не всегда два нуля.

!Viper! писал(а):
BDSoft писал(а):
Код: Выделить всё
Text2 = Mid(Hex(SizeFile * 2048), 1, Len(Hex(SizeFile * 2048)) - 2)


в чем смысл этого действа?


Чтоб убрать два знака с конца Hex(SizeFile * 2048) . Или ты про * 2048?

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

Сообщение Viper » 11.08.2006 (Пт) 18:26

похоже, что
1) деление нацело не знакомо таки автору
2) автор незнает чего он собственно хочет
3) пытается делить строку на 100

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

BDSoft
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 25.07.2006 (Вт) 21:24

Сообщение BDSoft » 11.08.2006 (Пт) 18:41

Кароче задаю вопрос ещё раз.
Код: Выделить всё
Dim AdresFile As Long
Open OFN For Binary As #1
Get #1, &H8, AdresFile
Text2 = Hex(AdresFile * 2048)
Close #1


Получается Text2 = 480000, а должно Text2 = 4800
Вопрос: Как убрать эти два знака с конца, до перевода в Hex?

BDSoft
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 25.07.2006 (Вт) 21:24

Сообщение BDSoft » 11.08.2006 (Пт) 18:44

Файл который открываю это архив, а AdresFile-это смещение файла в архиве(в двухкилобайтных блоках, т.е. деленный на 2048).

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 11.08.2006 (Пт) 18:58

англицкое слово адрес пишеться с двумя d то бишь address
Код: Выделить всё
Text2 = Hex((AdresFile\&h100) * 2048)
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

BDSoft
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 25.07.2006 (Вт) 21:24

Сообщение BDSoft » 11.08.2006 (Пт) 19:14

Запутался я в этих типах переменных. :(

Теперь работает. :) Спасибо за помощь.

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 14.08.2006 (Пн) 8:09

А может читать с правильного смещения в файле?
Get #1, &H8 +1, AdresFile
Ведь адреса в VB-ском файле начинаются с 1, а не с 0?
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН


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

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

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

    TopList