![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
FillChar для строки [D7, XP]
Dmitry_177 © (2007-05-26 02:25:00)Как правильно выполнить FillChar для строки?
Если выполнить так:
var
s: string;
...
FillChar(s, SizeOf(s), #0);
ИМХО очистится не сама строка, а указатель на нее..
Вот так правильно ли будет?
var
s: string;
...
FillChar(PChar(s)^, Length(s), #0);
Loginov Dmitry (2007-05-26 08:59:00) [41]> Так будет правильно. Но нарушится механизм подсчета ссылок
Вот он-то как-раз сработает, как и должен. Насколько результат ожидаем - зависит от квалификации того, кто применит данный код.
P.S. А что, константы в консольной проге разве не хранятся в области кода? (Или данные в области кода разрешено модифицировать?)
palva (2007-05-26 07:57:00) [42]
> Вот так правильно ли будет?
>
> var
> s: string;
> ...
> FillChar(PChar(s)^, Length(s), #0);
Так будет правильно. Но нарушится механизм подсчета ссылок. Пример.
{$APPTYPE CONSOLE}
var
s1, s2: String;
begin
s1 := 'qwerty';
s2 := s1;
writeln(s2); // 'qwerty'
FillChar(PChar(s1)^, Length(s1), #0);
writeln(s2); // выдаст пустую строку
end.
Если вы хорошо понимаете, что произойдет, и ваш текст не будут сопровождать другие программисты, тогда делайте.
Andy BitOff (2007-05-26 04:19:00) [43]Да. К сожалению я забыл написать P.S.
Так вот.
Чтобы очистить s:=''; а чтобы заполнить StringOfChar
P.S. Я знаю, что земля не шар.
Kedge (2007-05-26 03:43:00) [44]> [6] Andy BitOff © (26.05.07 03:14)
> Чтобы очистить s:=''; а чтобы заполнить StringOfChar
Довольно "емкие" операции.
Допустим, я в строку, заранее определенной длины MAX_MY_VALUE_LEN, в цикле записываю значения:
for i := 0 to Count do
begin
// здесь надо очистить строку, IMHO, лучше использовать FillChar
SomeFunction(MyStr[1], MAX_MY_VALUE_LEN);
if Pos('bla-bla', MyStr) > 0 then ....
end;
Andy BitOff (2007-05-26 03:14:00) [45]Чтобы очистить s:=''; а чтобы заполнить StringOfChar
Германн (2007-05-26 02:59:00) [46]
> Dmitry_177 (26.05.07 02:57) [4]
>
> от всякого мусора..
>
Ну а смысл, то в чём?
Dmitry_177 (2007-05-26 02:57:00) [47]от всякого мусора..
Германн (2007-05-26 02:51:00) [48]
> Dmitry_177 (26.05.07 02:41) [2]
>
> чтоб очистить ее =)
>
От чего очистить?
Dmitry_177 (2007-05-26 02:41:00) [49]чтоб очистить ее =)
Германн (2007-05-26 02:39:00) [50]А зачем нужен FillChar для строки?