Проблемы с файлом произольного доступа.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Gigahard
Бывалый
Бывалый
 
Сообщения: 253
Зарегистрирован: 24.07.2002 (Ср) 11:15
Откуда: Russia

Проблемы с файлом произольного доступа.

Сообщение Gigahard » 15.12.2005 (Чт) 11:24

Странно, в двух справочниках по VB расписывается произвольный доступ к файлу. Что то аналогичное вот такому коду:
Код: Выделить всё

Private Type UsrType
    ID As String
    Param As String
End Type


Private Sub Command1_Click()
Dim MyType As UsrType
Open "D:\TestLog.dat" For Random As #1 Len = Len(MyType)


MyType.ID = "first_id"
MyType.Param = "param_1"

Put #1, 1, MyType
Close #1
End Sub

Но не работает зараза. Пишет все время "Bad record length". Я уже и не знаю что не так... Подскажите люди добрые...

Warn
Обычный пользователь
Обычный пользователь
 
Сообщения: 52
Зарегистрирован: 08.12.2005 (Чт) 20:34
Откуда: Питер

Сообщение Warn » 15.12.2005 (Чт) 14:05

Код: Выделить всё
Len = Len(MyType)

Попробуй длину Mytype получить отдельно. Узнаешь, в чем ошибка.

Gigahard
Бывалый
Бывалый
 
Сообщения: 253
Зарегистрирован: 24.07.2002 (Ср) 11:15
Откуда: Russia

Сообщение Gigahard » 15.12.2005 (Чт) 14:13

Ну... И в чем?

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

Сообщение alibek » 15.12.2005 (Чт) 14:17

А самому подумать?
Файлы произвольного доступа должны иметь фиксированную длину записи.
Какая может быть фиксированная длина записи, если в мемберах есть String?
Lasciate ogni speranza, voi ch'entrate.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 15.12.2005 (Чт) 14:18

Код: Выделить всё
Private Type UsrType
    ID As String
    Param As String * 100
End Type


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

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 15.12.2005 (Чт) 14:18

2 alibek
пока писал уже ответили, сорри

Gigahard
Бывалый
Бывалый
 
Сообщения: 253
Зарегистрирован: 24.07.2002 (Ср) 11:15
Откуда: Russia

Сообщение Gigahard » 15.12.2005 (Чт) 14:25

Нда... про о что string должен быть фикировной длинны, я и не подумал... :(
Делал по примеру из книги... Там просто String указан...

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

Сообщение alibek » 15.12.2005 (Чт) 15:02

То же относится к Variant и массивам.
Lasciate ogni speranza, voi ch'entrate.

Gigahard
Бывалый
Бывалый
 
Сообщения: 253
Зарегистрирован: 24.07.2002 (Ср) 11:15
Откуда: Russia

Сообщение Gigahard » 15.12.2005 (Чт) 15:09

Я так понял, что забить динамический массив в пользовательский тип данных не реально?

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 15.12.2005 (Чт) 15:26

Gigahard писал(а):Я так понял, что забить динамический массив в пользовательский тип данных не реально?

Реально, но не реально юзать его с файлом произвольного доступа...
А я все практикую лечение травами...


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

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

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

    TopList