vbstreets конференция - Виж темата - тип низ данни

Мисля, че мога да предполагам, където се качват.
По-точно, къде е станало този, от когото той го взе.

Ако го направите:
Код: Избери всички Вид хх
А, както String
б толкова дълго,
С като String * 10
Докато г
д () Както Байт
Край Type

Под тест ()
Дим и низ
Дим Х хх
Дим е ​​толкова дълго,
S = "ABCDEF" + ChrW (H6DE)

е = FreeFile
Отворете "C: \ testfile" За Binary Както е
Сложете #F. х
В близост е
End Sub

Тогава ние се получи файл по-скоро любопитен резултат:
x.a ще изглежда така (шестнадесетичен): 07 00 61 62 63 64 65 66 3F
x.c - така: 61 62 63 64 65 66 20 20 20 3F
А x.e - по този начин: 01 00 0E 00 00 00 00 00 00 00 61 00 62 00 63 00 64 00 65 00 66 06 00 DE

Т.е. x.a записва като ANSI, докато в самото начало на добавя два байта дължина ред.
x.c - също като ANSI, и липсва част от линията, за да запълни празнините.
А x.e - като масив от логически байта (като цяло), съставляващи низ prenex определен размер глава rovnenko 10 байта.

Въпреки това, тъй като това е всичко се дължи на факта, като Б.О. магазини низове в паметта - не мога да си представя.

етикет:
CLI
етикет JMP

Е, когато запишете файл има някои не seralizatsiya (Между другото корени са в обратната съвместимост VB с древни версии, които използва ANSI-линия), която, да, има малко общо с класирането в паметта.

-Ние се разделят усмихнати от останалата част на тялото си, капитане.
-Това е прав! Ние ги обезглави.

За пореден път се обърна глухи, каза Hacker, имам нещо, уловени на мозъка.
Декларирам две променливи от тип String:

Код: Избери всички Дим strExemple_1 Както стринга
Дим strExemple_2 Както стринга * 10
Да предположим, че ние се зареди в променливи от текстов файл txtExemple.txt. размер на 20 KB.

размер strExemple_1 е 4 байта и съдържа указател към размер на бул линия 4+ (20 * 1024 + 1) * 2 = 40 966 (байта).
размер strExemple_2 е 4 байта и съдържа указател към размер на бул линия 4+ (10 + 1) * 2 = 26 (байта)

Аз наистина се надявам, че закачен правилно и в правилния ред. Ако не, моля, поправете.

знак * от = "| * 0> 78 - +<|"; size_t cc = char_traits:: дължина (изход);
за (size_t I = 0; и((Out ?? (I ??) ?? '89)); ??> Cout<

BV е написал (а): Какво е 4 в последния израз?


Дължината на низ, разсеян ни съхранява преди началото на линията.

BV е написал (а): и още повече, умножена по две,


е необходимо 2 байта, така че - WCHAR размер.

-Ние се разделят усмихнати от останалата част на тялото си, капитане.
-Това е прав! Ние ги обезглави.

Добавен
Във всеки случай, аз ще обясня: Мислех, 4 в скоби. 4 А това вече е на второ място след споменава размера на префикс

знак * от = "| * 0> 78 - +<|"; size_t cc = char_traits:: дължина (изход);
за (size_t I = 0; и((Out ?? (I ??) ?? '89)); ??> Cout<

От изложеното по-горе, аз са се формирали по-долу:
Ние заявяваме, две UDT и техните променливи в модула.

Код: Избери всички Option Explicit

Публична Вид MyCustomType_01
varFixedString Както String * 10
varString Както стринга
Край Type

Публична Вид MyCustomType_02
varString_01 Както стринга
varString_02 Както стринга
Край Type

Публичните MyCustomer_01 Както MyCustomType_01
Публичните MyCustomer_02 Както MyCustomType_02
За да напишете кода на бутона:
Код: Избери всички Private Sub Command1_Click ()
Debug.Print "размер MyCustomer_01 в байтове" vbTab LenB (MyCustomer_01)
Debug.Print "размер MyCustomer_02 в байтове" vbTab LenB (MyCustomer_02)
End Sub
И ние получаваме:

Незабавно е написал (а): размер MyCustomer_01 в байтове: 24
MyCustomer_02 размер в байтове: 8


Следователно, област размер MyCustomer_01 включва MyCustomer_01.varFixedString размер 10 * 2 = 20 (байта) и размера на показалеца на бул -разходка MyCustomer_01.varString поле на 4 байта, за общо 24 байта.
Съответно MyCustomer_02 размер е сумата от неговите полета указатели: 8 байта.

Не съвсем.
На първо място, да се отървете от последната от фразата "е в памет на".

На второ място, съобщи Както стринга * N отнема 2L байта, но за доброто на това не е достатъчно: както и да го направи не obrazalsya да fiksed низ променлива или поле fiksed-низ, той никога не ще се появи пред вас под формата на истина. Тя винаги ще се създаде обичайната бул-копие.

-Ние се разделят усмихнати от останалата част на тялото си, капитане.
-Това е прав! Ние ги обезглави.

О, о!
Не напуснах силно чувство, че ще се справят с вида на VB, е необходимо да се погледне в дивите земи на COM и OLE Automation, а може би и по-дълбоко.
Хакерът не ще ви подкани да се чете по този въпрос?

Фиксирани струни като VB, че доколкото знам, не COM.

-Ние се разделят усмихнати от останалата част на тялото си, капитане.
-Това е прав! Ние ги обезглави.