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

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

Перевод Array of char в String


Страницы:   1 2

Begu ©   (2005-06-15 04:15:00) 

как правильно реализовать сабж?
есть:
c: array[1..10] of char;
s: string;

FillChar(c, SizeOf(c), 0);
при присвоении s := c; длина s становится = 10, даже если в массиве одни 0.


Zeqfreed   (2005-06-15 08:25:00) [1]

Begu   (15.06.05 8:14) [32]
Alx2 имеет в виду, что преобразовать массив Char'ов можно к типу String не зависимо от начального индекса массива. О том, что методы будут одинаковыми никто не говорил.


Alx2   (2005-06-15 08:21:00) [2]

Begu   (15.06.05 8:14) [32]

Да, согласен. В этом случае разница есть.


Begu   (2005-06-15 08:14:00) [3]

а ты сделай такую простую вещь:

c: array[1..10] of char;
s: string;

FillChar(c, SizeOf(c), 0);
с[1] := 'a';
s := c;

теперь поставь точку останова на последнюю строку и посмотри чему у тебя s стала равна


Alx2   (2005-06-15 08:11:00) [4]

>Begu   (15.06.05 08:11)
Повторяю:
"и неважно с чего индекс начинается."


Alx2   (2005-06-15 08:11:00) [5]

Или сразу

Var D : array [12..21] of char;
  k : integer;
Begin
for k := Low(D) to High(D) do D[k]:=Char((k  mod 10) +byte('0'));
ShowMessage(D);
End;


Так как к типу string автоматом преобразуется.


Begu   (2005-06-15 08:11:00) [6]

и что ты хотел этим сказать, кроме того, что сказано выше?


Alx2   (2005-06-15 08:08:00) [7]

>Begu   (15.06.05 08:06)
>а если с 0 начинается, то можно так s := c;

Var D : array [12..21] of char;
  k : integer;
  s : string;
Begin
for k := Low(D) to High(D) do D[k]:=Char((k  mod 10) +byte('0'));
s := D;
ShowMessage(S);
End;


Alx2   (2005-06-15 08:06:00) [8]

>Begu   (15.06.05 08:04) [25]

Var D : array [10..21] of char;
  k : integer;
Begin
for k := Low(D) to High(D) do D[k]:=Char((k  mod 10) +byte('0'));
D[High(D)]:=#0;
ShowMessage(PChar(@D));
End;


Begu   (2005-06-15 08:06:00) [9]

>Alx2 ©   (15.06.05 08:00) [24]
эт я уже спать начинаю, я так и сказал
а если с 0 начинается, то можно так s := c;


Begu   (2005-06-15 08:04:00) [10]

>Alx2 ©   (15.06.05 08:00) [24]
а ты проверь с 1


Alx2   (2005-06-15 08:00:00) [11]

>Begu   (15.06.05 07:53) [21]

s := PChar(@c);

и неважно с чего индекс начинается.


Begu   (2005-06-15 08:00:00) [12]

>VMcL ©   (15.06.05 07:56) [22]
это ты о чем, какая матчасть?


VMcL   (2005-06-15 07:56:00) [13]

Удалено модератором


Begu   (2005-06-15 07:53:00) [14]

вот и видно, что ты только проснулся :)
ответ то уже был раньше:
array должен с 0 начинаться, а если с 1, то так:
s := PChar(@c);


-=XP=-   (2005-06-15 07:38:00) [15]

Блин, еще не проснулся, а вы тут вопросами неумными грузите.

s := PChar(@c[Low(c)]);


-=XP=-   (2005-06-15 07:28:00) [16]

потому что я думал

Это Вы еще пока только раздел "Введение" подумали. Думайте дальше, до раздела "Строковый тип данных". Там, на последних страницах, даны примеры - отталкивайтесь от них.

s := PChar(c[Low(c)]);


Begu   (2005-06-15 05:09:00) [17]

Удалено модератором


Просто Джо   (2005-06-15 05:07:00) [18]

Удалено модератором


Begu   (2005-06-15 05:05:00) [19]

Удалено модератором


Просто Джо   (2005-06-15 05:00:00) [20]

Удалено модератором


Страницы:   1 2

Наверх

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