Главная страница | назад

Article #16798: Porting strings from 16 to 32-bit

 Question and Answer Database

FAQ1798D.txt   Porting strings from 16 to 32-bit
Category   :Object Pascal
Platform    :All
Product    :All 32 bit  

When I port my code from 16 to 32 bit, record types that contain
strings do not function correctly. What has happened?

Traditionally, strings that are defined with no length parameter
would default to having a length of 255 characters. With the advent
of 32 bit Delphi, strings with no defined length default to a long
string. Long strings are pointers to a reference counted AnsiString.
Long string types are not recommended for use in structures that are
intended to be written or read from a disk file. To port your code
correctly, you need to explicitly set the expected length of the
string in the record, otherwise, a long string is used in place of 
the original string in the record, leading to unexpected results.


  ShortStringRec : record
    s : string[255]; {this uses a short string - ok}

  LongStringRec : record
    s : string; {this uses a long string - not ok}

7/16/98 4:31:28 PM

Last Modified: 01-SEP-99