7

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.

preahkumpii
  • 1,301
  • 4
  • 21
  • 36

4 Answers4

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
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