Как преобразовать структуру НЕИЗВЕСТНОЙ ДЛИНЫ в строку?

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

Как преобразовать структуру НЕИЗВЕСТНОЙ ДЛИНЫ в строку?

Сообщение 0xy » 14.01.2007 (Вс) 4:22

Желательно методом, отличным от записи в tmp-файл :)

(мне это нужно для последующего Base64-кодирования и передачи по E-mail)

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

Сообщение tyomitch » 14.01.2007 (Вс) 5:36

Никак.
Более того, её не удастся записать в tmp-файл.
И что ещё интереснее, её нельзя хранить в переменной.
Откуда она у тебя вообще взялась?
Изображение

0xy
Бывалый
Бывалый
 
Сообщения: 223
Зарегистрирован: 14.06.2006 (Ср) 2:34

Сообщение 0xy » 14.01.2007 (Вс) 7:43

Бp.p.. Сам создал :) Типа

Код: Выделить всё

Type a
b as string()
с as long()
..............
end type

Чтоб узнать длину--проще записать ее в файл. Затем можно либо прочесть его обратно (уже как строку), либо посмотреть его длину и юзать VarPtr/MoveMemory :)

Ток как бы без извратов это сделать?

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

Сообщение Хакер » 14.01.2007 (Вс) 11:36

Тогда длина наверное всё таки известна.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 15.01.2007 (Пн) 11:43

Желательно методом, отличным от записи в tmp-файл


На VB без извратов никак, в других языках есть такие функции.

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

Сообщение Twister » 15.01.2007 (Пн) 20:54

Приведи полное определение структуры. Это раз.
Два - что возвращяет Len?
Три - сразу приходит на ум только то, что в структуре есть переменная типа String, длинна которой заранее не известна, но что мешает вычислить длинну каждого члена структуры, а потом сложить?..

Да, и еще - о способе, более кривом, чем запись в темповый файл я еще не слышал... :)
А я все практикую лечение травами...

0xy
Бывалый
Бывалый
 
Сообщения: 223
Зарегистрирован: 14.06.2006 (Ср) 2:34

Сообщение 0xy » 21.01.2007 (Вс) 19:56

Twister писал(а):Да, и еще - о способе, более кривом, чем запись в темповый файл я еще не слышал...

Тем не менее, это, похоже, единственный способ в VB ;)
(Кроме ручного подсчета длины каждой строки)

Код: Выделить всё
' © 0xy, 2007
Function LenEX&(a as ХЗ) ' юзертайп всё равно хрен передашь!
' зато для массивов строк--то, что нужно! :)
dim FHandle&
FHandle = FreeFile
Open "nul:" For Binary Access Read Write Lock Read Write As FHandle
Put FHandle, 1, a
LenEX = Seek(FHandle)-1
Close FHandle
End function


Ну а для сериализации придется писать не в нул, а в тмп, и прочесть оттуда уже строку.

2 Moderators
Поскольку дискуссия о сериализации структур развернулась здесь: "Как передать процедуре переменную неизвестного ей типа?", предлагаю объединить эти две темы.


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

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

Сейчас этот форум просматривают: AhrefsBot и гости: 94

    TopList