Talk:Character and string types

From Lazarus wiki
Revision as of 11:37, 2 June 2014 by Jonas (talk | contribs)
Jump to navigationJump to search

Doesn't ANSIChar contain an ANSI character instead of ASCII? I.e. it is codepage dependent but can contain byte values 0..255?

--BigChimp 15:28, 28 December 2013 (CET)

This is the information of the official FPC documentation. I will do additional research.
--Jwdietrich 15:33, 28 December 2013 (CET)
Yes, I suspect the official FPC documentation is wrong/incomplete ;)
BTW: thanks for writing this page - it's very helpful!
--BigChimp 16:53, 28 December 2013 (CET)
Thanks for your positive feedback. In fact, it is ANSI. Although the official Free Pascal documentation states that a char contains an ASCII character, is is stored as a byte to use extended ASCII or ANSI.
--Jwdietrich 16:55, 28 December 2013 (CET)


Is the sentence in Character_and_string_types#Array_of_Char, delivers: a b c d #0 since arrays are filled with null-bytes in Free Pascal correct?!

I've tested (Lazarus 1.2.2 r44758 FPC 2.6.4 i386-win32-win32/win64 and Lazarus 1.3 r45097M FPC 2.7.1 i386-win32-win32/win64 on Win7)

procedure TForm1.Button1Click(Sender: TObject);
type
  TOldString4 = array[0..4] of char;
var
  aOldString4: TOldString4;
begin
  aOldString4[0] := 'a';
  aOldString4[1] := 'b';
  aOldString4[2] := 'c';
  aOldString4[3] := 'd';
  writeln('['+aOldString4[4]+']');
  Caption:=IntToStr(ord(aOldString4[4]));
end;

I got different results, but not #0 for aOldString4[4]. So, do I have to update the facts or do I missunderstood the statement?

Thanks --Michl 23:10, 1 June 2014 (CEST)

That statement is indeed completely bogus, there is no guarantee whatsoever regarding the content of that array element. Maybe the author was confused because of dynamic arrays, whose empty positions are initially initialised with 0 (or #0, or nil, or ...).
Jonas 11:37, 2 June 2014 (CEST)