Delphi Language Guide Delphi for Microsoft Win32 Delphi for the Microsoft. Net framework


Mixing Delphi Strings and Null-Terminated Strings



Yüklə 0,84 Mb.
Pdf görüntüsü
səhifə88/294
tarix02.01.2022
ölçüsü0,84 Mb.
#41395
1   ...   84   85   86   87   88   89   90   91   ...   294
DelphiLanguageGuide

Mixing Delphi Strings and Null-Terminated Strings
You can mix long strings (AnsiString values) and null-terminated strings (PChar values) in expressions and
assignments, and you can pass PChar values to functions or procedures that take long-string parameters. The
assignment 
S := P
, where 
S
 is a string variable and 
P
 is a PChar expression, copies a null-terminated string into
a long string.
In a binary operation, if one operand is a long string and the other a PChar, the PChar operand is converted to a
long string.
You can cast a PChar value as a long string. This is useful when you want to perform a string operation on two
PChar values. For example,
S := string(P1) + string(P2);
You can also cast a long string as a null-terminated string. The following rules apply.
If 
S
 is a long-string expression, 
PChar(S)
 casts 
S
 as a null-terminated string; it returns a pointer to the first
character in 
S
. For example, if 
Str1
 and 
Str2
 are long strings, you could call the Win32 API 
MessageBox
function like this: 
MessageBox(0, PChar(Str1), PChar(Str2), MB_OK);
74


You can also use 
Pointer(S)
 to cast a long string to an untyped pointer. But if 
S
 is empty, the typecast returns
nil.
PChar(S)
 always returns a pointer to a memory block; if 
S
 is empty, a pointer to 
#0
 is returned.
When you cast a long-string variable to a pointer, the pointer remains valid until the variable is assigned a new
value or goes out of scope. If you cast any other long-string expression to a pointer, the pointer is valid only
within the statement where the typecast is performed.
When you cast a long-string expression to a pointer, the pointer should usually be considered read-only. You
can safely use the pointer to modify the long string only when all of the following conditions are satisfied.
The expression cast is a long-string variable.
The string is not empty.
The string is unique - that is, has a reference count of one. To guarantee that the string is unique, call the
SetLength, 
SetString
, or 
UniqueString
 procedure.
The string has not been modified since the typecast was made.
The characters modified are all within the string. Be careful not to use an out-of-range index on the pointer.
The same rules apply when mixing WideString values with PWideChar values.
75



Yüklə 0,84 Mb.

Dostları ilə paylaş:
1   ...   84   85   86   87   88   89   90   91   ...   294




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin