Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.14;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.013 c
14-45122
Alexander
2003-05-25 09:06
2003.08.14
Есть COM-расширение контекстного меню проводника от стороннего


14-45053
IntLex
2003-07-27 10:26
2003.08.14
Нужна информация о dll


14-45033
STAR
2003-07-25 12:25
2003.08.14
Вопрос по MSCOMM


14-45030
galleleo
2003-07-28 17:40
2003.08.14
Есть небольшой заказ!


14-45152
AnatoIy Podgoretsky
2003-07-30 20:13
2003.08.14
Сообщения