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

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

move


stenfit ©   (2010-11-05 15:59:00) 

нужно, используя move, скопировать содержимое строковой переменной S1 в строковую переменную S2. Чет не получается. В чем ошибаюсь?


var
   S1, S2: string;
   Ptr: Pointer;
 begin
   S1 := '456';
   GetMem(Ptr, Length(S1));
   try
     Move(Pointer(S1)^, Ptr^, Length(S1));
     SetLength(S2, Length(S1));
     Move(Ptr^, Pointer(S2)^, Length(S1));
     ShowMessage(S2);
   finally
     FreeMem(Ptr);
   end;
end;


Dennis I. Komarov   (2010-11-09 13:40:00) [1]

Может это задание не на "Move", а "Что есть string"...


Дмитрий Белькевич   (2010-11-05 19:49:00) [2]


> а почему ShowMessage возвращает только 45


таки да :)


var
 S1, S2: string;
begin
 S1 := '456';
 SetLength(S2, Length(S1));
 Move(S1[1], S2[1], Length(S1) * SizeOf(Char));
 ShowMessage(S2);


Дмитрий Белькевич   (2010-11-05 19:46:00) [3]

Меня всегда удивляли учебные задания по программированию. Ведь можно придумать (или посмотреть готовых) множество случаев, где move полезен. Нет же - нужно придумать идиотское его использование и дать в виде задания. А потом же так и пишут. Как научили.


Amoeba_   (2010-11-05 17:27:00) [4]


> Юрий Зотов ©   (05.11.10 16:16) [2]

А может это УЧЕБНОЕ задание. А в реальной жизни, понятное дело, Move тут совсем ни к чему.


Anatoly Podgoretsky   (2010-11-05 16:45:00) [5]

Length(S2)?


stenfit   (2010-11-05 16:18:00) [6]

а почему ShowMessage возвращает только 45


Юрий Зотов   (2010-11-05 16:16:00) [7]

А зачем move? S2:=S1, и все. Когда будет надо, все само скопируется.


Amoeba_   (2010-11-05 16:10:00) [8]

Вот так превращаем твой говнокод в нормальный код:
var
  S1, S2: string;
begin
  S1 := '456';
  SetLength(S2, Length(S1));
  Move(S1[1], S2[1], Length(S1));
  ShowMessage(S2);
end;


Наверх

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