Строка непустая

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
eastorwest
новенький
Сообщения: 57
Зарегистрирован: 23.07.2009 20:21:46
Откуда: Н-ск

Строка непустая

Сообщение eastorwest »

Здравствуйте участники форума.
На практике возник вопрос. Надеюсь на вашу помощь.
Создаю переменную типа 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
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Код: Выделить всё

FillChar(S[1],50,#0);
Ответить