Question and Answer Database FAQ1798D.txt Porting strings from 16 to 32-bit Category :Object Pascal Platform :All Product :All 32 bit Question: When I port my code from 16 to 32 bit, record types that contain strings do not function correctly. What has happened? Answer: 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. Example: ShortStringRec : record s : string[255]; {this uses a short string — ok} end; LongStringRec : record s : string; {this uses a long string — not ok} end; 7/16/98 4:31:28 PM
Last Modified: 01-SEP-99