I have searched all over for this. In Delphi/Lazarus, given a position, I want to find the character at that position in a different string. I know how to find the position of a character. I need it the other way around: the character at a given position. Thanks in advance.
Asked
Active
Viewed 2.2k times
4 Answers
13
In Delphi, a character in the string can be indexed using the array notation. Just note that first character in string has an index of one.
var
s: string;
c: char;
begin
s := 'Hello';
c := s[1]; //H
end;

Hemant
- 19,486
- 24
- 91
- 127
-
Note: Characters are 1-based. – Joel Christophel May 31 '16 at 20:03
5
A string can be accessed like an array.
MyString[12] gives you the 12th character in the string. Note : This is 1-index (because the 0th position used to hold the length of the string)
Example :
var
MyString : String;
MyChar : Char;
begin
MyString := 'This is a test';
MyChar := MyString[4]; //MyChar is 's'
end;

Lars Bargmann
- 142
- 1
- 7
2
This was last answered in 2012, so figured I'd just add an update:
For latest version of Delphi (Currently Tokyo Edition - that run over multiple platforms using FMX framework), the StringHelper class offers a cross platform character index solution. This implementation assumes a 0-based index for all supported platforms.
eg.
var
myString: String;
myChar: Char;
begin
myChar := myString.Chars[0];
end;

Danie van Eeden
- 105
- 1
- 8
0
// AIndex: 0-based
function FindCharactedOfStringFromIndex(const AString: String; const AIndex: Integer): Char;
const
{$IFDEF CONDITIONALEXPRESSIONS}
{$IF CompilerVersion >= 24}
STRING_FIRST_CHAR_INDEX = Low(AString);
{$ELSE}
STRING_FIRST_CHAR_INDEX = 1;
{$ENDIF}
{$ELSE}
STRING_FIRST_CHAR_INDEX = 1;
{$ENDIF}
var
index: Integer;
begin
index := STRING_FIRST_CHAR_INDEX + AIndex;
Result := AString[index];
end;

Jacek Krawczyk
- 2,083
- 1
- 19
- 25