Форум: "Потрепаться";
Текущий архив: 2003.08.14;
Скачать: [xml.tar.bz2];
ВнизPChar Найти похожие ветки
← →
Бархатный (2003-07-28 11:26) [0]Кто-нить объяснит мне, что значит "строка с нулевым окончанием"??? Если ее присваивать к string, будут ли они идентичны?
Что дает это нулевое окончание? Сколько там в конце может быть нулей? Как можно от них всех избавиться?
З.Ы. К хэлпу просьба не отсылать, я оттуда :)
← →
N169 (2003-07-28 11:27) [1]:) это развод, IMHO
← →
Palladin (2003-07-28 11:28) [2]причем конкретный
← →
MalkoLinge (2003-07-28 11:30) [3]В общем ттакая строка может быть любой длинный..тогда спрашиваеться, как определить, где ее конец....строки... признак конца(терминатор) - симол с котом 0 (#0) вот и все... Что же касаеться присвоеения такой строки к стрингу , то по-моеуму (а пароверять лень) там нужно приведение типа.
← →
Виктор Щербаков (2003-07-28 11:32) [4]
> Что дает это нулевое окончание? Сколько там в конце может
> быть нулей? Как можно от них всех избавиться?
Представь, что нет ни string ни PChar ни других строковых типов.
И перед тобой стоит задача хранить строковые значения как таковые. Вот тогда ты довольно быстро додумаешься до хранения последовательностей байт, оканчивающихся определенным символом (например, нулем).
← →
Fredericco (2003-07-28 11:32) [5]У тебя есть последовательность байт: 34 33 126 78 0 54 255 230 0 44.
В переменной типа String будет храниться вся последовательность, а в PChar только 34 33 126 78 0.
← →
Palladin (2003-07-28 11:35) [6]в pchar тоже вся
← →
Бархатный (2003-07-28 11:43) [7]Подскажите функцию для того, чтобы из PChar получить строку без нулей в конце.
Я полагаю, надо воспользоваться StrLen (чтобы узнать, сколько нужно отобрать у PChar) и StrMove.
Я прав?
← →
Digitman (2003-07-28 12:03) [8]var
s: string;
pc: PChar;
..
pc := "ABCD"#0#0"EFGH"#0#0;
s := string(pc);
результат - s = "ABCD" (#0 в конце тоже неявно присутствует, причем - единственный)
← →
Ihor Osov'yak (2003-07-28 12:14) [9]> s := string(pc);
Приведение типа здесь не нужно..
s := pc;
Компилятор сам вызовет LStrFromPChar..
← →
Digitman (2003-07-28 12:23) [10]
> Ihor Osov"yak
это только - для наглядности
← →
Бархатный (2003-07-28 12:31) [11]Не нашел в хэлпе функции LStrFromPChar.
← →
Темный (2003-07-28 12:52) [12]Раз уж здесь объясняют элементарщину, то может быть кто-нибудь подскажет, в чем отличие типов Variant и OleVariant ?
← →
Белый и пушистый (2003-07-28 13:02) [13]Бархатный (28.07.03 11:26)
Очень хочу ответить, но не знаю, поймешь ли.
Сначала хотелось бы определиться с уровнем твоих знаний.
Приведи, пожалуйста, список усвоенного тобой материала,
если можно, и в тематическом и в алфавитном порядке (так мне проще будет установить пробелы в твоих знаниях).
← →
N169 (2003-07-28 13:02) [14]Почему у подушки четыре ушка?
← →
Digitman (2003-07-28 13:08) [15]
> Темный
The OleVariant type represents variants that contain only COM-compatible types. When a Variant is assigned to an OleVariant, incompatible types are converted to their compatible counterparts. For example, if a variant containing an AnsiString is assigned to an OleVariant, the AnsiString becomes a WideString.
← →
Темный (2003-07-28 13:27) [16]Разучились мастера говорить по-русски ... :)
Ну да ладно, и на том спасибо.
← →
Marser (2003-07-28 13:39) [17]
> Приведи, пожалуйста, список усвоенного тобой материала,
> если можно, и в тематическом и в алфавитном порядке (так
> мне проще будет установить пробелы в твоих знаниях).
Начиная с букваря :-)
← →
Digitman (2003-07-28 14:26) [18]
> Темный
в таком случае твой вопрос д.б. прозвучать след.образом :
Раз уж здесь объясняют элементарщину, то может быть кто-нибудь подскажет, в чем отличие типов Variant и OleVariant ? В аглицком я ни бум-бум, ни времени ни желания учить его у меня нет, да и нахрена учить, если здесь завсегда переведут !
← →
Ihor Osov'yak (2003-07-28 15:01) [19]2 Бархатный (28.07.03 12:31)
> Не нашел в хэлпе функции LStrFromPChar.
Да и не нужно искать. Зачем ее напряную вызывать? Компилятор сам ее вызовет, когда нужно, для соотв. оператора присваивания..
Просто пишешь оператор присваивания. И все.
А если интересуют подробности - см. исходники system для
procedure _LStrFromPChar
Если эти исходники кажутся китайской грамотой - то рановато в такие подробности вникать. Можно за деревьями лес потерять.
Зы. Источник знаний о LStrFromPChar - брекпоинт на соотв. операторе + Ctrl+Alt+C.
← →
Anatoly Podgoretsky (2003-07-28 15:03) [20]Источник знаний тверд
Нам рассколоть его поможет
Киножурнал
Хочу Все Знать
← →
Бархатный (2003-07-28 18:48) [21]Мдя... постов много и по большей части чистой воды флуд. Хотя спасибо Ihor Osov"yak"у.
← →
Ihor Osov'yak (2003-07-28 19:11) [22]2 Бархатный (28.07.03 18:48)
Да ты не растраивайся, тебе по делу отвечали, даже в первых постах..
см. MalkoLinge © (28.07.03 11:30), Виктор Щербаков © (28.07.03 11:32),
Fredericco © (28.07.03 11:32)
Вот только если бы Fredericco сказал, что возможность сохранения в string последовательности, которая включает в себя внутри #0 обеспечивается только тем, что для string всегда явно хранится длинна - ответ был бы полным..
Еще. String в конце всегда имеет также #0 (вернее, после последнего символа всегда есть #0) - эта фишка сделана для того, чтобы string был совместим с PChar. И тогда приведение типа
PChar(какаято_строка_типа_string) реально никакого машиного кода не генерирует - єто очень удобно, так как в делфи основной тип все-же string (почему так - тема отдельного разговора), а для апишных вызовов нужен все же PChar. Благодаря этому решению не теряется время на конвертацию cо string в PChar для апишных вызовов. А этот #0 в конце string тебе ничем не мешает. Можешь считатьЮ что его нет - это по поводу Бархатный (28.07.03 11:43).. Кстати, после SetLen ты тот же #0 в конце string получишь :-).
← →
iXuSs (2003-07-28 22:37) [23]> Приведение типа здесь не нужно..
Нехороший дядя. Наколется человек на параметр конкретно и будет долго думать.
← →
Ihor Osov'yak (2003-07-28 22:42) [24]2 iXuSs (28.07.03 22:37)
Вот как раз с приведением здесь и можно наколоться (если приводить не pchar), если делать простое присваивание, то вероятность наколки намного ниже. Нужно уж немного уже стараться, чтобы наколоться.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.08.14;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.004 c