Sign in Join
FPDoc Onlineexperiment

UnicodeAndCodePages topic

In unit sysutils

Unicode and codepage awareness.

Declaration

pascal
UnicodeAndCodePages

Description

The many functions that deal with filenames in the sysutils routines have been changed from AnsiString to RawByteString so they do not perform implicit codepage conversions to the ANSI code page. At the same time, overloaded versions that accept a Unicode string have been created.

For routines that access actual OS functions using single-byte string APIS, the strings are converted to ensure that the OS routine receives a string with the correct encoding when using single-byte strings. This encoding is normally the DefaultFileSystemCodePage encoding.

On systems with a Unicode I/O API (2-byte strings), the native API is used, meaning that Unicode strings will be passed on as-is, but single-byte strings will be converted (implicitly) to Unicode.

The following is a minimal list of functions that have been changed and duplicated:

NameDescription
FileCreate

Create a new file and return a handle to it.

FileOpen

Open an existing file and return a file handle.

FileExists

Check whether a particular file exists in the file system.

DirectoryExists

Check whether a directory exists in the file system.

FileSetDate

Set the date of a file.

FileGetAttr

Return attributes of a file.

FileSetAttr

Set the attributes of a file.

DeleteFile

Delete a file from the file system.

RenameFile

Rename a file.

FileSearch

Search for a file in a path.

ExeSearch

Search for an executable.

FindFirst

Start a file search and return a findhandle.

FindNext

Find the next entry in a findhandle.

FindClose

Close a find handle.

FileIsReadOnly

Check whether a file is read-only.

GetCurrentDir

Return the current working directory of the application.

SetCurrentDir

Set the current directory of the application.

The following functions do not interact with the OS, but may nevertheless change the codepage of the strings involved in their operation:

NameDescription
ChangeFileExt

Change the extension of a filename.

ExtractFilePath

Extract the path from a filename.

ExtractFileDrive

Extract the drive part from a filename.

ExtractFileName

Extract the filename part from a full path filename.

ExtractFileExt

Return the extension from a filename.

ExtractFileDir

Extract the drive and directory part of a filename.

ExtractShortPathName

Returns a 8.3 path name.

ExpandFileName

Expand a relative filename to an absolute filename.

ExpandFileNameCase

Expand a filename entered as case insensitive to the full path as stored on the disk.

ExtractRelativepath

Extract a relative path from a filename, given a base directory.

ExpandUNCFileName

Expand a relative filename to an absolute UNC filename.

IncludeTrailingPathDelimiter

Add trailing directory separator to a pathname, if needed.

IncludeTrailingBackslash

Add trailing directory separator to a pathname, if needed.

ExcludeTrailingBackslash

Strip trailing directory separator from a pathname, if needed.

ExcludeTrailingPathDelimiter

Strip trailing directory separator from a pathname, if needed.

IncludeLeadingPathDelimiter

Prepend a path delimiter if there is not already one.

ExcludeLeadingPathDelimiter

Strip the leading path delimiter of a path.

IsPathDelimiter

Is the character at the given position a pathdelimiter ?

DoDirSeparators

Convert known directory separators to the current directory separator.

SetDirSeparators

Set the directory separators to the known directory separators.

GetDirs

Return a list of directory names from a path.

ConcatPaths

Concatenate an array of paths to form a single path.

GetEnvironmentVariable

Return the value of an environment variable.

An experiment, built from development snapshots. Not the official Free Pascal or Lazarus documentation.