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

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

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

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

Сообщение eastorwest » 23.07.2009 23:24:17

Здравствуйте участники форума.
На практике возник вопрос. Надеюсь на вашу помощь.
Создаю переменную типа 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
eastorwest
новенький
 
Сообщения: 57
Зарегистрирован: 23.07.2009 20:21:46
Откуда: Н-ск

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

Сообщение Mr.Smart » 24.07.2009 00:03:24

Код: Выделить всё
FillChar(S[1],50,#0);
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 51

Рейтинг@Mail.ru
cron