Произвольная длина пользовательской стр-ры и файл As Random

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Произвольная длина пользовательской стр-ры и файл As Random

Сообщение Space » 20.02.2007 (Вт) 1:10

Хочется писать-читать из файла as Random структуру переменной длины (в структуре описаны строковые переменные без ограничения по длине). Как я понимаю, всё равно длина записи должна быть фиксированной и надо брать максимально возможную длину. Тогда в структуре будут строковые переменные без хвостовых пробелов (не хочется постоянно помнить за Trim). Или же лучше определить постоянный размер каждому строковому 'полю' структуры? Тогда в случае порчи файла легче будет восстановить данные. В случае переменной длины структуры будет быстрее писать-читать записи, т.к. данных меньше (строки не раздуты пробелами). Вообщем, думаю, какой вариант лучше использовать, где какие плюсы и минусы. Посоветуйте мне, плиз.

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

Сообщение BV » 20.02.2007 (Вт) 1:24

Space писал(а):Или же лучше определить постоянный размер каждому строковому 'полю' структуры?


Не лучше, а нужно. Кроме того, если строки не фиксированы, получить размер структуры будет намного сложнее, нежели использовать Trim для работы с фиксированными строками.
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;

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 20.02.2007 (Вт) 1:27

Преобразуй свою структуру в байтовый массив и пиши ее куда хошь,
но причем здесь Trim я не понял. Если при чтении известен формат данных то какие могут быть проблемы?

P.S. Напиши шапку.

Kiryusha
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 216
Зарегистрирован: 30.08.2005 (Вт) 10:56
Откуда: УР, Ижевск

Сообщение Kiryusha » 20.02.2007 (Вт) 8:23

Trim для обрезки пробелов нужных для подгона полей
Судебно-медицинское вскрытие показало, что чукча умер в
результате судебно-медицинского вскрытия.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 20.02.2007 (Вт) 9:13

Непонял - а почему бы просто не писать переменную пользовательского типа (может быть сколь угодно сложной с массивами и строками любой длины) в Binary файл?

Никаких проблем с сохранением/чтением - одна команда Put/Get.

А случай порчи файла вообще не из той степи - INI/XML-ка портится заменой одного байтика.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Cytron
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 266
Зарегистрирован: 15.02.2007 (Чт) 21:09

Сообщение Cytron » 21.02.2007 (Ср) 20:01

Вопрос не по теме, но создавать новую тему из за такого маленького вопроса я не решился.
Можноли изменить длину файла (ну например как файл 1100 KB обрезать до 1000 KB без всяких там перезаписей его)?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.02.2007 (Ср) 20:05

SetEndOfFile
Изображение

Cytron
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 266
Зарегистрирован: 15.02.2007 (Чт) 21:09

Сообщение Cytron » 21.02.2007 (Ср) 20:07

tyomitch
спасибо!


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 104

    TopList