![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перевод Array of char в String
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]Удалено модератором