Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
14-45146
Soft
2003-07-29 11:51
2003.08.14
Загадки


14-45138
fester
2003-07-31 00:57
2003.08.14
ShellExecute


14-45025
Bartov
2002-12-08 11:58
2003.08.14
Вышел KOL и MCK (v1.58)


14-45052
OlegID
2003-07-28 08:51
2003.08.14
ActivX?


14-45055
Viktor Kushnir
2003-07-28 08:32
2003.08.14
Delphi 6 Service Packs - Где найти?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский