На практике возник вопрос. Надеюсь на вашу помощь.
Создаю переменную типа string. Задаю длину строки. При этом предполагаю, что каждый символ в строке чему-то конкретному равен (автоматически присваивается #0, например).
Однако после компиляции и запуска под отладчиком в Lazarus программа (см. код ниже) выводит
#13 #240 #173 #186 #13 #240 #173 #186 #13 #240 #173 #186 #13 #240 #173 #186 #13 #240 #173 #186 #13 #240 #173 #186 #13 #240 #173 #186 #13 #240 #173 #186 #13 #240 #173 #186 #13 #240 #173 #186 #13 #240 #173 #186 #13 #240 #173 #186 #13 #240
Тогда как запуск testfpc двойным кликом мыши в explorer приводит к такому результату
#0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0 #0
Нули наблюдаются в этом же консольном приложении в Delphi (7) в режиме отладки и обычного запуска.
Хотелось бы понять причину неоднозначности в состоянии строки и узнать, каким образом, кроме присвоения каждому отдельному символу значения, можно добиться состояния, в котором все символы равны #0.
- Код: Выделить всё
program testfpc;
{$mode objfpc}{$H+}
uses SysUtils;
var
s: string;
i: Integer;
begin
s:='';
SetLength(s, 50);
for i:=1 to length(s) do
Write('#'+inttostr(ord(s[i]))+' ');
Readln;
end.
FPC 2.2.2, Lazarus 0.9.26.2
Windows XP SP2