Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

string [8] заполняется только четырьмя символами [D6, XP]


Mr tray ©   (2006-06-25 16:12:00) 

Здравствуйте. Столкнулся с непоняткой. Специально воплотил её в одной простой программе:
{$APPTYPE CONSOLE}
type
 str8=string [8];
function g:str8;
var
 i:byte;
begin
 for i:=1 to 8 do
   result[i]:='y';
 writeln(result);
end;
begin
 { TODO -oUser -cConsole Main : Insert code here }
 g;
 readln;
end.

Почему не выводится восемь "y", а только четыре?


Mr tray   (2006-06-25 16:52:00) [1]

ясно. спасибо


Palladin   (2006-06-25 16:21:00) [2]


> MBo ©   (25.06.06 16:19) [1]

ну или так :)


MBo   (2006-06-25 16:19:00) [3]

добавь в функцию вначале
setlength(result,8);


Palladin   (2006-06-25 16:19:00) [4]

{$APPTYPE CONSOLE}
type
str8=string [8];
function g:str8;
var
i:byte;
begin
result[0]:=#8;
for i:=1 to 8 do
  result[i]:='y';
writeln(result);
end;
begin
{ TODO -oUser -cConsole Main : Insert code here }
g;
readln;
end.


в подобного типа (коротких) строках, ее длинна хранится в (как ты уже догадался)  в [0], при вызове фунции result заполнен мусором, ты заполняешь только 8 символов начиная со второго байта, первый же так и остается мусором, (и не факт что именно 4 y будут, может быть все что угодно)


Наверх

Титульная страница Поиск, карта сайта Написать письмо